From d6e5acd79d5fd1cda1e9a05ee5a3eb6672fe803c Mon Sep 17 00:00:00 2001 From: JDDev0 Date: Sun, 19 Jan 2025 18:23:17 +0100 Subject: [PATCH] Port to Fabric 1.21.2 --- build.gradle | 32 +- gradle.properties | 10 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../05cb91014ff9df84ab093379a4ba2eee76fe6829 | 954 +++--- .../30cb00db1c2a2f188c206a001f53abd8ae32c39e | 4 +- .../45bf58945b99de8e1d8fd096eb93e9c6ecbef3e0 | 2 +- .../61a2129db19d91bc9e82e9f5fc1ab563678d0663 | 22 +- .../6dc4ad12d3c8855c07be9363a20923ccfe150898 | 2 +- .../91a8cd24f530640f6c4efc077c96a20e92575fd7 | 6 +- .../92c7384ad795a5537a50be2f271330fefca3f635 | 2 +- .../a14de9a9eafa15e4f5d8531aa403ee32c2c64de8 | 2 +- .../aa30a14434758698d25134bbd84217009936019d | 2 +- .../b827f0e91e250ab35a3ab8ade0c3210bd92ef507 | 4 +- .../cda3e4c85727b044fb95c106daa39b97111ac8b6 | 2 +- .../fb2b4cb76b8f389f636d6c447615b099905f1ed1 | 2 +- .../recipes/crafting/diamond_hammer.json | 2 +- .../recipes/crafting/golden_hammer.json | 2 +- .../recipes/crafting/iron_hammer.json | 2 +- .../recipes/crafting/wooden_hammer.json | 2 +- .../painting_variant/factory.json | 6 + .../energizedpower/painting_variant/gear.json | 6 + .../alloy_furnace/advanced_alloy_ingot.json | 19 +- .../alloy_furnace/redstone_alloy_ingot.json | 19 +- .../recipe/alloy_furnace/steel_ingot.json | 15 +- .../recipe/assembling/advanced_circuit.json | 23 +- .../assembling/advanced_solar_cell.json | 23 +- .../recipe/assembling/crystal_matrix.json | 23 +- .../recipe/assembling/processing_unit.json | 19 +- .../reinforced_advanced_solar_cell.json | 23 +- .../teleporter_processing_unit.json | 23 +- ...opper_ingot_from_blasting_copper_dust.json | 4 +- .../gold_ingot_from_blasting_gold_dust.json | 4 +- ...ld_nugget_from_blasting_golden_hammer.json | 4 +- .../iron_ingot_from_blasting_iron_dust.json | 4 +- ...iron_nugget_from_blasting_iron_hammer.json | 4 +- .../silicon_from_blasting_nether_quartz.json | 4 +- .../tin_ingot_from_blasting_raw_tin.json | 4 +- .../tin_ingot_from_blasting_tin_dust.json | 4 +- .../tin_ingot_from_blasting_tin_ores.json | 4 +- .../charger/energized_copper_ingot.json | 9 +- ...from_compressing_advanced_alloy_ingot.json | 7 +- ...estone_from_compressing_stone_pebbles.json | 9 +- ...r_plate_from_compressing_copper_block.json | 6 +- ...r_plate_from_compressing_copper_ingot.json | 7 +- ...om_compressing_energized_copper_ingot.json | 7 +- ...from_compressing_energized_gold_ingot.json | 7 +- ...old_plate_from_compressing_gold_block.json | 6 +- ...old_plate_from_compressing_gold_ingot.json | 7 +- ...ron_plate_from_compressing_iron_block.json | 6 +- ...ron_plate_from_compressing_iron_ingot.json | 7 +- .../tin_plate_from_compressing_tin_block.json | 6 +- .../tin_plate_from_compressing_tin_ingot.json | 7 +- .../crafting/advanced_auto_crafter.json | 20 +- .../recipe/crafting/advanced_battery_box.json | 16 +- .../advanced_battery_box_minecart.json | 8 +- .../recipe/crafting/advanced_charger.json | 20 +- .../recipe/crafting/advanced_crusher.json | 20 +- .../recipe/crafting/advanced_fertilizer.json | 24 +- .../crafting/advanced_machine_frame.json | 16 +- .../crafting/advanced_minecart_charger.json | 24 +- .../crafting/advanced_minecart_uncharger.json | 24 +- .../crafting/advanced_powered_furnace.json | 20 +- .../recipe/crafting/advanced_pulverizer.json | 20 +- .../recipe/crafting/advanced_uncharger.json | 20 +- .../crafting/advanced_upgrade_module.json | 16 +- .../recipe/crafting/alloy_furnace.json | 12 +- .../recipe/crafting/assembling_machine.json | 24 +- .../recipe/crafting/auto_crafter.json | 20 +- .../crafting/auto_press_mold_maker.json | 16 +- .../recipe/crafting/auto_stonecutter.json | 20 +- .../recipe/crafting/basic_circuit.json | 16 +- .../recipe/crafting/basic_fertilizer.json | 24 +- .../recipe/crafting/basic_machine_frame.json | 12 +- .../recipe/crafting/basic_solar_cell.json | 16 +- .../recipe/crafting/basic_upgrade_module.json | 12 +- .../recipe/crafting/battery_1.json | 16 +- .../recipe/crafting/battery_2.json | 20 +- .../recipe/crafting/battery_3.json | 16 +- .../recipe/crafting/battery_4.json | 20 +- .../recipe/crafting/battery_5.json | 20 +- .../recipe/crafting/battery_6.json | 12 +- .../recipe/crafting/battery_7.json | 16 +- .../recipe/crafting/battery_8.json | 16 +- .../recipe/crafting/battery_box.json | 16 +- .../recipe/crafting/battery_box_minecart.json | 8 +- .../blast_furnace_upgrade_module.json | 20 +- .../recipe/crafting/block_placer.json | 20 +- .../recipe/crafting/charcoal_filter.json | 12 +- .../recipe/crafting/charger.json | 20 +- .../recipe/crafting/charging_station.json | 24 +- .../recipe/crafting/coal_engine.json | 20 +- .../recipe/crafting/compressor.json | 12 +- .../recipe/crafting/copper_cable.json | 8 +- .../crafting/copper_cable_using_wire.json | 8 +- .../recipe/crafting/copper_plate.json | 8 +- .../recipe/crafting/copper_wire.json | 8 +- .../recipe/crafting/crusher.json | 20 +- .../crafting/crystal_growth_chamber.json | 16 +- .../recipe/crafting/cutter.json | 12 +- .../recipe/crafting/diamond_hammer.json | 8 +- .../energizedpower/recipe/crafting/drain.json | 16 +- .../crafting/duration_upgrade_module_1.json | 16 +- .../crafting/duration_upgrade_module_2.json | 20 +- .../crafting/duration_upgrade_module_3.json | 20 +- .../crafting/duration_upgrade_module_4.json | 20 +- .../crafting/duration_upgrade_module_5.json | 20 +- .../crafting/duration_upgrade_module_6.json | 16 +- .../crafting/ehv_transformer_1_to_n.json | 16 +- .../crafting/ehv_transformer_3_to_3.json | 16 +- .../crafting/ehv_transformer_n_to_1.json | 16 +- .../crafting/energized_copper_cable.json | 8 +- .../energized_copper_cable_using_wire.json | 8 +- .../energized_crystal_matrix_cable.json | 8 +- .../recipe/crafting/energized_gold_cable.json | 8 +- .../energized_gold_cable_using_wire.json | 8 +- .../recipe/crafting/energized_power_book.json | 8 +- .../recipe/crafting/energizer.json | 24 +- .../recipe/crafting/energy_analyzer.json | 20 +- .../energy_capacity_upgrade_module_1.json | 16 +- .../energy_capacity_upgrade_module_2.json | 20 +- .../energy_capacity_upgrade_module_3.json | 20 +- .../energy_capacity_upgrade_module_4.json | 20 +- .../energy_capacity_upgrade_module_5.json | 20 +- .../energy_efficiency_upgrade_module_1.json | 16 +- .../energy_efficiency_upgrade_module_2.json | 20 +- .../energy_efficiency_upgrade_module_3.json | 20 +- .../energy_efficiency_upgrade_module_4.json | 20 +- .../energy_efficiency_upgrade_module_5.json | 20 +- .../extraction_depth_upgrade_module_1.json | 16 +- .../extraction_depth_upgrade_module_2.json | 20 +- .../extraction_depth_upgrade_module_3.json | 20 +- .../extraction_depth_upgrade_module_4.json | 20 +- .../extraction_depth_upgrade_module_5.json | 20 +- .../recipe/crafting/filtration_plant.json | 24 +- .../recipe/crafting/fluid_analyzer.json | 20 +- .../recipe/crafting/fluid_drainer.json | 20 +- .../recipe/crafting/fluid_filler.json | 20 +- .../recipe/crafting/fluid_pump.json | 24 +- .../recipe/crafting/fluid_tank_large.json | 8 +- .../recipe/crafting/fluid_tank_medium.json | 8 +- .../recipe/crafting/fluid_tank_small.json | 8 +- .../recipe/crafting/fluid_transposer.json | 28 +- .../recipe/crafting/gold_cable.json | 8 +- .../crafting/gold_cable_using_wire.json | 8 +- .../recipe/crafting/gold_plate.json | 8 +- .../recipe/crafting/gold_wire.json | 8 +- .../recipe/crafting/golden_fluid_pipe.json | 8 +- .../recipe/crafting/golden_hammer.json | 8 +- .../recipe/crafting/good_fertilizer.json | 24 +- .../crafting/hardened_machine_frame.json | 20 +- .../recipe/crafting/heat_generator.json | 16 +- .../crafting/hv_transformer_1_to_n.json | 16 +- .../crafting/hv_transformer_3_to_3.json | 16 +- .../crafting/hv_transformer_n_to_1.json | 16 +- .../recipe/crafting/induction_smelter.json | 16 +- .../recipe/crafting/inventory_charger.json | 20 +- .../crafting/inventory_coal_engine.json | 20 +- .../recipe/crafting/inventory_teleporter.json | 20 +- .../recipe/crafting/iron_fluid_pipe.json | 8 +- .../recipe/crafting/iron_hammer.json | 8 +- .../recipe/crafting/iron_plate.json | 8 +- .../item_conveyor_belt_from_dried_kelp.json | 12 +- .../item_conveyor_belt_from_leather.json | 12 +- .../crafting/item_conveyor_belt_loader.json | 12 +- .../crafting/item_conveyor_belt_merger.json | 16 +- .../crafting/item_conveyor_belt_sorter.json | 16 +- .../crafting/item_conveyor_belt_splitter.json | 16 +- .../crafting/item_conveyor_belt_switch.json | 20 +- .../recipe/crafting/lightning_generator.json | 24 +- .../crafting/lv_transformer_1_to_n.json | 20 +- .../crafting/lv_transformer_3_to_3.json | 20 +- .../crafting/lv_transformer_n_to_1.json | 20 +- .../recipe/crafting/metal_press.json | 16 +- .../recipe/crafting/minecart_charger.json | 24 +- .../recipe/crafting/minecart_uncharger.json | 24 +- .../crafting/moon_light_upgrade_module_1.json | 16 +- .../crafting/moon_light_upgrade_module_2.json | 20 +- .../crafting/moon_light_upgrade_module_3.json | 20 +- .../crafting/mv_transformer_1_to_n.json | 20 +- .../crafting/mv_transformer_3_to_3.json | 20 +- .../crafting/mv_transformer_n_to_1.json | 20 +- .../recipe/crafting/plant_growth_chamber.json | 24 +- .../recipe/crafting/powered_furnace.json | 20 +- .../recipe/crafting/powered_lamp.json | 12 +- .../recipe/crafting/press_mold_maker.json | 12 +- .../recipe/crafting/pulverizer.json | 12 +- .../crafting/range_upgrade_module_1.json | 12 +- .../crafting/range_upgrade_module_2.json | 16 +- .../crafting/range_upgrade_module_3.json | 16 +- .../recipe/crafting/raw_tin.json | 4 +- .../recipe/crafting/raw_tin_block.json | 4 +- .../reinforced_advanced_machine_frame.json | 12 +- .../reinforced_advanced_upgrade_module.json | 16 +- .../recipe/crafting/saw_blade.json | 8 +- .../recipe/crafting/sawdust_block.json | 4 +- .../crafting/sawdust_from_sawdust_block.json | 4 +- .../recipe/crafting/sawmill.json | 20 +- .../recipe/crafting/silicon_block.json | 4 +- .../crafting/silicon_from_silicon_block.json | 4 +- .../crafting/smoker_upgrade_module.json | 20 +- .../recipe/crafting/solar_panel_1.json | 20 +- .../recipe/crafting/solar_panel_2.json | 20 +- .../recipe/crafting/solar_panel_3.json | 20 +- .../recipe/crafting/solar_panel_4.json | 20 +- .../recipe/crafting/solar_panel_5.json | 20 +- .../recipe/crafting/solar_panel_6.json | 20 +- .../crafting/speed_upgrade_module_1.json | 16 +- .../crafting/speed_upgrade_module_2.json | 20 +- .../crafting/speed_upgrade_module_3.json | 20 +- .../crafting/speed_upgrade_module_4.json | 20 +- .../crafting/speed_upgrade_module_5.json | 20 +- .../recipe/crafting/stone_hammer.json | 8 +- .../recipe/crafting/stone_solidifier.json | 24 +- .../recipe/crafting/teleporter.json | 24 +- .../recipe/crafting/teleporter_matrix.json | 12 +- .../recipe/crafting/thermal_generator.json | 24 +- .../recipe/crafting/time_controller.json | 24 +- .../recipe/crafting/tin_block.json | 4 +- .../recipe/crafting/tin_cable.json | 8 +- .../recipe/crafting/tin_cable_using_wire.json | 8 +- .../crafting/tin_ingot_from_nuggets.json | 4 +- .../crafting/tin_ingot_from_tin_block.json | 4 +- .../recipe/crafting/tin_nugget.json | 4 +- .../recipe/crafting/tin_plate.json | 8 +- .../recipe/crafting/tin_wire.json | 8 +- .../recipe/crafting/uncharger.json | 20 +- .../recipe/crafting/weather_controller.json | 24 +- .../recipe/crafting/wooden_hammer.json | 8 +- .../recipe/crafting/wrench.json | 8 +- ...esite_from_crushing_polished_andesite.json | 9 +- .../basalt_from_crushing_basalt_variants.json | 13 +- ...one_from_crushing_blackstone_variants.json | 25 +- ...led_deepslate_from_crushing_deepslate.json | 9 +- ...late_from_crushing_deepslate_variants.json | 29 +- .../cobblestone_from_crushing_stone.json | 9 +- ...blestone_from_crushing_stone_variants.json | 21 +- ...iorite_from_crushing_polished_diorite.json | 9 +- ...ranite_from_crushing_polished_granite.json | 9 +- .../gravel_from_crushing_cobblestone.json | 9 +- ...tone_from_crushing_mossy_stone_bricks.json | 9 +- .../red_sand_from_crushing_red_sandstone.json | 9 +- ..._from_crushing_red_sandstone_variants.json | 17 +- .../crusher/sand_from_crushing_gravel.json | 9 +- .../crusher/sand_from_crushing_sandstone.json | 9 +- ...sand_from_crushing_sandstone_variants.json | 17 +- .../tuff_from_crushing_tuff_variants.json | 21 +- .../crystal_growing/amethyst_shard.json | 13 +- .../crystal_growing/budding_amethyst.json | 15 +- .../energizer/energized_copper_ingot.json | 9 +- .../energizer/energized_crystal_matrix.json | 9 +- .../energizer/energized_gold_ingot.json | 9 +- .../copper_ore_filtration.json | 22 +- .../filtration_plant/gold_ore_filtration.json | 22 +- .../filtration_plant/iron_ore_filtration.json | 22 +- .../filtration_plant/tin_ore_filtration.json | 22 +- .../fluid_transposer/black_concrete.json | 9 +- .../fluid_transposer/blue_concrete.json | 9 +- .../fluid_transposer/brown_concrete.json | 9 +- .../fluid_transposer/cyan_concrete.json | 9 +- .../fluid_transposer/gray_concrete.json | 9 +- .../fluid_transposer/green_concrete.json | 9 +- .../fluid_transposer/light_blue_concrete.json | 9 +- .../fluid_transposer/light_gray_concrete.json | 9 +- .../fluid_transposer/lime_concrete.json | 9 +- .../fluid_transposer/magenta_concrete.json | 9 +- .../recipe/fluid_transposer/mud.json | 9 +- .../fluid_transposer/orange_concrete.json | 9 +- .../fluid_transposer/pink_concrete.json | 9 +- .../fluid_transposer/purple_concrete.json | 9 +- .../recipe/fluid_transposer/red_concrete.json | 9 +- .../recipe/fluid_transposer/sponge.json | 9 +- .../recipe/fluid_transposer/wet_sponge.json | 9 +- .../fluid_transposer/white_concrete.json | 9 +- .../fluid_transposer/yellow_concrete.json | 9 +- .../growing/alliums_from_growing_allium.json | 15 +- ...azure_bluets_from_growing_azure_bluet.json | 15 +- .../growing/bamboo_from_growing_bamboo.json | 15 +- ...beetroots_from_growing_beetroot_seeds.json | 24 +- ...blue_orchids_from_growing_blue_orchid.json | 15 +- ...mushrooms_from_growing_brown_mushroom.json | 15 +- .../growing/carrots_from_growing_carrot.json | 15 +- .../cornflowers_from_growing_cornflower.json | 15 +- .../dandelions_from_growing_dandelion.json | 15 +- .../fertilizer/advanced_fertilizer.json | 4 +- .../growing/fertilizer/basic_fertilizer.json | 4 +- .../recipe/growing/fertilizer/bone_meal.json | 4 +- .../growing/fertilizer/good_fertilizer.json | 4 +- ...low_berries_from_growing_glow_berries.json | 15 +- .../growing/lilacs_from_growing_lilac.json | 15 +- ...alley_from_growing_lily_of_the_valley.json | 15 +- ...melon_slices_from_growing_melon_seeds.json | 15 +- ...ange_tulips_from_growing_orange_tulip.json | 15 +- ...xeye_daisies_from_growing_oxeye_daisy.json | 15 +- .../growing/peonies_from_growing_peony.json | 15 +- .../pink_petals_from_growing_pink_petals.json | 15 +- .../pink_tulips_from_growing_pink_tulip.json | 15 +- ...tcher_plants_from_growing_pitcher_pod.json | 24 +- .../growing/poppies_from_growing_poppy.json | 15 +- .../growing/potatoes_from_growing_potato.json | 24 +- .../pumpkin_from_growing_pumpkin_seeds.json | 15 +- ...d_mushrooms_from_growing_red_mushroom.json | 15 +- .../red_tulips_from_growing_red_tulip.json | 15 +- .../rose_bushes_from_growing_rose_bush.json | 15 +- .../sugar_canes_from_growing_sugar_cane.json | 15 +- .../sunflowers_from_growing_sunflower.json | 15 +- ...et_berries_from_growing_sweet_berries.json | 15 +- ...lowers_from_growing_torchflower_seeds.json | 24 +- .../wheat_from_growing_wheat_seeds.json | 24 +- ...white_tulips_from_growing_white_tulip.json | 15 +- .../energy_production_from_flowing_lava.json | 2 +- .../energy_production_from_still_lava.json | 2 +- .../recipe/metal_press/copper_wire.json | 13 +- .../metal_press/energized_copper_wire.json | 13 +- .../metal_press/energized_gold_wire.json | 13 +- .../recipe/metal_press/gold_wire.json | 13 +- .../recipe/metal_press/iron_gear.json | 14 +- .../recipe/metal_press/iron_rod.json | 13 +- .../recipe/metal_press/tin_wire.json | 13 +- .../press_mold_maker/raw_gear_press_mold.json | 5 +- .../press_mold_maker/raw_rod_press_mold.json | 5 +- .../press_mold_maker/raw_wire_press_mold.json | 5 +- ...harcoal_dust_from_pulverizer_charcoal.json | 15 +- .../coal_from_pulverizer_coal_ores.json | 15 +- ...er_dust_from_pulverizer_copper_ingots.json | 15 +- ...pper_dust_from_pulverizer_copper_ores.json | 26 +- ...opper_dust_from_pulverizer_raw_copper.json | 15 +- ...ust_from_pulverizer_raw_copper_blocks.json | 15 +- .../diamond_from_pulverizer_diamond_ores.json | 15 +- .../emerald_from_pulverizer_emerald_ores.json | 15 +- ...gold_dust_from_pulverizer_gold_ingots.json | 15 +- .../gold_dust_from_pulverizer_gold_ores.json | 15 +- .../gold_dust_from_pulverizer_raw_gold.json | 15 +- ..._dust_from_pulverizer_raw_gold_blocks.json | 15 +- ...iron_dust_from_pulverizer_iron_ingots.json | 15 +- .../iron_dust_from_pulverizer_iron_ores.json | 15 +- .../iron_dust_from_pulverizer_raw_iron.json | 15 +- ..._dust_from_pulverizer_raw_iron_blocks.json | 15 +- ...pis_lazuli_from_pulverizer_lapis_ores.json | 15 +- ..._scrap_from_pulverizer_ancient_debris.json | 15 +- ...tz_from_pulverizer_nether_quartz_ores.json | 15 +- ...edstone_from_pulverizer_redstone_ores.json | 15 +- .../tin_dust_from_pulverizer_raw_tin.json | 15 +- ...n_dust_from_pulverizer_raw_tin_blocks.json | 15 +- .../tin_dust_from_pulverizer_tin_ingots.json | 15 +- .../tin_dust_from_pulverizer_tin_ores.json | 15 +- ...acacia_planks_from_sawing_acacia_boat.json | 8 +- ..._planks_from_sawing_acacia_chest_boat.json | 8 +- ...acacia_planks_from_sawing_acacia_door.json | 9 +- ...cacia_planks_from_sawing_acacia_fence.json | 9 +- ..._planks_from_sawing_acacia_fence_gate.json | 8 +- ...acacia_planks_from_sawing_acacia_logs.json | 8 +- ...nks_from_sawing_acacia_pressure_plate.json | 9 +- ...acacia_planks_from_sawing_acacia_sign.json | 8 +- ...ia_planks_from_sawing_acacia_trapdoor.json | 8 +- ...mboo_planks_from_sawing_bamboo_blocks.json | 8 +- ..._planks_from_sawing_bamboo_chest_raft.json | 8 +- ...bamboo_planks_from_sawing_bamboo_door.json | 9 +- ...amboo_planks_from_sawing_bamboo_fence.json | 9 +- ..._planks_from_sawing_bamboo_fence_gate.json | 8 +- ...nks_from_sawing_bamboo_pressure_plate.json | 9 +- ...bamboo_planks_from_sawing_bamboo_raft.json | 8 +- ...bamboo_planks_from_sawing_bamboo_sign.json | 8 +- ...oo_planks_from_sawing_bamboo_trapdoor.json | 8 +- .../birch_planks_from_sawing_birch_boat.json | 8 +- ...h_planks_from_sawing_birch_chest_boat.json | 8 +- .../birch_planks_from_sawing_birch_door.json | 9 +- .../birch_planks_from_sawing_birch_fence.json | 9 +- ...h_planks_from_sawing_birch_fence_gate.json | 8 +- .../birch_planks_from_sawing_birch_logs.json | 8 +- ...anks_from_sawing_birch_pressure_plate.json | 9 +- .../birch_planks_from_sawing_birch_sign.json | 8 +- ...rch_planks_from_sawing_birch_trapdoor.json | 8 +- ...cherry_planks_from_sawing_cherry_boat.json | 8 +- ..._planks_from_sawing_cherry_chest_boat.json | 8 +- ...cherry_planks_from_sawing_cherry_door.json | 9 +- ...herry_planks_from_sawing_cherry_fence.json | 9 +- ..._planks_from_sawing_cherry_fence_gate.json | 8 +- ...cherry_planks_from_sawing_cherry_logs.json | 8 +- ...nks_from_sawing_cherry_pressure_plate.json | 9 +- ...cherry_planks_from_sawing_cherry_sign.json | 8 +- ...ry_planks_from_sawing_cherry_trapdoor.json | 8 +- ...imson_planks_from_sawing_crimson_door.json | 9 +- ...mson_planks_from_sawing_crimson_fence.json | 9 +- ...planks_from_sawing_crimson_fence_gate.json | 8 +- ...ks_from_sawing_crimson_pressure_plate.json | 9 +- ...imson_planks_from_sawing_crimson_sign.json | 8 +- ...mson_planks_from_sawing_crimson_stems.json | 8 +- ...n_planks_from_sawing_crimson_trapdoor.json | 8 +- ..._oak_planks_from_sawing_dark_oak_boat.json | 8 +- ...lanks_from_sawing_dark_oak_chest_boat.json | 8 +- ..._oak_planks_from_sawing_dark_oak_door.json | 9 +- ...oak_planks_from_sawing_dark_oak_fence.json | 9 +- ...lanks_from_sawing_dark_oak_fence_gate.json | 8 +- ..._oak_planks_from_sawing_dark_oak_logs.json | 8 +- ...s_from_sawing_dark_oak_pressure_plate.json | 9 +- ..._oak_planks_from_sawing_dark_oak_sign.json | 8 +- ..._planks_from_sawing_dark_oak_trapdoor.json | 8 +- ...jungle_planks_from_sawing_jungle_boat.json | 8 +- ..._planks_from_sawing_jungle_chest_boat.json | 8 +- ...jungle_planks_from_sawing_jungle_door.json | 9 +- ...ungle_planks_from_sawing_jungle_fence.json | 9 +- ..._planks_from_sawing_jungle_fence_gate.json | 8 +- ...jungle_planks_from_sawing_jungle_logs.json | 8 +- ...nks_from_sawing_jungle_pressure_plate.json | 9 +- ...jungle_planks_from_sawing_jungle_sign.json | 8 +- ...le_planks_from_sawing_jungle_trapdoor.json | 8 +- ...rove_planks_from_sawing_mangrove_boat.json | 8 +- ...lanks_from_sawing_mangrove_chest_boat.json | 8 +- ...rove_planks_from_sawing_mangrove_door.json | 9 +- ...ove_planks_from_sawing_mangrove_fence.json | 9 +- ...lanks_from_sawing_mangrove_fence_gate.json | 8 +- ...rove_planks_from_sawing_mangrove_logs.json | 8 +- ...s_from_sawing_mangrove_pressure_plate.json | 9 +- ...rove_planks_from_sawing_mangrove_sign.json | 8 +- ..._planks_from_sawing_mangrove_trapdoor.json | 8 +- .../oak_planks_from_sawing_barrel.json | 8 +- .../oak_planks_from_sawing_bookshelf.json | 12 +- ..._planks_from_sawing_cartography_table.json | 12 +- .../sawmill/oak_planks_from_sawing_chest.json | 8 +- ...planks_from_sawing_chiseled_bookshelf.json | 8 +- .../oak_planks_from_sawing_composter.json | 8 +- ...oak_planks_from_sawing_crafting_table.json | 8 +- ...ak_planks_from_sawing_fletching_table.json | 12 +- .../oak_planks_from_sawing_jukebox.json | 13 +- .../oak_planks_from_sawing_lectern.json | 12 +- .../sawmill/oak_planks_from_sawing_loom.json | 12 +- .../oak_planks_from_sawing_note_block.json | 13 +- .../oak_planks_from_sawing_oak_boat.json | 8 +- ...oak_planks_from_sawing_oak_chest_boat.json | 8 +- .../oak_planks_from_sawing_oak_door.json | 9 +- .../oak_planks_from_sawing_oak_fence.json | 9 +- ...oak_planks_from_sawing_oak_fence_gate.json | 8 +- .../oak_planks_from_sawing_oak_logs.json | 8 +- ...planks_from_sawing_oak_pressure_plate.json | 9 +- .../oak_planks_from_sawing_oak_sign.json | 8 +- .../oak_planks_from_sawing_oak_trapdoor.json | 8 +- .../oak_planks_from_sawing_wooden_axe.json | 8 +- .../oak_planks_from_sawing_wooden_hammer.json | 8 +- .../oak_planks_from_sawing_wooden_hoe.json | 8 +- ...oak_planks_from_sawing_wooden_pickaxe.json | 8 +- .../oak_planks_from_sawing_wooden_shovel.json | 9 +- .../oak_planks_from_sawing_wooden_sword.json | 8 +- .../sawmill/sawdust_from_sawing_sticks.json | 9 +- ...spruce_planks_from_sawing_spruce_boat.json | 8 +- ..._planks_from_sawing_spruce_chest_boat.json | 8 +- ...spruce_planks_from_sawing_spruce_door.json | 9 +- ...pruce_planks_from_sawing_spruce_fence.json | 9 +- ..._planks_from_sawing_spruce_fence_gate.json | 8 +- ...spruce_planks_from_sawing_spruce_logs.json | 8 +- ...nks_from_sawing_spruce_pressure_plate.json | 9 +- ...spruce_planks_from_sawing_spruce_sign.json | 8 +- ...ce_planks_from_sawing_spruce_trapdoor.json | 8 +- .../sticks_from_sawing_bamboo_mosaic.json | 8 +- ...ticks_from_sawing_bamboo_mosaic_slabs.json | 9 + ...icks_from_sawing_bamboo_mosaic_stairs.json | 9 + .../sawmill/sticks_from_sawing_bow.json | 12 +- .../sawmill/sticks_from_sawing_bowl.json | 9 +- .../sawmill/sticks_from_sawing_buttons.json | 8 +- .../sticks_from_sawing_fishing_rod.json | 12 +- .../sawmill/sticks_from_sawing_ladder.json | 8 +- .../sawmill/sticks_from_sawing_planks.json | 8 +- .../sawmill/sticks_from_sawing_slabs.json | 14 +- .../sawmill/sticks_from_sawing_stairs.json | 13 +- ...warped_planks_from_sawing_warped_door.json | 9 +- ...arped_planks_from_sawing_warped_fence.json | 9 +- ..._planks_from_sawing_warped_fence_gate.json | 8 +- ...nks_from_sawing_warped_pressure_plate.json | 9 +- ...warped_planks_from_sawing_warped_sign.json | 8 +- ...arped_planks_from_sawing_warped_stems.json | 8 +- ...ed_planks_from_sawing_warped_trapdoor.json | 8 +- .../charcoal_from_smelting_sawdust_block.json | 4 +- ...opper_ingot_from_smelting_copper_dust.json | 4 +- .../recipe/smelting/gear_press_mold.json | 4 +- .../gold_ingot_from_smelting_gold_dust.json | 4 +- ...ld_nugget_from_smelting_golden_hammer.json | 4 +- .../iron_ingot_from_smelting_iron_dust.json | 4 +- ...iron_nugget_from_smelting_iron_hammer.json | 4 +- .../recipe/smelting/rod_press_mold.json | 4 +- .../silicon_from_smelting_nether_quartz.json | 4 +- .../tin_ingot_from_smelting_raw_tin.json | 4 +- .../tin_ingot_from_smelting_tin_dust.json | 4 +- .../tin_ingot_from_smelting_tin_ores.json | 4 +- .../recipe/smelting/wire_press_mold.json | 4 +- .../recipe/smithing/netherite_hammer.json | 12 +- .../recipe/stone_solidifier/andesite.json | 5 +- .../recipe/stone_solidifier/blackstone.json | 5 +- .../stone_solidifier/cobbled_deepslate.json | 5 +- .../recipe/stone_solidifier/cobblestone.json | 5 +- .../recipe/stone_solidifier/deepslate.json | 5 +- .../recipe/stone_solidifier/diorite.json | 5 +- .../recipe/stone_solidifier/granite.json | 5 +- .../recipe/stone_solidifier/obsidian.json | 5 +- .../recipe/stone_solidifier/stone.json | 5 +- .../energy_production_from_lava.json | 2 +- .../me/jddev0/ep/EnergizedPowerModClient.java | 4 +- .../ep/block/AdvancedAutoCrafterBlock.java | 5 +- .../jddev0/ep/block/AdvancedChargerBlock.java | 5 +- .../jddev0/ep/block/AdvancedCrusherBlock.java | 5 +- .../block/AdvancedMinecartChargerBlock.java | 4 +- .../block/AdvancedMinecartUnchargerBlock.java | 4 +- .../ep/block/AdvancedPoweredFurnaceBlock.java | 9 +- .../ep/block/AdvancedPulverizerBlock.java | 5 +- .../ep/block/AdvancedUnchargerBlock.java | 5 +- .../me/jddev0/ep/block/AlloyFurnaceBlock.java | 4 +- .../ep/block/AssemblingMachineBlock.java | 9 +- .../me/jddev0/ep/block/AutoCrafterBlock.java | 5 +- .../ep/block/AutoPressMoldMakerBlock.java | 5 +- .../jddev0/ep/block/AutoStonecutterBlock.java | 5 +- .../me/jddev0/ep/block/BlockPlacerBlock.java | 9 +- .../java/me/jddev0/ep/block/CableBlock.java | 26 +- .../java/me/jddev0/ep/block/ChargerBlock.java | 5 +- .../me/jddev0/ep/block/CoalEngineBlock.java | 9 +- .../me/jddev0/ep/block/CompressorBlock.java | 5 +- .../ep/block/CreativeFluidTankBlock.java | 4 +- .../java/me/jddev0/ep/block/CrusherBlock.java | 5 +- .../ep/block/CrystalGrowthChamberBlock.java | 5 +- .../java/me/jddev0/ep/block/EPBlocks.java | 465 +-- .../me/jddev0/ep/block/EnergizerBlock.java | 9 +- .../jddev0/ep/block/FiltrationPlantBlock.java | 5 +- .../me/jddev0/ep/block/FluidDrainerBlock.java | 5 +- .../me/jddev0/ep/block/FluidFillerBlock.java | 5 +- .../me/jddev0/ep/block/FluidPipeBlock.java | 63 +- .../me/jddev0/ep/block/FluidPumpBlock.java | 5 +- .../me/jddev0/ep/block/FluidTankBlock.java | 12 +- .../jddev0/ep/block/FluidTransposerBlock.java | 9 +- .../ep/block/InductionSmelterBlock.java | 9 +- .../ep/block/ItemConveyorBeltLoaderBlock.java | 9 +- .../ep/block/ItemConveyorBeltMergerBlock.java | 4 +- .../ep/block/ItemConveyorBeltSorterBlock.java | 21 +- .../block/ItemConveyorBeltSplitterBlock.java | 4 +- .../ep/block/ItemConveyorBeltSwitchBlock.java | 9 +- .../ep/block/LightningGeneratorBlock.java | 9 +- .../me/jddev0/ep/block/MetalPressBlock.java | 5 +- .../jddev0/ep/block/MinecartChargerBlock.java | 4 +- .../ep/block/MinecartUnchargerBlock.java | 4 +- .../ep/block/PlantGrowthChamberBlock.java | 9 +- .../jddev0/ep/block/PoweredFurnaceBlock.java | 9 +- .../me/jddev0/ep/block/PulverizerBlock.java | 5 +- .../java/me/jddev0/ep/block/SawmillBlock.java | 5 +- .../me/jddev0/ep/block/SolarPanelBlock.java | 8 +- .../jddev0/ep/block/StoneSolidifierBlock.java | 9 +- .../me/jddev0/ep/block/TeleporterBlock.java | 5 +- .../ep/block/ThermalGeneratorBlock.java | 9 +- .../me/jddev0/ep/block/TransformerBlock.java | 4 +- .../me/jddev0/ep/block/UnchargerBlock.java | 5 +- .../AdvancedAutoCrafterBlockEntity.java | 65 +- .../entity/AdvancedChargerBlockEntity.java | 52 +- .../entity/AdvancedCrusherBlockEntity.java | 13 +- .../AdvancedPoweredFurnaceBlockEntity.java | 58 +- .../entity/AdvancedPulverizerBlockEntity.java | 5 +- .../block/entity/AlloyFurnaceBlockEntity.java | 64 +- .../entity/AssemblingMachineBlockEntity.java | 18 +- .../block/entity/AutoCrafterBlockEntity.java | 63 +- .../entity/AutoPressMoldMakerBlockEntity.java | 8 +- .../entity/AutoStonecutterBlockEntity.java | 12 +- .../ep/block/entity/ChargerBlockEntity.java | 55 +- .../block/entity/CoalEngineBlockEntity.java | 16 +- .../block/entity/CompressorBlockEntity.java | 6 +- .../CrystalGrowthChamberBlockEntity.java | 11 +- .../ep/block/entity/EPBlockEntities.java | 5 +- .../ep/block/entity/EnergizerBlockEntity.java | 57 +- .../entity/FluidTransposerBlockEntity.java | 19 +- .../entity/HeatGeneratorBlockEntity.java | 7 +- .../entity/InductionSmelterBlockEntity.java | 12 +- .../entity/ItemConveyorBeltBlockEntity.java | 2 +- .../block/entity/MetalPressBlockEntity.java | 14 +- .../entity/PlantGrowthChamberBlockEntity.java | 50 +- .../entity/PoweredFurnaceBlockEntity.java | 58 +- .../entity/PressMoldMakerBlockEntity.java | 26 +- .../ep/block/entity/SawmillBlockEntity.java | 6 +- .../entity/StoneSolidifierBlockEntity.java | 6 +- .../block/entity/TeleporterBlockEntity.java | 2 +- .../entity/ThermalGeneratorBlockEntity.java | 15 +- ...lectableRecipeFluidMachineBlockEntity.java | 60 +- .../SelectableRecipeMachineBlockEntity.java | 60 +- .../SimpleRecipeFluidMachineBlockEntity.java | 38 +- .../base/SimpleRecipeMachineBlockEntity.java | 47 +- .../FluidTankBlockEntityRenderer.java | 1 - .../ItemConveyorBeltBlockEntityRenderer.java | 2 +- .../java/me/jddev0/ep/codec/CodecFix.java | 12 +- .../ep/component/EPDataComponentTypes.java | 6 +- .../java/me/jddev0/ep/config/ModConfigs.java | 6 - .../jddev0/ep/datagen/ModRecipeProvider.java | 3019 +--------------- .../ep/datagen/ModRegistriesProvider.java | 12 +- .../advancement/ModAdvancedAdvancements.java | 16 +- .../advancement/ModBasicsAdvancements.java | 21 +- .../ep/datagen/loot/ModBlockLootTables.java | 2 +- .../me/jddev0/ep/datagen/model/ModModels.java | 1 - .../ep/datagen/recipe/ModRecipeGenerator.java | 3035 +++++++++++++++++ .../energy/EnergizedPowerEnergyStorage.java | 1 - .../ep/entity/AbstractMinecartBatteryBox.java | 5 - .../me/jddev0/ep/entity/EPEntityTypes.java | 18 +- .../ep/event/ServerStartingHandler.java | 2 +- .../me/jddev0/ep/fluid/DirtyWaterFluid.java | 4 +- .../jddev0/ep/fluid/DirtyWaterFluidBlock.java | 7 +- .../java/me/jddev0/ep/fluid/EPFluids.java | 17 +- .../emi/AdvancedPulverizerEMIRecipe.java | 2 +- .../emi/AlloyFurnaceEMIRecipe.java | 2 +- .../emi/AssemblingMachineEMIRecipe.java | 2 +- .../ep/integration/emi/ChargerEMIRecipe.java | 2 +- .../integration/emi/CompressorEMIRecipe.java | 4 +- .../ep/integration/emi/CrusherEMIRecipe.java | 2 +- .../emi/CrystalGrowthChamberEMIRecipe.java | 4 +- .../emi/EnergizedPowerEMIPlugin.java | 11 +- .../integration/emi/EnergizerEMIRecipe.java | 2 +- .../emi/FiltrationPlantEMIRecipe.java | 2 +- .../emi/FluidTransposerEMIRecipe.java | 2 +- .../integration/emi/MetalPressEMIRecipe.java | 7 +- .../emi/PlantGrowthChamberEMIRecipe.java | 4 +- ...PlantGrowthChamberFertilizerEMIRecipe.java | 2 +- .../emi/PressMoldMakerEMIRecipe.java | 2 +- .../integration/emi/PulverizerEMIRecipe.java | 2 +- .../ep/integration/emi/SawmillEMIRecipe.java | 2 +- .../emi/StoneSolidifierEMIRecipe.java | 2 +- .../AdvancedAutoCrafterTransferHandler.java | 32 +- .../rei/AdvancedPulverizerCategory.java | 4 +- .../rei/AdvancedPulverizerDisplay.java | 43 +- .../integration/rei/AlloyFurnaceCategory.java | 5 +- .../integration/rei/AlloyFurnaceDisplay.java | 53 +- .../rei/AssemblingMachineCategory.java | 4 +- .../rei/AssemblingMachineDisplay.java | 53 +- .../rei/AutoCrafterTransferHandler.java | 32 +- .../ep/integration/rei/ChargerCategory.java | 4 +- .../ep/integration/rei/ChargerDisplay.java | 43 +- .../integration/rei/CompressorCategory.java | 4 +- .../ep/integration/rei/CompressorDisplay.java | 56 +- .../ep/integration/rei/CrusherCategory.java | 4 +- .../ep/integration/rei/CrusherDisplay.java | 43 +- .../rei/CrystalGrowthChamberCategory.java | 4 +- .../rei/CrystalGrowthChamberDisplay.java | 56 +- .../ep/integration/rei/DispenserCategory.java | 5 +- .../ep/integration/rei/DispenserDisplay.java | 19 +- .../rei/EnergizedPowerREIClientPlugin.java | 228 ++ .../rei/EnergizedPowerREIPlugin.java | 273 +- .../ep/integration/rei/EnergizerCategory.java | 4 +- .../ep/integration/rei/EnergizerDisplay.java | 43 +- .../rei/FiltrationPlantCategory.java | 5 +- .../rei/FiltrationPlantDisplay.java | 43 +- .../rei/FluidTransposerCategory.java | 4 +- .../rei/FluidTransposerDisplay.java | 43 +- .../ep/integration/rei/InWorldCategory.java | 5 +- .../ep/integration/rei/InWorldDisplay.java | 19 +- .../integration/rei/MetalPressCategory.java | 4 +- .../ep/integration/rei/MetalPressDisplay.java | 56 +- .../rei/PlantGrowthChamberCategory.java | 4 +- .../rei/PlantGrowthChamberDisplay.java | 43 +- .../PlantGrowthChamberFertilizerCategory.java | 4 +- .../PlantGrowthChamberFertilizerDisplay.java | 43 +- .../rei/PressMoldMakerCategory.java | 4 +- .../rei/PressMoldMakerDisplay.java | 43 +- .../integration/rei/PulverizerCategory.java | 4 +- .../ep/integration/rei/PulverizerDisplay.java | 43 +- .../ep/integration/rei/SawmillCategory.java | 4 +- .../ep/integration/rei/SawmillDisplay.java | 43 +- ...electableRecipeMachineTransferHandler.java | 11 +- .../rei/StoneSolidifierCategory.java | 4 +- .../rei/StoneSolidifierDisplay.java | 43 +- .../item/AdvancedBatteryBoxMinecartItem.java | 2 +- .../ep/item/BatteryBoxMinecartItem.java | 2 +- .../java/me/jddev0/ep/item/BatteryItem.java | 5 +- .../java/me/jddev0/ep/item/CutterItem.java | 21 +- src/main/java/me/jddev0/ep/item/EPItems.java | 306 +- .../ep/item/EnergizedPowerBookItem.java | 6 +- .../me/jddev0/ep/item/EnergyAnalyzerItem.java | 4 +- .../me/jddev0/ep/item/FluidAnalyzerItem.java | 4 +- .../java/me/jddev0/ep/item/HammerItem.java | 21 +- .../jddev0/ep/item/InventoryChargerItem.java | 10 +- .../ep/item/InventoryCoalEngineItem.java | 12 +- .../ep/item/InventoryTeleporterItem.java | 10 +- .../jddev0/ep/item/TeleporterMatrixItem.java | 10 +- .../java/me/jddev0/ep/item/WrenchItem.java | 7 +- .../EnergizedPowerBookReloadListener.java | 26 +- .../entity/PlayerTeleporterCrashFixMixin.java | 18 + .../recipe/ServerRecipeManagerGetter.java | 12 + .../me/jddev0/ep/networking/ModMessages.java | 4 +- .../packet/ChangeComparatorModeC2SPacket.java | 1 - .../ChangeCurrentRecipeIndexC2SPacket.java | 1 - .../packet/ChangeRedstoneModeC2SPacket.java | 1 - ...ancedAutoCrafterRecipeOutputC2SPacket.java | 1 - ...CycleAutoCrafterRecipeOutputC2SPacket.java | 1 - .../packet/EnergySyncS2CPacket.java | 1 - .../networking/packet/FluidSyncS2CPacket.java | 1 - .../packet/ItemStackSyncS2CPacket.java | 1 - .../OpenEnergizedPowerBookS2CPacket.java | 1 - ...nergizedPowerBookFromLecternC2SPacket.java | 1 - ...AutoCrafterPatternInputSlotsC2SPacket.java | 4 +- ...vancedAutoCrafterRecipeIndexC2SPacket.java | 1 - ...AutoCrafterPatternInputSlotsC2SPacket.java | 4 +- .../packet/SetCheckboxC2SPacket.java | 1 - ...tCreativeFluidTankFluidStackC2SPacket.java | 1 - .../packet/SetFluidTankFilterC2SPacket.java | 1 - .../SetTimeFromTimeControllerC2SPacket.java | 1 - ...WeatherFromWeatherControllerC2SPacket.java | 1 - .../packet/SyncCurrentRecipeS2CPacket.java | 6 +- .../SyncFurnaceRecipeTypeS2CPacket.java | 70 - .../packet/SyncIngredientsS2CPacket.java | 73 + ...SyncPressMoldMakerRecipeListS2CPacket.java | 7 +- .../packet/UseTeleporterC2SPacket.java | 1 - .../ep/paintings/EPPaintingVariants.java | 7 +- .../jddev0/ep/recipe/AlloyFurnaceRecipe.java | 53 +- .../ep/recipe/AssemblingMachineRecipe.java | 51 +- .../me/jddev0/ep/recipe/ChargerRecipe.java | 44 +- .../me/jddev0/ep/recipe/CompressorRecipe.java | 69 +- .../recipe/ContainerRecipeInputWrapper.java | 2 +- .../me/jddev0/ep/recipe/CrusherRecipe.java | 44 +- .../ep/recipe/CrystalGrowthChamberRecipe.java | 71 +- .../java/me/jddev0/ep/recipe/EPRecipes.java | 26 +- .../ep/recipe/EnergizedPowerBaseRecipe.java | 16 + .../me/jddev0/ep/recipe/EnergizerRecipe.java | 44 +- .../ep/recipe/FiltrationPlantRecipe.java | 44 +- .../ep/recipe/FluidTransposerRecipe.java | 49 +- .../recipe/FurnaceRecipeTypePacketUpdate.java | 11 - .../jddev0/ep/recipe/HeatGeneratorRecipe.java | 44 +- .../ep/recipe/IngredientPacketUpdate.java | 12 + .../jddev0/ep/recipe/IngredientWithCount.java | 49 +- .../me/jddev0/ep/recipe/MetalPressRecipe.java | 72 +- .../OutputItemStackWithPercentages.java | 2 +- .../PlantGrowthChamberFertilizerRecipe.java | 47 +- .../ep/recipe/PlantGrowthChamberRecipe.java | 46 +- .../ep/recipe/PressMoldMakerRecipe.java | 44 +- .../me/jddev0/ep/recipe/PulverizerRecipe.java | 47 +- .../me/jddev0/ep/recipe/SawmillRecipe.java | 49 +- .../ep/recipe/StoneSolidifierRecipe.java | 44 +- .../TeleporterMatrixSettingsCopyRecipe.java | 25 +- .../ep/recipe/ThermalGeneratorRecipe.java | 44 +- .../tags/EnergizedPowerBiomeTags.java | 1 - .../registry/tags/EnergizedPowerItemTags.java | 1 - .../ep/screen/AdvancedAutoCrafterMenu.java | 3 - .../ep/screen/AdvancedAutoCrafterScreen.java | 12 +- .../jddev0/ep/screen/AdvancedChargerMenu.java | 7 +- .../ep/screen/AdvancedChargerScreen.java | 1 - .../jddev0/ep/screen/AdvancedCrusherMenu.java | 4 +- .../ep/screen/AdvancedCrusherScreen.java | 6 +- .../ep/screen/AdvancedPoweredFurnaceMenu.java | 3 +- .../screen/AdvancedPoweredFurnaceScreen.java | 4 +- .../ep/screen/AdvancedPulverizerMenu.java | 4 +- .../ep/screen/AdvancedPulverizerScreen.java | 6 +- .../ep/screen/AdvancedUnchargerScreen.java | 1 - .../me/jddev0/ep/screen/AlloyFurnaceMenu.java | 19 +- .../jddev0/ep/screen/AlloyFurnaceScreen.java | 11 +- .../ep/screen/AssemblingMachineMenu.java | 13 +- .../ep/screen/AssemblingMachineScreen.java | 4 +- .../me/jddev0/ep/screen/AutoCrafterMenu.java | 3 - .../jddev0/ep/screen/AutoCrafterScreen.java | 10 +- .../ep/screen/AutoPressMoldMakerScreen.java | 6 +- .../jddev0/ep/screen/AutoStonecutterMenu.java | 4 +- .../ep/screen/AutoStonecutterScreen.java | 11 +- .../jddev0/ep/screen/BlockPlacerScreen.java | 4 +- .../java/me/jddev0/ep/screen/ChargerMenu.java | 4 +- .../me/jddev0/ep/screen/ChargerScreen.java | 1 - .../ep/screen/ChargingStationScreen.java | 1 - .../me/jddev0/ep/screen/CoalEngineMenu.java | 7 +- .../me/jddev0/ep/screen/CoalEngineScreen.java | 4 +- .../me/jddev0/ep/screen/CompressorMenu.java | 4 +- .../me/jddev0/ep/screen/CompressorScreen.java | 4 +- .../ep/screen/CreativeBatteryBoxScreen.java | 11 +- .../ep/screen/CreativeFluidTankScreen.java | 9 +- .../java/me/jddev0/ep/screen/CrusherMenu.java | 4 +- .../me/jddev0/ep/screen/CrusherScreen.java | 4 +- .../ep/screen/CrystalGrowthChamberMenu.java | 9 +- .../ep/screen/CrystalGrowthChamberScreen.java | 4 +- .../java/me/jddev0/ep/screen/DrainScreen.java | 7 +- .../ep/screen/EnergizedPowerBookScreen.java | 19 +- .../me/jddev0/ep/screen/EnergizerMenu.java | 4 +- .../me/jddev0/ep/screen/EnergizerScreen.java | 6 +- .../ep/screen/FiltrationPlantScreen.java | 5 +- .../jddev0/ep/screen/FluidDrainerScreen.java | 4 +- .../jddev0/ep/screen/FluidFillerScreen.java | 4 +- .../me/jddev0/ep/screen/FluidPumpScreen.java | 4 +- .../me/jddev0/ep/screen/FluidTankScreen.java | 11 +- .../jddev0/ep/screen/FluidTransposerMenu.java | 4 +- .../ep/screen/FluidTransposerScreen.java | 14 +- .../jddev0/ep/screen/HeatGeneratorScreen.java | 1 - .../ep/screen/InductionSmelterMenu.java | 13 +- .../ep/screen/InductionSmelterScreen.java | 4 +- .../ep/screen/InventoryChargerScreen.java | 7 +- .../ep/screen/InventoryTeleporterScreen.java | 7 +- .../screen/ItemConveyorBeltLoaderScreen.java | 7 +- .../screen/ItemConveyorBeltSorterScreen.java | 13 +- .../me/jddev0/ep/screen/MetalPressMenu.java | 7 +- .../me/jddev0/ep/screen/MetalPressScreen.java | 4 +- .../ep/screen/PlantGrowthChamberMenu.java | 8 +- .../ep/screen/PlantGrowthChamberScreen.java | 4 +- .../jddev0/ep/screen/PoweredFurnaceMenu.java | 3 +- .../ep/screen/PoweredFurnaceScreen.java | 4 +- .../ep/screen/PressMoldMakerScreen.java | 23 +- .../me/jddev0/ep/screen/PulverizerMenu.java | 4 +- .../me/jddev0/ep/screen/PulverizerScreen.java | 4 +- .../java/me/jddev0/ep/screen/SawmillMenu.java | 4 +- .../me/jddev0/ep/screen/SawmillScreen.java | 4 +- .../me/jddev0/ep/screen/SolarPanelScreen.java | 1 - .../ep/screen/StoneSolidifierScreen.java | 10 +- .../me/jddev0/ep/screen/TeleporterScreen.java | 1 - .../ep/screen/ThermalGeneratorScreen.java | 4 +- .../ep/screen/TimeControllerScreen.java | 10 +- .../me/jddev0/ep/screen/UnchargerScreen.java | 1 - .../ep/screen/WeatherControllerScreen.java | 14 +- ...pgradableEnergyStorageContainerScreen.java | 9 +- .../EnergizedPowerBaseContainerScreen.java | 44 +- .../base/EnergyStorageContainerScreen.java | 15 +- ...electableRecipeMachineContainerScreen.java | 9 +- ...pgradableEnergyStorageContainerScreen.java | 9 +- .../java/me/jddev0/ep/util/RecipeUtils.java | 61 +- .../me/jddev0/ep/world/ModPlacedFeatures.java | 1 - .../me/jddev0/ep/world/ModStructureSets.java | 1 - .../me/jddev0/ep/world/ModStructures.java | 1 - .../gui/book_icons/redstone_mode_high.png | Bin 7471 -> 7642 bytes .../configuration_buttons.png | Bin 15111 -> 15124 bytes .../resources/energizedpower.accesswidener | 7 - src/main/resources/energizedpower.mixins.json | 2 + src/main/resources/fabric.mod.json | 7 +- src/main/resources/pack.mcmeta | 6 +- 812 files changed, 9105 insertions(+), 9690 deletions(-) create mode 100644 src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_slabs.json create mode 100644 src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_stairs.json create mode 100644 src/main/java/me/jddev0/ep/datagen/recipe/ModRecipeGenerator.java create mode 100644 src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIClientPlugin.java create mode 100644 src/main/java/me/jddev0/ep/mixin/entity/PlayerTeleporterCrashFixMixin.java create mode 100644 src/main/java/me/jddev0/ep/mixin/recipe/ServerRecipeManagerGetter.java delete mode 100644 src/main/java/me/jddev0/ep/networking/packet/SyncFurnaceRecipeTypeS2CPacket.java create mode 100644 src/main/java/me/jddev0/ep/networking/packet/SyncIngredientsS2CPacket.java create mode 100644 src/main/java/me/jddev0/ep/recipe/EnergizedPowerBaseRecipe.java delete mode 100644 src/main/java/me/jddev0/ep/recipe/FurnaceRecipeTypePacketUpdate.java create mode 100644 src/main/java/me/jddev0/ep/recipe/IngredientPacketUpdate.java diff --git a/build.gradle b/build.gradle index a0217945b..71c84e7ee 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '1.6-SNAPSHOT' + id 'fabric-loom' version '1.8-SNAPSHOT' id 'maven-publish' } @@ -73,9 +73,9 @@ dependencies { // REI integration modCompileOnlyApi "me.shedaniel.cloth:basic-math:0.6.1" - modCompileOnlyApi "dev.architectury:architectury-fabric:13.0.1" - modCompileOnlyApi "me.shedaniel:RoughlyEnoughItems-api-fabric:16.0.729" - modCompileOnlyApi "me.shedaniel:RoughlyEnoughItems-default-plugin-fabric:16.0.729" + modCompileOnlyApi "dev.architectury:architectury-fabric:14.0.4" + modCompileOnlyApi "me.shedaniel:RoughlyEnoughItems-api-fabric:17.0.794" + modCompileOnlyApi "me.shedaniel:RoughlyEnoughItems-default-plugin-fabric:17.0.794" // EMI integration modCompileOnly "dev.emi:emi-fabric:1.1.8+1.21:api" @@ -83,6 +83,22 @@ dependencies { // CCTweaked integration modCompileOnlyApi "cc.tweaked:cc-tweaked-1.21-core-api:1.111.0" modCompileOnlyApi "cc.tweaked:cc-tweaked-1.21-fabric-api:1.111.0" + + //TEST-TMP + modRuntimeOnly "me.shedaniel:RoughlyEnoughItems-fabric:17.0.794" + + //modLocalRuntime "dev.emi:emi-fabric:1.1.8+1.21" + //runtimeOnly "cc.tweaked:cc-tweaked-1.21-fabric:1.111.0" + //modRuntimeOnly "blank:modmenu-6.1.0-rc.4:6.1.0-rc.4" + + //runtimeOnly "blank:RebornCore-5.11.0:5.11.0" + //runtimeOnly "blank:TechReborn-5.11.0:5.11.0" + //modRuntimeOnly "blank:appliedenergistics2-fabric-13.0.6-beta:13.0.6" + + //modRuntimeOnly "blank:whats-that-slot-fabric-1.3.4+1.20.1:1.3.4+1.20.1" + //modRuntimeOnly "blank:emitrades-fabric-1.2.0+mc1.20.1:fabric-1.2.0+mc1.20.1" + + //modRuntimeOnly "blank:worldedit-mod-7.3.4:7.3.4-fabric" } processResources { @@ -135,11 +151,3 @@ publishing { tasks.register("idePostSync") { } - -// IDEA no longer automatically downloads sources/javadoc jars for dependencies, so we need to explicitly enable the behavior. -idea { - module { - downloadSources = true - downloadJavadoc = true - } -} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3ab1511cb..33338491c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,15 +5,15 @@ org.gradle.debug=false # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.21.1 -yarn_mappings=1.21.1+build.3 -loader_version=0.16.5 +minecraft_version=1.21.2 +yarn_mappings=1.21.2+build.1 +loader_version=0.16.10 # Mod Properties -mod_version=1.21.1-2.12.4-fabric +mod_version=1.21.2-2.12.4-fabric maven_group=me.jddev0.energizedpower archives_base_name=energizedpower modid=energizedpower # Dependencies -fabric_version=0.104.0+1.21.1 \ No newline at end of file +fabric_version=0.106.1+1.21.2 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2617362fd..707e499ac 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.8-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/generated/resources/.cache/05cb91014ff9df84ab093379a4ba2eee76fe6829 b/src/generated/resources/.cache/05cb91014ff9df84ab093379a4ba2eee76fe6829 index 0b123a992..2bfdcc5b6 100644 --- a/src/generated/resources/.cache/05cb91014ff9df84ab093379a4ba2eee76fe6829 +++ b/src/generated/resources/.cache/05cb91014ff9df84ab093379a4ba2eee76fe6829 @@ -1,673 +1,675 @@ -// 1.21.1 2024-09-21T20:30:22.457354853 Energized Power/Recipes +// 1.21.2 2025-01-19T18:23:01.787735652 Energized Power/Recipes 309b74dcc62e568b76d9a9298db048a033a685aa data/energizedpower/advancement/recipes/crafting/tin_wire.json 89ff59d99ae9b8f7a6a0240d59dac2c2dd62cfda data/energizedpower/advancement/recipes/crafting/compressor.json -250592724a832ed9c999257b095714e35512589e data/energizedpower/recipe/crafting/sawmill.json +d3cb0697b337df8534d26db7ebc895c40c4713f3 data/energizedpower/recipe/crafting/sawmill.json 7a43eefa3caf1b7cecf3eabd30e18121d4bbd84b data/energizedpower/advancement/recipes/crafting/press_mold_maker.json 2bd7132e3a19885cc36314b9ccd515d696c698a1 data/energizedpower/advancement/recipes/crafting/battery_3.json -c589f9b610ebbd69ffa7cc76833052e86f9cd3b4 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence.json -6582e922fb967bdb2ac38be0fb65be09829acb54 data/energizedpower/recipe/crafting/item_conveyor_belt_sorter.json -cbbe26a66082ec51b3021b3e58c4065dd1a653a7 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_trapdoor.json -b24bd9a4913681e40efcd131fc59e2e888f7a4d4 data/energizedpower/recipe/filtration_plant/tin_ore_filtration.json -5faab46efa86da0fa033ed30273c2da01b48a4e2 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_chest_raft.json +cdcd6d33e9b3631b5ae487bbdf204b50fc3b5f67 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence.json +76d24e12ad508ca0d8a91cbac408c7a55fd9b598 data/energizedpower/recipe/crafting/item_conveyor_belt_sorter.json +92096d4cf36a00e7909c26cbeab14259cb866bc9 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_trapdoor.json +1686b7a9a45c56bcf198876022297e5663529c3a data/energizedpower/recipe/filtration_plant/tin_ore_filtration.json +3dac9b248ab1fc7fc121c91af106325f457d19f4 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_chest_raft.json e7849da82040e4593c1a6243d94f5fe0ca685d8c data/energizedpower/advancement/recipes/crafting/energy_analyzer.json -e41c4d86e0e90d814891f5b702b3c0b0f2cb76be data/energizedpower/recipe/crafting/minecart_uncharger.json -08e2a9931e942ca0e10f468fbc833c188776dc94 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_sign.json -da13fc23e4328f6d70bd08013d4ac92c4a53e8f5 data/energizedpower/recipe/crafting/moon_light_upgrade_module_1.json -41d0653c37ed82cd1478f67038428b45dbef5a78 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_trapdoor.json +9851ca1a01c07bacaa64d3cdf404dbe5999fdcc6 data/energizedpower/recipe/crafting/minecart_uncharger.json +78c00ea93df2e7485e23e487aaef187410f46516 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_sign.json +f9087618674fdab7308e6c533e75c1ba5daabbb8 data/energizedpower/recipe/crafting/moon_light_upgrade_module_1.json +ca1d0eae3e8dea18bd9251e57fec88a8c003cb1e data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_trapdoor.json 224b312e7024775b9e006a74ded2f325c80faaa5 data/energizedpower/advancement/recipes/crafting/silicon_block.json -4bc21e7c6317dd76a768fe755e19985b9987c0b4 data/energizedpower/recipe/fluid_transposer/brown_concrete.json -b895ccd9c1729ad2e693196bd551e4baac8089af data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_3.json -82e8d9646c0b19ba2f3cb3569e541514f6907524 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_chest_boat.json +ac3d370c39c01a9ba768512890debda36dd1f467 data/energizedpower/recipe/fluid_transposer/brown_concrete.json +393eb8a072aaa43ee8e4ecd558be0b505f54d3ad data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_3.json +0140165442f00f4923a1217b58cfd3173dc7c1f5 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_chest_boat.json 22920821ab13c1202dca01d3132eda2565c0cc41 data/energizedpower/advancement/recipes/crafting/good_fertilizer.json -ef5c12f88623b2b96f6f57dff7a0806ce6bb25da data/energizedpower/recipe/growing/red_tulips_from_growing_red_tulip.json +069b68699117eecd0cdb61dabb66f2e1ce4665b5 data/energizedpower/recipe/growing/red_tulips_from_growing_red_tulip.json 3d7ed2bf7d06aa99d26f5df0b6cf1cf0d1869035 data/energizedpower/advancement/recipes/crafting/tin_cable_using_wire.json -c5646be206582454b232eb3f4f4efd608faf0513 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_door.json -392d2b0c3bf254d1d69f0cf5fd9912d6b1594728 data/energizedpower/recipe/crafting/hardened_machine_frame.json -4dea0b451338c628d800f8a22dfe38af04622b36 data/energizedpower/recipe/energizer/energized_crystal_matrix.json -a5c0d6d7d706d5f374596cb9fa3bd0520febccc5 data/energizedpower/recipe/energizer/energized_gold_ingot.json -823af322d87b232e6edc93ae6341e0ab3fbc5870 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hammer.json -22201221a64c808793fd5f5935f8ab55d417994b data/energizedpower/recipe/crusher/sand_from_crushing_sandstone.json -c35c7eb366fb50852af7b2e41bff5777e217786a data/energizedpower/recipe/crafting/energized_gold_cable.json +a9d267f17b690097684ecd5e775b94f4bc2b0a22 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_door.json +52cdb9f77a20f8cf92280fc59ff894189e8e0fa0 data/energizedpower/recipe/crafting/hardened_machine_frame.json +f41258f85af37929a94480b3fb103763211d1b2e data/energizedpower/recipe/energizer/energized_crystal_matrix.json +cf44985f419a514e8e37535be12e004e2d2198ec data/energizedpower/recipe/energizer/energized_gold_ingot.json +2080ee0e0016265c509ebe17f16b498e3397e58b data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hammer.json +a0b1237e9e957733833a88ce9e3f1bd556c0b6b8 data/energizedpower/recipe/crusher/sand_from_crushing_sandstone.json +43eba0c13fdd24a0128f409dc851450293e747c6 data/energizedpower/recipe/crafting/energized_gold_cable.json 422091dfeb804977b5c6850f9c2e8a9e87c43312 data/energizedpower/advancement/recipes/crafting/energy_efficiency_upgrade_module_3.json -682f3216c6a0e5a85d656c1d0a9c1e97d41c8974 data/energizedpower/recipe/growing/red_mushrooms_from_growing_red_mushroom.json -8443856cd45417f65b446f2f1a7a02c502c67d7d data/energizedpower/recipe/crafting/tin_block.json +b4ddcb268bac50805ab6aebe443a685512559dc6 data/energizedpower/recipe/growing/red_mushrooms_from_growing_red_mushroom.json +34688e82e9a5c72e665f7bc59c21fd54406dff6d data/energizedpower/recipe/crafting/tin_block.json 37a679991cc2a3d85edb7878980768839fe640ae data/energizedpower/advancement/recipes/crafting/basic_machine_frame.json -5b0e2f73e9dd4273626642b52fc20caea49c1e98 data/energizedpower/recipe/crafting/energizer.json +4b8b118c0ebf990cd75def7eb4fff1d085fdcc77 data/energizedpower/recipe/crafting/energizer.json fa43c57b362f3ced65903ac45db14ccf1af34576 data/energizedpower/advancement/recipes/crafting/plant_growth_chamber.json -e1ad3fb4b6032bc79c6e9359e3745cc7e9ca7f41 data/energizedpower/recipe/crafting/teleporter.json -bf814cc17962f2b3033bbdbcf4f2bdb439611dc7 data/energizedpower/recipe/metal_press/energized_copper_wire.json -4272285c7099c3f8011ca8fe11163fed44c1a5a6 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_trapdoor.json -9dab3d05d54d9caa26095af5e82dd5656bcb7410 data/energizedpower/recipe/crusher/sand_from_crushing_sandstone_variants.json -c2f34c084940c54d60d3efefc1fab84701c36dff data/energizedpower/recipe/crafting/hv_transformer_1_to_n.json +6224436fbf3f23e235a66a832ff52e2e043ad938 data/energizedpower/recipe/crafting/teleporter.json +1eb3f4ac556991a0b650f59e4746fe4e061cbbfd data/energizedpower/recipe/metal_press/energized_copper_wire.json +786cab9ce4c352ed24012a1fbe0b006d9b5136da data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_trapdoor.json +ca8047740841471f7d03af6d57456486b087529e data/energizedpower/recipe/crusher/sand_from_crushing_sandstone_variants.json +15bdcbaf3182a94763b86758d59f58c4a4f9c23c data/energizedpower/recipe/crafting/hv_transformer_1_to_n.json cd592817cbacc0c6927ec7566003137c09078e7e data/energizedpower/advancement/recipes/crafting/advanced_auto_crafter.json -32458b747135f79c223ed50f422ab6aea67a6bdb data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence_gate.json -78c2c1b2c15404a62fbc5ca60fbd8b8cd8058d3e data/energizedpower/recipe/crafting/hv_transformer_3_to_3.json -001c11e97bbd587812128f6a696b73a4833165d0 data/energizedpower/recipe/stone_solidifier/stone.json -dc28007f9d8eea8a896d84100059f9173ec7b96b data/energizedpower/recipe/growing/alliums_from_growing_allium.json -20f767f8bbd87b1b4745d651366a5903ef4e2bfc data/energizedpower/recipe/metal_press/iron_gear.json +cd1ecd318e3520940e92f742edd77b979e32bc1e data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence_gate.json +6da594a80518256652c5c120c10c218f6101c40c data/energizedpower/recipe/crafting/hv_transformer_3_to_3.json +70b3a777af4e1fb4474c936f8182f8f8dad4171d data/energizedpower/recipe/stone_solidifier/stone.json +071ddd9fd7d7f537a14dafee6f0d784978aea333 data/energizedpower/recipe/growing/alliums_from_growing_allium.json +5f8bad207d352e5429f14b45689bdd44fcd7b7e9 data/energizedpower/recipe/metal_press/iron_gear.json f73f3baa97f823f0d0d658ebcec77b09da31a810 data/energizedpower/advancement/recipes/crafting/moon_light_upgrade_module_1.json 3e7f1f0e3f954a34e7c238346d37b7ef80d14bbf data/energizedpower/advancement/recipes/crafting/tin_cable.json -cfd17efe7c21c49c0f003b1fc7d34b775935d67e data/energizedpower/recipe/crafting/wrench.json -b8556b74f0432ee8a41af901c2f89a695cb0aad2 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_1.json -06f138111f9f20f12af65a67420df1d9bf98f484 data/energizedpower/recipe/crafting/hv_transformer_n_to_1.json -f347d3faa6c43a57e7adc7e39196b1fe70314f96 data/energizedpower/recipe/crusher/gravel_from_crushing_cobblestone.json -b4c22472f371cf97107fc8f49f28a7e903461a92 data/energizedpower/recipe/crafting/auto_crafter.json +9cb304bc1bbccbed6adf2dd1f844184f767e75dc data/energizedpower/recipe/crafting/wrench.json +c5365820eee709dfd24f8ad565749cb22ea7db85 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_1.json +4b9f75c9b47d9c69ccb29334a0cdc6009c4e6949 data/energizedpower/recipe/crafting/hv_transformer_n_to_1.json +9a890dfd39a659563e8a96227523508cc9317ecd data/energizedpower/recipe/crusher/gravel_from_crushing_cobblestone.json +6fb9cabd18927b89e18329ced1f171a604e9442d data/energizedpower/recipe/crafting/auto_crafter.json a3e18d5451940ec597fab960528b326b29a5726e data/energizedpower/advancement/recipes/crafting/advanced_fertilizer.json 59371615e169d9c0a9d4d91b26470a21138797a8 data/energizedpower/advancement/recipes/crafting/weather_controller.json -d2672491e72823f2ba8c4543d630dda1ecbe701d data/energizedpower/recipe/crafting/advanced_upgrade_module.json -24973f15d68e9943fb398387cd8ab410eb139ae1 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_boat.json +d78a0dd4214e1dbe022f785650306400d3292f4b data/energizedpower/recipe/crafting/advanced_upgrade_module.json +2c5f57f1235bd494e4ee067063ccb66f8106e992 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_boat.json 151f4a70fffc9ac9a273ad4614a67d8f787b8fbd data/energizedpower/advancement/recipes/crafting/gold_plate.json -899f127cec4b415f8f30c32ee610f5fbd4e6b525 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper.json +15614b48e28a465d80b16ca339af11110f96cd9f data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper.json 22d65555c9d1a856424427c99a1fa4d2c3eb94fd data/energizedpower/advancement/recipes/crafting/duration_upgrade_module_2.json -cd8524daaae17ce90cd12cae158addff5e4b34b6 data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone.json -934961305d239256443728de0d5c5b11adb71127 data/energizedpower/recipe/crafting/stone_solidifier.json -0a432c0bff3fc11775a93446ae34022de2297364 data/energizedpower/recipe/fluid_transposer/lime_concrete.json -26469a754e76f94e305cb4820a9d628dbdc306cb data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_door.json -ab7fa58b8daaf087db941fb79e54925b35ad1673 data/energizedpower/recipe/crafting/battery_5.json +2b2ca79d0dcabb4c18a62b71579a9cb4b324fc96 data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone.json +ec9351ae4fe01a93c0116439723cedb461eb7631 data/energizedpower/recipe/crafting/stone_solidifier.json +56c32423d72bd15ed1b64690d92492634a6df42c data/energizedpower/recipe/fluid_transposer/lime_concrete.json +4e33c044096ebc52ccc024ca9531b80182f7cebc data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_door.json +10eb4b31134d4c09a4554b6bc5c03c0262fdc987 data/energizedpower/recipe/crafting/battery_5.json 8bc00afea570785434d1559e3c93ce76d82615e8 data/energizedpower/advancement/recipes/crafting/fluid_drainer.json -3ff879327b8dcc053b6c3d925365024736189965 data/energizedpower/recipe/crafting/tin_ingot_from_tin_block.json -50d614cb35ec9a0c1028cdfe2587fd41b199314a data/energizedpower/recipe/crafting/advanced_fertilizer.json -a46ff2eb3a9f516378c9cc6382a84b51f546e7b7 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_sword.json +64af02eff251c34f4b3945fffd403c0d7aedc051 data/energizedpower/recipe/crafting/tin_ingot_from_tin_block.json +335c6051878c730b1c6b386ba5610d2488ce5ae8 data/energizedpower/recipe/crafting/advanced_fertilizer.json +2ea3dbe228757fe06956a107fa3c9e906575bf73 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_sword.json 02e5d35a562af631cbff7ef59b69f67ea11f7088 data/energizedpower/advancement/recipes/crafting/lv_transformer_n_to_1.json -a02ff88ab0b9ae45a6cfcced15dcc9cfb4a72f9f data/energizedpower/recipe/crafting/advanced_crusher.json -c1f9d51a9204186c3cf1ad8d18a859635447974c data/energizedpower/recipe/fluid_transposer/yellow_concrete.json -6acb074a1a0fe36e36ce795f9d02e27f5801b40d data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence.json +27238b94d17ebef11881d87e69d97509a28c2b06 data/energizedpower/recipe/crafting/advanced_crusher.json +c07d4f82b1cdfaa7139d09704ee9149282a6ff83 data/energizedpower/recipe/fluid_transposer/yellow_concrete.json +49a5467c9ecfb85ad773bb8b67cdc0e1a13b1bde data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence.json 8d3b0079fa5366dc86020916e9449069be087648 data/energizedpower/advancement/recipes/crafting/battery_7.json -4e2f712a4c1991af4d1bc835191d6da054e36505 data/energizedpower/recipe/fluid_transposer/sponge.json -f4e27c4771da385701a640b6247b72af107845f6 data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone_variants.json -889dddf8f4ad7b375544c68ef500cc9dfb31976a data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence_gate.json -0d43571131ed27b098249c2c3b806ca1193d51d4 data/energizedpower/recipe/crystal_growing/amethyst_shard.json -2070ce7ee46bcdcf5fc78fdba421b504385a62d3 data/energizedpower/recipe/crafting/time_controller.json +1f1edf00987ff4b884c5b446af7dcb8dd4c2c2b4 data/energizedpower/recipe/fluid_transposer/sponge.json +0764f4f5d676cd79c8eb3831d69858a90ab26e67 data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone_variants.json +c5657d8820e7e661fcf041d172f9da052ce16f17 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence_gate.json +500507da9cd1e2dde8b9b0f4a17685b046995d1d data/energizedpower/recipe/crystal_growing/amethyst_shard.json +25a0eb1b9e8dbc7a7ed5feb26398543e1f678d4d data/energizedpower/recipe/crafting/time_controller.json 142c73e88edbd63ad4d0a824b7694ccbc28cf781 data/energizedpower/advancement/recipes/crafting/tin_ingot_from_tin_block.json -40976278140356ae52fdcf70431203039b9e82b0 data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone_variants.json -f45790c41ea0bae6db0490abd3a55520cf20c73a data/energizedpower/recipe/fluid_transposer/cyan_concrete.json -de47e9801d74faee62ea34b2ed004df076b023a2 data/energizedpower/recipe/pulverizer/coal_from_pulverizer_coal_ores.json -b927c4f3c591a572b2b1547c0a4fd6429cb860f4 data/energizedpower/recipe/crafting/copper_plate.json -3b90705b19fc6426be4853624bd2ad3ee3afe70b data/energizedpower/recipe/crafting/advanced_battery_box.json +4cf488321e9e0e16c5a03003f06af4484d7502d8 data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone_variants.json +5e71746827770cef7a0b3e8a2914f4ace3507bde data/energizedpower/recipe/fluid_transposer/cyan_concrete.json +500ca2af144b4c692366b184f086ebcca8210c05 data/energizedpower/recipe/pulverizer/coal_from_pulverizer_coal_ores.json +4583cb06c6655ed4cbd8f197740dfcae2db59ea4 data/energizedpower/recipe/crafting/copper_plate.json +526947ba0485c999660158c8437e1cf3e845eb59 data/energizedpower/recipe/crafting/advanced_battery_box.json c436094310534bf46d3aee82fd90a5f8e5af0384 data/energizedpower/advancement/recipes/crafting/speed_upgrade_module_2.json -3fc2b184bcbc0c30bb8be67aa066218d34941065 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_logs.json -37921cffa37922fb8492c79b26043e61c0cddd8e data/energizedpower/recipe/growing/fertilizer/advanced_fertilizer.json -30ec8c72d1ae1f5a5c4604c31282e120e5d1756e data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_dust.json -4eb28ff5f2d7ec0241bf65608155cda37068b427 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_pressure_plate.json -01cb0069da9329ae9460e5e8a6017541ad1c87de data/energizedpower/recipe/crafting/speed_upgrade_module_4.json -d9c761842a4b966716a0fa5bc02b39da0b012760 data/energizedpower/recipe/growing/fertilizer/good_fertilizer.json -481536ecb182d35f033bf3e9a8f9642152bfc6c8 data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_ingot.json -29fd22b14446b90818ac1b967ee07f1bc1d6e428 data/energizedpower/recipe/crafting/tin_plate.json -abd563617b551e90dc94b2834bfaed951db6cd4c data/energizedpower/recipe/alloy_furnace/advanced_alloy_ingot.json -3fffdc5f72a4defc60cf9c9c9ca0116603a9a0cc data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_logs.json -3d93b8aa19430d7f43ce857f9e9c79b643977a1d data/energizedpower/recipe/crafting/charger.json -b9bf04309a7dd99df2b0db778163a62e700c9d9a data/energizedpower/recipe/stone_solidifier/cobbled_deepslate.json -9a2c680370e88a32cf9372804994e2ee5d29d41f data/energizedpower/recipe/crafting/minecart_charger.json -a77ccecc78faf2fa853b4421fb9bbda49d743136 data/energizedpower/recipe/blasting/gold_nugget_from_blasting_golden_hammer.json -91994425895b3495334c1082f37bd2c17da3d9dc data/energizedpower/recipe/crafting/battery_8.json -a0d428ca358594d8812f06779b4f79e85123506c data/energizedpower/recipe/fluid_transposer/light_blue_concrete.json -48161cf4ac61d432e6da2ee9bec867f2a9f130d7 data/energizedpower/recipe/alloy_furnace/redstone_alloy_ingot.json -fc296354134ec0541c11eb369be875fb3622cf46 data/energizedpower/recipe/growing/cornflowers_from_growing_cornflower.json +6e257a2723f6a7b588958378de77931e54fb184d data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_logs.json +c806449bea4323fd5a2e51e9aed9224aa3f38698 data/energizedpower/recipe/growing/fertilizer/advanced_fertilizer.json +acdfa97550c5a5d285f1159d83859a157c988b5f data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_dust.json +9575a805e9d8f669989fb45fec56bc821c11bc0d data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_pressure_plate.json +f66989172895ef67402f982ecc88be5af0bbe30e data/energizedpower/recipe/crafting/speed_upgrade_module_4.json +b0b2fd7965d70e907a3d0810a9e9d658bc769cb8 data/energizedpower/recipe/growing/fertilizer/good_fertilizer.json +d4e476583aac174e51b7c63451c81262fca91da6 data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_ingot.json +95f27aa1bbc1c407abc3a097e3d6a5e3d1a10509 data/energizedpower/recipe/crafting/tin_plate.json +711ce9916b1027207b27819b06abac9702f881cc data/energizedpower/recipe/alloy_furnace/advanced_alloy_ingot.json +f9a824bbfbecc0e3793469ca19b1ef7b465b38f1 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_logs.json +04b0f5e26d4008916d982dd88aca0f308558daf6 data/energizedpower/recipe/crafting/charger.json +896387cb6bc3ceb9d2bfc586a94c9a882e026679 data/energizedpower/recipe/stone_solidifier/cobbled_deepslate.json +22bcf01a856084c7c04e32ed87e0c048b93af7a6 data/energizedpower/recipe/crafting/minecart_charger.json +b3279267baa4013e590bfdf744ccb5f70191ef8a data/energizedpower/recipe/blasting/gold_nugget_from_blasting_golden_hammer.json +16882e16e38de7dca3b686acc6488e4266952e5c data/energizedpower/recipe/crafting/battery_8.json +a0566fdd88d4b0be24b29f34eac46c08b2323446 data/energizedpower/recipe/fluid_transposer/light_blue_concrete.json +eb7b075adb9a434eca932de7063f5e576a219f14 data/energizedpower/recipe/alloy_furnace/redstone_alloy_ingot.json +9b4947e2cef13ce50ee9473eb2c3dc711c617c20 data/energizedpower/recipe/growing/cornflowers_from_growing_cornflower.json bc338736a16fa51c3b815e8db5cfebda6797cc31 data/energizedpower/advancement/recipes/crafting/inventory_coal_engine.json -db51daedd09e28208fd8249697ce62fadf23e0c3 data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_ingot.json -d701246b1eca601111a871527551021e674f4ed1 data/energizedpower/recipe/crafting/energy_analyzer.json -eb4cf0991b527591c6a8b18cbd22d2c364fa60e8 data/energizedpower/recipe/crafting/gold_cable_using_wire.json -9057eb9f76e9dd0d006097dd69b49429e7d67a6d data/energizedpower/advancement/recipes/crafting/golden_hammer.json -54f320bf5c96d3d2d9061a493ce6e3e87473d35b data/energizedpower/recipe/growing/dandelions_from_growing_dandelion.json +19e78b11117d36138ef88083d6f37aa8cd4c107d data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_ingot.json +bd25d8c33b2fb6a6686427edfa813ea1b2030c66 data/energizedpower/recipe/crafting/energy_analyzer.json +01812288164356dbcab9092fa8d0ed21f59c6f1a data/energizedpower/recipe/crafting/gold_cable_using_wire.json +f1c7f6f64ff4a39a5462d5547112efcfb8baa18f data/energizedpower/advancement/recipes/crafting/golden_hammer.json +372725a771e6ef3b28798159f91d3b4ad06af5a6 data/energizedpower/recipe/growing/dandelions_from_growing_dandelion.json afdd4b6743dab306f2193fcbf73e95937172f734 data/energizedpower/advancement/recipes/crafting/basic_circuit.json -61fcad1b8a26b57f1ee7e25fdbf3060c43221295 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_stems.json -eeb10f14a7f57c95ca98c6741761f9625c9025a7 data/energizedpower/recipe/crafting/fluid_analyzer.json -3e0c8d9a598ba5d4cfddaed41832e8e71059b256 data/energizedpower/recipe/crafting/solar_panel_2.json -21e6ca10715225e4eabd1fed5311aa1126f8ec64 data/energizedpower/recipe/growing/potatoes_from_growing_potato.json +ee56ed64fee3396a25a861877ac72401b9ce3632 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_stems.json +a290819163067a0c71c3daa976d2b744f428ccd7 data/energizedpower/recipe/crafting/fluid_analyzer.json +a5f47327fb007d766ec1fac9838b208530fc7355 data/energizedpower/recipe/crafting/solar_panel_2.json +766a94fe9fa6b8f74173fbdcd046f0379d5f1f79 data/energizedpower/recipe/growing/potatoes_from_growing_potato.json bf6c0c10bd32df33466f85ef4027e8a1035f3a2d data/energizedpower/advancement/recipes/crafting/lightning_generator.json -2e42dee476f3762fda73a1e942fdaddb58f045f6 data/energizedpower/recipe/fluid_transposer/black_concrete.json +8549197a25bfd40e34aa8d161b4c4fa4d1b85449 data/energizedpower/recipe/fluid_transposer/black_concrete.json 7173375dad28ad8f3c63eb75adb09bf527bb2c0b data/energizedpower/advancement/recipes/smelting/rod_press_mold.json -e02ab75ae22ef1b49f0dbfb8b287409de8c03bba data/energizedpower/recipe/sawmill/oak_planks_from_sawing_composter.json -e520f68fa604473b7b2f42a9db069b6fb5fd659e data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_4.json -ab0cfc23c76f48f58be293a386c16bfd132b772f data/energizedpower/recipe/crafting/inventory_coal_engine.json -7c90b31b4065100957c5ee54708c524669426b69 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_loom.json +3dded8ebae4e31d7bfe3e8a271bb73c667b499f8 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_composter.json +933bfe6fe64d3f47037db4bf79d659335a6d51d1 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_4.json +ecdb927fa13f3f6790be2d619aa678ab6cdca87e data/energizedpower/recipe/crafting/inventory_coal_engine.json +2e3122cc422ce1f185540792406336fa348e69e2 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_loom.json bb633c1eabc0c4df2f7d431f9243a824cf60b5cf data/energizedpower/advancement/recipes/crafting/solar_panel_3.json -245d721cf53377efd9bb265c05a91a83d91f60b0 data/energizedpower/recipe/blasting/copper_ingot_from_blasting_copper_dust.json +5f519d48ddb9cd56cdbe4fbe0198bbd5b7a97656 data/energizedpower/recipe/blasting/copper_ingot_from_blasting_copper_dust.json 645b9bea4553acdd8e58cc7b5b4762746ae19115 data/energizedpower/advancement/recipes/crafting/gold_cable_using_wire.json 6513d68fe8bae5e029d1919db56369a104519d5f data/energizedpower/advancement/recipes/crafting/auto_press_mold_maker.json 4a3fbf268645e366ec0e62d20b2247ef015385d0 data/energizedpower/advancement/recipes/crafting/charging_station.json -93d871b6cf1bacc5d105992b56ebf2970d296fd9 data/energizedpower/recipe/compressing/energized_copper_plate_from_compressing_energized_copper_ingot.json -0f0e5c676ed0b26c7ea9d9520b33478e7cc20bbf data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_ores.json +c8f6d8dcb756f694509e4362628f7d84a5fcff6f data/energizedpower/recipe/compressing/energized_copper_plate_from_compressing_energized_copper_ingot.json +19a069b99cd4eccbd2d848118344fa55882a8928 data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_ores.json 150dfa78a51a6cb37ea783fb1453747c2fa13cdd data/energizedpower/advancement/recipes/crafting/solar_panel_2.json 02a9c1b78e0afc0d573ecd03c599e581b612a962 data/energizedpower/advancement/recipes/crafting/inventory_teleporter.json 33a75816b765f1247b153933be8a9721ed4a9808 data/energizedpower/advancement/recipes/crafting/sawdust_block.json -7f07564486fdbc7cf08f1c0795a319c76858dc03 data/energizedpower/recipe/crafting/energized_gold_cable_using_wire.json -9249d3db137cbb7a10ef307864705c86c01ae0b5 data/energizedpower/recipe/crafting/basic_fertilizer.json +7a50ee84222a13d351b485de577f342028420c3f data/energizedpower/recipe/crafting/energized_gold_cable_using_wire.json +8f8c54d75e4cbbc076a6da256db683f59c956ed9 data/energizedpower/recipe/crafting/basic_fertilizer.json 53602f82b07c96bd44e2a51725c63a10078642d6 data/energizedpower/advancement/recipes/crafting/extraction_depth_upgrade_module_3.json -2d402a3c786bd8e1d7e1222f9c6cc3c720c86bf0 data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_ingot.json -6cf75acbe00a009ad3962f660e555310a18496b8 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_logs.json -bde20ff4457b38839d473dbc5a55510b95017aea data/energizedpower/recipe/fluid_transposer/gray_concrete.json -2a483be535ed49119c2c4eaa82787f017f38b582 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence.json -ea8722357a26471c5750006d7d437cecfcb4b32e data/energizedpower/recipe/stone_solidifier/diorite.json +9f946539262ca27769f7fdf50b7a65b400dcda0d data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_ingot.json +a0b075e8213d3457e506b54cf7b5cf3b3db2c25e data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_logs.json +4e0d87ef9bcc4e878bc6db4215ab4f8b7b853350 data/energizedpower/recipe/fluid_transposer/gray_concrete.json +5313269a11053f2ad94c6e1dd4331dae37e1ca66 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence.json +88760be68799414d8a8ce6f5b437057f8f55ab86 data/energizedpower/recipe/stone_solidifier/diorite.json 3c8a7f6907df38fe8281bce2f092108af6cfe6b4 data/energizedpower/advancement/recipes/crafting/energy_capacity_upgrade_module_5.json 333d87587851134815cb4e33e07c35679f207f18 data/energizedpower/advancement/recipes/crafting/wrench.json b5242abee53bfb1254febca7d47149606020b419 data/energizedpower/advancement/recipes/crafting/speed_upgrade_module_3.json f22bd242f06ca3d67b53bd2fc83caaff7a078e7f data/energizedpower/advancement/recipes/smelting/tin_ingot_from_smelting_tin_ores.json -0d20d993a1a3aa485c2733680e75d3ace6ee820c data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_boat.json -9e3bdacf44d42e00f476cc5fba69ffe3b7ac3ab6 data/energizedpower/recipe/crafting/item_conveyor_belt_splitter.json -0cb2177118e210ed72a92d1efda8e49bbad562cb data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate_variants.json +d2f36dc4cd693e8a4c751c8ee41b8a20921ec715 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_boat.json +d86a4001352850006f5536c6c80062ceccebc39e data/energizedpower/recipe/crafting/item_conveyor_belt_splitter.json +3889bef287363975c2250d7edc9d66c71432f4e9 data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate_variants.json 4ca2dee8c7ad9fff9afcd9691d0b1226f8830de3 data/energizedpower/advancement/recipes/crafting/item_conveyor_belt_splitter.json aa9e7f5896392864e2d13daae17678061f0f368b data/energizedpower/advancement/recipes/crafting/alloy_furnace.json 456a1ed0624a2ada2c6e9d04170522149a2bec14 data/energizedpower/advancement/recipes/crafting/fluid_tank_large.json eb951d0a9788694289328438b513312a7de21c7a data/energizedpower/advancement/recipes/crafting/item_conveyor_belt_from_leather.json -15bd08ac8f2e94307bf8227f133b0a72845e86d4 data/energizedpower/recipe/crafting/item_conveyor_belt_from_dried_kelp.json +58d115b330faf64b1d3246aaad2247ba7ec1bbe1 data/energizedpower/recipe/crafting/item_conveyor_belt_from_dried_kelp.json 53d325e0281327820868068c50db4c71a9738bbe data/energizedpower/advancement/recipes/crafting/raw_tin.json -6e4f50bee85da3e4d39907765c6eece60f028be3 data/energizedpower/recipe/stone_solidifier/obsidian.json -f5754173030a1465af4c10ed9ef442565e3aa45a data/energizedpower/recipe/crafting/item_conveyor_belt_merger.json -6dabeb8ca1c6c14db94689080d3d8e0936d21b32 data/energizedpower/recipe/metal_press/iron_rod.json -5833e18bfb8057a7e8cfe9e2d384c43d08e217ae data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_2.json -5306ffcaedfbb09380bb440b05b3acc78870e85d data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_shovel.json +059518b8c4a6f2b92030b47bf555c1825d84b038 data/energizedpower/recipe/stone_solidifier/obsidian.json +86bccbee888aad5d007e191e28f327c14ef38213 data/energizedpower/recipe/crafting/item_conveyor_belt_merger.json +a363b8bdd6ab29a44e6fb8dc9ba451b39a1bcf3c data/energizedpower/recipe/metal_press/iron_rod.json +8fc446720f5de2f4a175046097fea3e2a5162972 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_2.json +5ffeb3ddebdf1c65e4eaef73b45498ed5dfedba7 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_shovel.json 5359b7110d42bae20432801df2cfa0cd11e1fd3e data/energizedpower/advancement/recipes/crafting/duration_upgrade_module_3.json -187766cfccf0b1830773804083b55e4500023d0b data/energizedpower/recipe/crafting/battery_1.json -500f0a99dc643eb284c51374e66355dde25f6df5 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence_gate.json -7e0e07c9c9f030f979125bd812f6f27f705f7ed6 data/energizedpower/recipe/crafting/fluid_filler.json +48825fdfdb8b9e21621abe9a7248221d234645f5 data/energizedpower/recipe/crafting/battery_1.json +7ebade0dd09106e55d1aba2a104ec3b7c32bd32d data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence_gate.json +6cd6d9f4d489b26bfdce6da425d8a816becd5e16 data/energizedpower/recipe/crafting/fluid_filler.json fd8a477ecbfa53044eca87f62b412aaf4d45fb2e data/energizedpower/advancement/recipes/crafting/fluid_analyzer.json 6898f0d24b29b1468c7270c582bdf63704d3a979 data/energizedpower/advancement/recipes/crafting/lv_transformer_3_to_3.json e0ec5b612f42995da76122f237b509f31832b22a data/energizedpower/advancement/recipes/crafting/lv_transformer_1_to_n.json 55d767e87e0cc07b0a71277548ffbe5b33ad331c data/energizedpower/advancement/recipes/crafting/thermal_generator.json -566a4377b79eb8cab48ba1e88e167059879f293c data/energizedpower/recipe/crafting/stone_hammer.json -882762de9f2e9db993ff90f2522bd7912ab5c5fb data/energizedpower/recipe/stone_solidifier/blackstone.json -ebaf19ec0b3181407089c2ad8ffd3d03684c1c28 data/energizedpower/recipe/crafting/item_conveyor_belt_switch.json -2ece42d44e1c3b9e9a574cb14d92e5a92082cdcb data/energizedpower/recipe/crafting/fluid_pump.json -51284cff3cad43d6dc30589a7f1bf6a15bbd09c6 data/energizedpower/recipe/crafting/advanced_powered_furnace.json -c3e75d6bf73f217f9543b3d3770c5cd4307b5c94 data/energizedpower/advancement/recipes/crafting/diamond_hammer.json -927e31626c8c242364d0d0362b10971bce50dcdd data/energizedpower/recipe/growing/pitcher_plants_from_growing_pitcher_pod.json +7aab0604df7bb8c8775a4709fd2e41bb819d8751 data/energizedpower/recipe/crafting/stone_hammer.json +9e60c24a81c4dcbce45c2cdf9f876f0ec82e91b3 data/energizedpower/recipe/stone_solidifier/blackstone.json +772d62d0650ef3cf5b0809f711fa0cf72f2a33ed data/energizedpower/recipe/crafting/item_conveyor_belt_switch.json +15aecf79c9fe100f9289a144e6b8e55f8594e4c5 data/energizedpower/recipe/crafting/fluid_pump.json +21e551b42c9474b7998d941541379dc16335ee00 data/energizedpower/recipe/crafting/advanced_powered_furnace.json +3f39e9e0fabe1182b4e398399922cb7468228ad0 data/energizedpower/advancement/recipes/crafting/diamond_hammer.json +82ccd436a20b6469f44fb85eba509f63475bccab data/energizedpower/recipe/growing/pitcher_plants_from_growing_pitcher_pod.json ddd0ce6beed92941b600b8a74e8e6121cbcbc13c data/energizedpower/advancement/recipes/crafting/speed_upgrade_module_5.json -94bebcf1b66cc32029368f3e6654d1890ed4a328 data/energizedpower/recipe/metal_press/gold_wire.json -e9d3cc167655fc6821f73290a5f5dd2fdf13147a data/energizedpower/recipe/crafting/moon_light_upgrade_module_2.json -89dfa64dbd53a5d4799fd46d99f7e39377ca96b0 data/energizedpower/recipe/pulverizer/redstone_from_pulverizer_redstone_ores.json -ec61530c8acfb7e5e50400cc39369bb74f10863c data/energizedpower/recipe/heat_generator/energy_production_from_still_lava.json +108db2f98103a37632dc879b37e5790d85b98a87 data/energizedpower/recipe/metal_press/gold_wire.json +e65ac42f44471f2e8bc155bf9f7e42baeb4614f4 data/energizedpower/recipe/crafting/moon_light_upgrade_module_2.json +93ecc19f4ea4f5633d52636bf70410a1b1eb4762 data/energizedpower/recipe/pulverizer/redstone_from_pulverizer_redstone_ores.json +7563da4fda255f4f3cb7239c2382192158854c8c data/energizedpower/recipe/heat_generator/energy_production_from_still_lava.json 43051d5efc7f424754e08496c8b8d1a49f91b633 data/energizedpower/advancement/recipes/crafting/auto_crafter.json 51a836023f312f69cc402ea183a0e87f2b47f3ca data/energizedpower/advancement/recipes/crafting/fluid_filler.json -8c46095ebf2ce7ffa37630b09349a699d31642a6 data/energizedpower/recipe/sawmill/sticks_from_sawing_fishing_rod.json +8ff4d3830d52ab15abe2d7560aa20b4fde7db0fa data/energizedpower/recipe/sawmill/sticks_from_sawing_fishing_rod.json 27b6b7c35badfe23b843bdd0eaff1251176c3f1a data/energizedpower/advancement/recipes/crafting/stone_solidifier.json -c3f288799b66bdb0b6b297f0d0a73e97851d4ec5 data/energizedpower/recipe/crafting/advanced_machine_frame.json +ef4b60a0b37e057e68fb6f7f0d3dc0129aa95d14 data/energizedpower/recipe/crafting/advanced_machine_frame.json feb39673e6c395d1737427dbd70a39fcbb50f85d data/energizedpower/advancement/recipes/crafting/sawdust_from_sawdust_block.json -51d7ab04ed09c4c33e8654b0171bb57c355a9393 data/energizedpower/recipe/growing/melon_slices_from_growing_melon_seeds.json +6cb90d2c69f077456fd6a556a5985cd127ad6914 data/energizedpower/recipe/growing/melon_slices_from_growing_melon_seeds.json 565e544d4f9a66e6180275066c5c6a37999d4346 data/energizedpower/advancement/recipes/crafting/duration_upgrade_module_5.json -185953b10fa9b3896e803a51f89a1776de6f0a78 data/energizedpower/recipe/smelting/rod_press_mold.json -b2109cec6475b0e196b9f98f9a39d9e61f7ca3e7 data/energizedpower/recipe/crafting/battery_box_minecart.json -f62e92729e75f92ebc56557263f9e119a2450209 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_4.json -fd7a276c4aceff0cf857f65b3b860b85c5349a65 data/energizedpower/recipe/pulverizer/lapis_lazuli_from_pulverizer_lapis_ores.json +e1ed591bc8f5a3a59546b7368591ec0b558d90eb data/energizedpower/recipe/smelting/rod_press_mold.json +b96166bf8121d5da54465d7d06b6a16181f78d27 data/energizedpower/recipe/crafting/battery_box_minecart.json +86c67129e66184743319e1d5a701e904b977f0c2 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_4.json +3f64f60decdeb55a91d2767d4a0478fee053cd84 data/energizedpower/recipe/pulverizer/lapis_lazuli_from_pulverizer_lapis_ores.json 6a7414c6185cae2404e71b27fb7e9b5ea13477fc data/energizedpower/advancement/recipes/crafting/advanced_powered_furnace.json -d4c1af386945f85bd86945d990c701ba5257a5ac data/energizedpower/recipe/crafting/lv_transformer_3_to_3.json +c929b23340fe316df71594061a64b3fdb8103a00 data/energizedpower/recipe/crafting/lv_transformer_3_to_3.json 2d039da7e01c5008c57b00f6ce61b74d949eb4dd data/energizedpower/advancement/recipes/crafting/energized_power_book.json -aaeebc4c2c3f92ace1ec562f65b3ab8d793b7107 data/energizedpower/recipe/crafting/alloy_furnace.json -0f649addbca124519bb5b96d7d23abbed02e72ee data/energizedpower/recipe/crafting/item_conveyor_belt_from_leather.json -8addf6060bea456ea84d4a1c5fa4e52f877e21eb data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence.json -8e0bf46290c4bfb24d0a6f00efea9fc1fcc1d4e4 data/energizedpower/recipe/crafting/lv_transformer_n_to_1.json -0cea6650d4061921c84816087c65450473f8aaa8 data/energizedpower/recipe/crafting/sawdust_block.json +d5cff687be9d0075bed0b198ad5a3acbb004951e data/energizedpower/recipe/crafting/alloy_furnace.json +e24ed5d1b954d1fcfe5f11ecd6b15539108ffecd data/energizedpower/recipe/crafting/item_conveyor_belt_from_leather.json +30eaa4158c2f312f2d8941eb2b0d4ba830f471a2 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence.json +f0ab6bc0fe2d7da6914b9cd304b6479a51116931 data/energizedpower/recipe/crafting/lv_transformer_n_to_1.json +826fa45c9e29be04ef797e1bcd474b35827f6c8a data/energizedpower/recipe/crafting/sawdust_block.json 6bee64f8da51658d20e7d25fbc669faf8f4ecfd5 data/energizedpower/advancement/recipes/blasting/gold_ingot_from_blasting_gold_dust.json -c8bbf23a85a31968b6e4506783eaadc3ae3ce62f data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_logs.json +ef01656ba5e6bcd1c9e2f333367840a25a6062d6 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_logs.json fc7863823da11e07385e561720dfc4db71ab81cf data/energizedpower/advancement/recipes/crafting/battery_2.json 8fbcbdf06fec5e7e09321dc4d5dada8820b16ef1 data/energizedpower/advancement/recipes/crafting/extraction_depth_upgrade_module_4.json -ecf0c325e304e0cee0698ae9d77025c95fcade65 data/energizedpower/recipe/smelting/gear_press_mold.json -e8ee8ab49e5a475d6f36e190e0ce74d4c944cc29 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence.json +445b366f2e727a087b1335b918388de5e7b62ca4 data/energizedpower/recipe/smelting/gear_press_mold.json +249854b21b23e1e5da3e7013fda64995b1f67a80 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence.json 3999b9db69da913ad2382513e0e37ab628275f2f data/energizedpower/advancement/recipes/crafting/inventory_charger.json -080340f61138e6db01c3411e9ec09df1ab7f69ea data/energizedpower/recipe/fluid_transposer/pink_concrete.json +8b1cad8c3f9951731db3d8f137b96e2ccf13a1be data/energizedpower/recipe/fluid_transposer/pink_concrete.json bc318ad16de076a6de8aa179ffde8a5c9365957b data/energizedpower/advancement/recipes/crafting/advanced_pulverizer.json -d149152e11a5ce85925e2545178cda0e2b58f3d5 data/energizedpower/recipe/crafting/duration_upgrade_module_6.json -b9016d3046385243e43b3adefae374a9fd145392 data/energizedpower/recipe/filtration_plant/gold_ore_filtration.json -5ddbe42ab983900be87acb4fd3455b013d52619a data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_pressure_plate.json +8d5620f1886feae0fb28267e58f9208a00f80dd2 data/energizedpower/recipe/crafting/duration_upgrade_module_6.json +d2860ac3b98ce6cac243dcf6ae086db80909a22b data/energizedpower/recipe/filtration_plant/gold_ore_filtration.json +c2966404bb90194fbfd16cab2ac08bfbec3de5ac data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_pressure_plate.json 2efc56016ab810ce41d4cb73b3674bab9402ed90 data/energizedpower/advancement/recipes/crafting/copper_cable_using_wire.json -f83719f4381d706b012699b9e5ee29b7df5f40d9 data/energizedpower/recipe/fluid_transposer/purple_concrete.json -045c17f5cae4253bc0b4fb8ddf2ac401bb658b7e data/energizedpower/recipe/crafting/copper_cable.json -078576af46b6ca754384acf3bcd1692a407f2361 data/energizedpower/recipe/crafting/energized_copper_cable.json -38079d57354d7e3a9daeb73a5680ae1b6713dd79 data/energizedpower/recipe/crafting/gold_cable.json -61db9a25cfb3a661b0548d3ba180f56eda2b147b data/energizedpower/recipe/growing/orange_tulips_from_growing_orange_tulip.json -b4100448ed37be3037f6bed00d1287ff28795178 data/energizedpower/recipe/crafting/basic_circuit.json +8d7ba0dfa634b6e99faec0a51a657d2b7b78ee65 data/energizedpower/recipe/fluid_transposer/purple_concrete.json +ae34721766c00b083597eca555ea4b3519e7359c data/energizedpower/recipe/crafting/copper_cable.json +aef98747d6189964469a991055d23f649dba42f6 data/energizedpower/recipe/crafting/energized_copper_cable.json +540df5bc30d172ef97e8b52f703978b736744bb1 data/energizedpower/recipe/crafting/gold_cable.json +3efd01b3b5b0e75a85dae4524fba59e18a2dc819 data/energizedpower/recipe/growing/orange_tulips_from_growing_orange_tulip.json +92a1eb31e11eff2f204921548bef9eb275097b72 data/energizedpower/recipe/crafting/basic_circuit.json bf70500252c8d93622f52a6b762c9e273b04be5b data/energizedpower/advancement/recipes/crafting/item_conveyor_belt_sorter.json -cfc501b58b9b5ea790afa7be837b660123002287 data/energizedpower/recipe/crafting/metal_press.json -3c2a733a687e31246310bd1beefee92e2983a1b7 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_pressure_plate.json -7d3a7a17abd57a797edba9248b038960f3901d13 data/energizedpower/recipe/growing/blue_orchids_from_growing_blue_orchid.json -dec144bc1c682640cfdabb225cd4d7febffd8b12 data/energizedpower/recipe/crafting/gold_wire.json -faa1514cb3b808175a546e5a0c641e1a41d4bef2 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence_gate.json +6c37bfc629cb0d1f3e7b4a558ec7d494e6c25df8 data/energizedpower/recipe/crafting/metal_press.json +031801b83f5ea89492b8807568e722601b2f2d86 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_pressure_plate.json +ed8aaa3d52bbd87adb10ab0330604fc4355f7217 data/energizedpower/recipe/growing/blue_orchids_from_growing_blue_orchid.json +b43c151585fa03bac6616faa984270095376f592 data/energizedpower/recipe/crafting/gold_wire.json +2274d4eb8de63f2a06b25a368b7ef4b455f8a98e data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence_gate.json b75305736c9f42ef5e7d0130833eb4fcba35fc0f data/energizedpower/advancement/recipes/crafting/energy_capacity_upgrade_module_4.json 88494d129e13c924a03c41a1e35e5a1a9ef5c78b data/energizedpower/advancement/recipes/crafting/advanced_battery_box_minecart.json -4768303447c8d7146da1f5e8a86d36aa7e05d8bb data/energizedpower/recipe/crafting/advanced_auto_crafter.json -17e9d5d62cd53651329145bc5901eb6655ffeab8 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_logs.json -bf7af6b2f0543e35495cc6f8bbe9c1a4a227ed8d data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_trapdoor.json -62728a25777fd01921fdd7ffe4d8e3c7f06e8c98 data/energizedpower/recipe/crafting/solar_panel_1.json +37ee4d9058da59b69624f170afe1cb066722345d data/energizedpower/recipe/crafting/advanced_auto_crafter.json +09d43fa0bdbae6b9943aa6842f6ee95e221e7b2a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_logs.json +4b570b168fb09b49283d9960bf5f43214becf25b data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_trapdoor.json +11724000932c8c819bf1d4b46fdd8d8821dd4d47 data/energizedpower/recipe/crafting/solar_panel_1.json +7ed5566019122ca4d1cd1843af7e7b046f40cc78 data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_slabs.json edfae176e922d72f0ecb98c7491e2a2bb6f326a3 data/energizedpower/advancement/recipes/crafting/moon_light_upgrade_module_2.json 7be4602478a884e536cbf09181c3fe05cc5b576e data/energizedpower/advancement/recipes/crafting/tin_nugget.json bffd865d7d74a64cbf974a303773fc0289ebcab4 data/energizedpower/advancement/recipes/crafting/advanced_minecart_charger.json -e1ef49f37b483f13bd5fc1061e79e07fe08dfdcb data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ores.json -7483fd6588e3a25d727a23002fe4f93290dc1f6f data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hoe.json -34480685905b0477444d353740f251f6b99abcbe data/energizedpower/recipe/growing/white_tulips_from_growing_white_tulip.json -6d1c28dae3cff93b0633cafdf03ec583645c3281 data/energizedpower/recipe/crafting/range_upgrade_module_1.json -69875432382d8e8e177fb750df41201d2fb17903 data/energizedpower/recipe/sawmill/sticks_from_sawing_ladder.json -7829ebd8ceb58ca1f40299a2bf7a93023194c408 data/energizedpower/recipe/crafting/silicon_block.json +1078a56e450a9ae9fd39304445ae7a1bb942b6f5 data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ores.json +3c5afd0a2c8f66d45db8c0932163c043a1c56346 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hoe.json +34cf2ca875f9d4a27b3fcc4e069ac1f21d6eb9b4 data/energizedpower/recipe/growing/white_tulips_from_growing_white_tulip.json +4c9cfd5d5153a329ba3c4bf37bc06677cbd80cc5 data/energizedpower/recipe/crafting/range_upgrade_module_1.json +8237900b282bb98ea786e72e3778c75c484c72d1 data/energizedpower/recipe/sawmill/sticks_from_sawing_ladder.json +af1564efa89c74b0e95cc5a241c6131c54aeaf9c data/energizedpower/recipe/crafting/silicon_block.json 48f929d1f5307582430b6072d7444c6f69ae5f78 data/energizedpower/advancement/recipes/crafting/crusher.json -1bbaf7e958c23993456b2a4a3a63d481a0208e7f data/energizedpower/recipe/crafting/advanced_pulverizer.json +7164204eee7da1f05174abfe6d2f89712916ac03 data/energizedpower/recipe/crafting/advanced_pulverizer.json 558e6248d8b65918b93ccf5a8a4e502696f84745 data/energizedpower/advancement/recipes/crafting/fluid_transposer.json -b1be36eeb39fb37a82ebee91189374026bc2246a data/energizedpower/recipe/crafting/reinforced_advanced_upgrade_module.json -7aa6c2e855e76f5af3b09a255e34007eb567b4a7 data/energizedpower/recipe/pulverizer/diamond_from_pulverizer_diamond_ores.json -21994ccdddca46d5daebf7900c14e93896705145 data/energizedpower/recipe/growing/fertilizer/basic_fertilizer.json -8b30c0b214707f960004256f35863bcf0ae5d7bf data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_sign.json -c7f12a959035ed0e53ce579f21c2530e4e6980d0 data/energizedpower/recipe/smelting/copper_ingot_from_smelting_copper_dust.json +a6f804fce5a4230877df40c48572e8d8bb7485e6 data/energizedpower/recipe/crafting/reinforced_advanced_upgrade_module.json +69807032765d3bb2f1338d5ffbc56f1209c8c0a1 data/energizedpower/recipe/pulverizer/diamond_from_pulverizer_diamond_ores.json +0460abd264cf53db83e91655396cfde5eeb0f0a5 data/energizedpower/recipe/growing/fertilizer/basic_fertilizer.json +7aded38d090b199daf9bd3f14edb2cb092d0e832 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_sign.json +f31120498272806e7cc529cb52fae7ea17d88777 data/energizedpower/recipe/smelting/copper_ingot_from_smelting_copper_dust.json e7509ee7d8c78ea3c81f087d0c870bb251d1c0f4 data/energizedpower/advancement/recipes/crafting/tin_plate.json edfa1ff08264b5aed6c6e6c0cce63364a6fa1ce3 data/energizedpower/advancement/recipes/crafting/energy_efficiency_upgrade_module_2.json 52fc6e01ce93655c8cfa23ce9ba0f9a81bee1020 data/energizedpower/advancement/recipes/crafting/fluid_tank_small.json -a843ee7b88af0278a45f31a3a31256f3400c1ef8 data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_block.json -a124b79db0999287ee667ad492e9ac74dcd69492 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_axe.json -4280537a459fba61f53ad140cef10f22dc5d13fb data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_sign.json -81dbc9f5e21cf47807ef0720a7b3b85f31d8e9ef data/energizedpower/recipe/crafting/diamond_hammer.json -0d9ae44034fd65f1e701a160796d7143e0d08d40 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_boat.json -dd60a99790c9c4ebe4f6b0c9ee04cbded7b83880 data/energizedpower/recipe/growing/poppies_from_growing_poppy.json -fd08719565800b7565e3e1c50f505cba41ded085 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_blocks.json -f00f46fbd6decf220002b90e6311d9510f1b4834 data/energizedpower/recipe/crafting/energized_power_book.json -a1a1f9b7f380a053f7243c66be2512fb2a26e2f6 data/energizedpower/recipe/crafting/mv_transformer_1_to_n.json -bea4a31c5e2f9789aa96bd91e37f5ed3da1d83d6 data/energizedpower/recipe/crafting/tin_ingot_from_nuggets.json +d6058febc879c235f880fd6f3defb936666203c1 data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_block.json +89e6952cac789fc5cf3f5713e2d7766d6770f94a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_axe.json +0b590fa3a2cd3c55d3bfead1d76d0da642e6b0bc data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_sign.json +48be105236d744d8ba628d0197267d6d45e1807b data/energizedpower/recipe/crafting/diamond_hammer.json +c238119c281f44dcc5f8d4e07398a2d417e8fd84 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_boat.json +1b928c1a5e176b92cea392c2ddac2c399a1224e2 data/energizedpower/recipe/growing/poppies_from_growing_poppy.json +c6463171686793151fd744272e7e4887b0c0454d data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_blocks.json +95423da149be378a54a470cb8d263197bfc66776 data/energizedpower/recipe/crafting/energized_power_book.json +274b6901ede12765e944de277cf5b949d2089535 data/energizedpower/recipe/crafting/mv_transformer_1_to_n.json +f5fdf5f4713d8b3e0883c5f2b010654eed62d267 data/energizedpower/recipe/crafting/tin_ingot_from_nuggets.json a546d68fc3068cdd4f1d2dcad0bf807b01aa80a2 data/energizedpower/advancement/recipes/crafting/solar_panel_4.json e20d87f19e39354778474b04a6cc472237356847 data/energizedpower/advancement/recipes/crafting/energy_capacity_upgrade_module_2.json -d767b7c1901917472e52609f30b2e04bb70c67e2 data/energizedpower/recipe/crafting/good_fertilizer.json -8c32c2c8f63e93d0c5feddae1ee525304a1773b7 data/energizedpower/recipe/fluid_transposer/green_concrete.json -dbd1693bfaaaac25a4d7759a835fd9f7a18dd368 data/energizedpower/recipe/crafting/item_conveyor_belt_loader.json -f4daf2eda81e196ef922ff2d457ab1b8f4cc060c data/energizedpower/recipe/crafting/duration_upgrade_module_1.json -ae2b3058b6d8534656e3f6744d2de83fc5cd865a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_lectern.json -9305ca13d436583a9c4e873bbbf09b7f0c3e8990 data/energizedpower/recipe/stone_solidifier/granite.json -764d6e56dd0a91133f6e078e3b05a1af5f72044e data/energizedpower/recipe/crafting/fluid_tank_large.json +c1ccf3e90ce216e3d1fe7638cb4d7d27cb30a959 data/energizedpower/recipe/crafting/good_fertilizer.json +a0c7864b56cbaa78ad47d96e25570dd846a4e652 data/energizedpower/recipe/fluid_transposer/green_concrete.json +655476bbdfc5ffb381cc0ae9721035ab2a0b26f9 data/energizedpower/recipe/crafting/item_conveyor_belt_loader.json +bf60fbff10a42d0c8ac2b409088aa28b0cde5709 data/energizedpower/recipe/crafting/duration_upgrade_module_1.json +adfb64ac8d752d8fd44984f69912d67741aae25f data/energizedpower/recipe/sawmill/oak_planks_from_sawing_lectern.json +f2dd064ba6d7a3017c4a8508142e64746df486b6 data/energizedpower/recipe/stone_solidifier/granite.json +4094bdfdc18a6af4659fcef8a689b24be5bdb6b2 data/energizedpower/recipe/crafting/fluid_tank_large.json e3ff72e6cf2e79512fe94564715abe60fcef4222 data/energizedpower/advancement/recipes/blasting/tin_ingot_from_blasting_raw_tin.json -5ba028ed73339b79ff5794f94c68bc32e7b39f09 data/energizedpower/recipe/assembling/teleporter_processing_unit.json -b0cf29616e8212ac03be483036bf004ee9f2ee79 data/energizedpower/advancement/recipes/crafting/wooden_hammer.json +d2feb1843b59a4f41cf9db6fb210e188c6050f3d data/energizedpower/recipe/assembling/teleporter_processing_unit.json +0dea4e4242ba48841522452a7bda147b76964aeb data/energizedpower/advancement/recipes/crafting/wooden_hammer.json dd39dc01a6a025a66d1181fb7de0778f6a457bbb data/energizedpower/advancement/recipes/crafting/extraction_depth_upgrade_module_1.json -cb77fe134978aad8dc16774124109c9f5d530b83 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_crafting_table.json +9d6782a075dadb8c6696ee11f5e449a7401a1270 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_crafting_table.json 36d994842cd0e3bbfa8f7bf01bf24818cd104e70 data/energizedpower/advancement/recipes/smithing/netherite_hammer.json -d72dc627b1269cf70882bac44c041b70eb415744 data/energizedpower/recipe/assembling/crystal_matrix.json +97e89526b783002f6809227d97235183bc175fec data/energizedpower/recipe/assembling/crystal_matrix.json 8148ea57fe5bf422fa62cb0e7e2646b933070b8c data/energizedpower/advancement/recipes/smelting/charcoal_from_smelting_sawdust_block.json -899bc0c384ac46fe4f25899d6817c0035c650fc9 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_door.json -cc1a88ba6493addd3ae0ac507dd54d8f9d08fc09 data/energizedpower/recipe/sawmill/sticks_from_sawing_bow.json +b12d6a6a8fc4218f9002515f4f73fe4498ba9e0f data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_door.json +b7724b84d3cb814c74fff1be7038a0abcd820ea6 data/energizedpower/recipe/sawmill/sticks_from_sawing_bow.json cd557376b8d36670ef6a6b1a9c580179aa5c1c6b data/energizedpower/advancement/recipes/crafting/saw_blade.json 208b63b07b92c666c04d2b4189240181fccfcfd4 data/energizedpower/advancement/recipes/smelting/gold_ingot_from_smelting_gold_dust.json -57c4c30a252c760fe71a831dfce26a35f8111fe7 data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron_blocks.json +bc4b82ef30b1c3b96be54b3a226e8556c8a14398 data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron_blocks.json ca4b870fb2699ec1fe2ba7c799656bde0b7ccdda data/energizedpower/advancement/recipes/crafting/solar_panel_6.json -1546a057236b6323b889841797c627bc2211a850 data/energizedpower/recipe/crafting/block_placer.json -0f191d17abd5416cd4c5a76d7600bd266204e837 data/energizedpower/recipe/crafting/duration_upgrade_module_3.json -eeed14aa870c76c06a9775c427598a940d4bd90b data/energizedpower/recipe/growing/torchflowers_from_growing_torchflower_seeds.json -37a884da55794e172b84b2c1768dbebc9c342681 data/energizedpower/recipe/crafting/advanced_charger.json +610808d040ac5372bb1e5d42dd1d4808efa76c56 data/energizedpower/recipe/crafting/block_placer.json +e277137157b84bafe2d157f02b705332f738395d data/energizedpower/recipe/crafting/duration_upgrade_module_3.json +7c055740946b78ee4ac41e80b2acff55f1091bcf data/energizedpower/recipe/growing/torchflowers_from_growing_torchflower_seeds.json +265e0f3da54ca61d88f8b8fb0717424ab58e4ab9 data/energizedpower/recipe/crafting/advanced_charger.json b4c6ec96f6084acbfc2300acc10aca6e3459c4cc data/energizedpower/advancement/recipes/crafting/advanced_uncharger.json -9a6c21b5dcd6f32841dda8608103036c99673acb data/energizedpower/recipe/sawmill/sticks_from_sawing_slabs.json -ea8c0683b22f62e833da79706c43501bfea34803 data/energizedpower/recipe/crusher/granite_from_crushing_polished_granite.json -55a514b5874a9b08397d593fc42a5d60be5b0bf7 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_boat.json -b76abb9ee9a4b473196b2a256df92c734f51adaf data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chiseled_bookshelf.json -b6f45e7fca41c36971938f2ea4c839d9b540d4c3 data/energizedpower/recipe/crafting/speed_upgrade_module_1.json -8ba02e22b47831f21db5a6b768a99c6983cb536f data/energizedpower/recipe/crafting/solar_panel_6.json -6e1f2df02d232aba761a2bbd3036f6a6bb080f49 data/energizedpower/recipe/crafting/silicon_from_silicon_block.json -37ebc6a2e394031a676f6935de00416ad14560cf data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ingots.json -5bf0d61ae45b5087e2ea346f5395f59f7d7ed2c0 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_logs.json -af487fd510312f3f192fa8cc181e0f6b274fcb5f data/energizedpower/recipe/crafting/assembling_machine.json -924b1ad88ebfc3284b9f6e791b36291b6cc589d2 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_trapdoor.json -59015de2c23371e20e42e9808ebb7f7e39217697 data/energizedpower/recipe/crafting/wooden_hammer.json -3643a3673357414115a953771b1c6ca2cbd1db09 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold.json -4ce98ea8185e6240978c10af1f2d791ae6cd3d2e data/energizedpower/recipe/crafting/range_upgrade_module_3.json +eb731a4d4bae8a3ca888b44c019b7991f7738159 data/energizedpower/recipe/sawmill/sticks_from_sawing_slabs.json +6bcc2907d492cf3588da4a66b89c04659e2c22b1 data/energizedpower/recipe/crusher/granite_from_crushing_polished_granite.json +7a4f5fc7d4b7ecc14421219ce355cd651958f685 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_boat.json +97f17d5357f7af4eb2df6bcfc668534fe9a8430e data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chiseled_bookshelf.json +50c4959c54290da9cc2da514433479b63b8e62e2 data/energizedpower/recipe/crafting/speed_upgrade_module_1.json +151e9e3a8a25a5bc9b6098729a3a3869382ce9e4 data/energizedpower/recipe/crafting/solar_panel_6.json +b6f6bc77db749d6004364e5b8a3c024598e6bfea data/energizedpower/recipe/crafting/silicon_from_silicon_block.json +9773fec9f6dab3fedda1cfbda2bfbc3b291d7b2f data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ingots.json +aa0868ea2b9410c44a3cd4dcaeaf0c6a0a760f34 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_logs.json +055102b3b65ea1a632914124e35e2d78ef7b5f76 data/energizedpower/recipe/crafting/assembling_machine.json +a018ff092cb050aea000c2102045a4c256d63bb6 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_trapdoor.json +d5d9a60ffad317ee6e6436f44d1ec8e63e6cf573 data/energizedpower/recipe/crafting/wooden_hammer.json +4f8448f83034e022f7053a53abb4c6aa0f2a1473 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold.json +5944d4458047ac6fbadc7135d9c628439d0df597 data/energizedpower/recipe/crafting/range_upgrade_module_3.json cae033152c9d656f163dcf003990be3fe65d510a data/energizedpower/advancement/recipes/crafting/copper_wire.json -02c55a6164ad06a82192e580dbda1a27d8fbc55d data/energizedpower/recipe/growing/pink_petals_from_growing_pink_petals.json +dbb10fb5fa4e0a733162aff5c8da8678bd0358b1 data/energizedpower/recipe/growing/pink_petals_from_growing_pink_petals.json 1b6f92b4a85101b739606a2fdd9eb98ab1d6548a data/energizedpower/advancement/recipes/crafting/battery_box_minecart.json -25e3ef4cac03e34d4037d870e4b30025e259e284 data/energizedpower/recipe/sawmill/sticks_from_sawing_bowl.json -beb3141ec1579467c4574fbe7b18f6d889916a9f data/energizedpower/recipe/smelting/charcoal_from_smelting_sawdust_block.json -210de4176fefc00cbc1739d48dfdb3945c1d279c data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_door.json +0ad33bb93a148cd37fb8e74971f3525f73f72c88 data/energizedpower/recipe/sawmill/sticks_from_sawing_bowl.json +422332712eb84996df0f4e7506f94a305e08edb3 data/energizedpower/recipe/smelting/charcoal_from_smelting_sawdust_block.json +d53d75184e7f6f89a31cb9b34c2ba9bff1cf012b data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_door.json 945d19330af7b0926233f21787468372dea0c71c data/energizedpower/advancement/recipes/crafting/smoker_upgrade_module.json -0afb05abb0a3f30929f89b1deaf51fd67f83ced5 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_2.json +c2b1ceedf58a9ed08189f71b434113f7f78cf1a0 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_2.json 0988604d58cdaf14a564099092159435e26bc871 data/energizedpower/advancement/recipes/smelting/wire_press_mold.json -46a58628bc6e9d1cbef1313e3338cd999269111c data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_sign.json -58c2d2b34724fb26d6cd26292858f655c1308dcd data/energizedpower/recipe/smelting/tin_ingot_from_smelting_raw_tin.json -ec7e8c526b5b8030d14422ab61d3db922050d44e data/energizedpower/recipe/pulverizer/charcoal_dust_from_pulverizer_charcoal.json -ab852a810eae9b8bc1919fbb65e0513c60503677 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_sign.json -7dcf27930eec7c808943875a4795359fa59470f7 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_door.json -df22825179ed56b1a17dde2069c62514255eca02 data/energizedpower/recipe/crafting/tin_cable_using_wire.json -347c8aed3906ce6ea290797a576e74c476dc3f73 data/energizedpower/recipe/smelting/wire_press_mold.json -5b0208f8d9bf788689150d2f9922d9714ce46eef data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_chest_boat.json +7c0f04a86317796753dc04edcd632f23cf490ed5 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_sign.json +5990762fe1e2954bb206b5d718166bc89a8542fc data/energizedpower/recipe/smelting/tin_ingot_from_smelting_raw_tin.json +eeb56a2e25e2dbb74af7e2b8b45954521ace6123 data/energizedpower/recipe/pulverizer/charcoal_dust_from_pulverizer_charcoal.json +5b8da25d4a63dcb9601d92292e1c3f67f8fe3fda data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_sign.json +08ab5d6872b920069000f8c34f978c50f1cf1279 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_door.json +04539d004e83e2b4123e5a64a6293b9f97cae638 data/energizedpower/recipe/crafting/tin_cable_using_wire.json +202d698f7a9919ab11622d3aaff70d9c4cf26b2c data/energizedpower/recipe/smelting/wire_press_mold.json +2204f934d2e458fed0288f99fda2a1d35fd6554e data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_chest_boat.json 22e81997e5e6e5a559e0a40b339709e6581cf7da data/energizedpower/advancement/recipes/crafting/copper_cable.json -518e03be7c0a6ce5954ea312da0cfebd66a1c715 data/energizedpower/recipe/crafting/copper_wire.json -4a32abeab3fe6c6bf64e6b43864b770e8ab92b28 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence.json -9758c063f0bd7f1969ace06357c7405dd084da8c data/energizedpower/recipe/fluid_transposer/orange_concrete.json +8637a77bf620c2ccb3274edcd899922f994cdef4 data/energizedpower/recipe/crafting/copper_wire.json +bf2a05c216d5254a2179444f731cb4a5a21ef592 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence.json +e92803863e8c1f7ba3559949e4bc039e2227dc55 data/energizedpower/recipe/fluid_transposer/orange_concrete.json 0bcbb65e9ffdd960c79747c2046114525fac99d4 data/energizedpower/advancement/recipes/crafting/ehv_transformer_3_to_3.json -c6a14ac5d2cb2cae541e8b9caabf17701c15a5ce data/energizedpower/recipe/fluid_transposer/light_gray_concrete.json +471f639a1c21f668be5566c517dbf116474930eb data/energizedpower/recipe/fluid_transposer/light_gray_concrete.json 125d0b562adaef7171e8e3aa369382af378abbb7 data/energizedpower/advancement/recipes/crafting/basic_solar_cell.json 9355abc8392b3dee474553f2326f97870191fc3f data/energizedpower/advancement/recipes/crafting/crystal_growth_chamber.json 5ff24177a6edca6401f97317034e0d9ee8b0b64e data/energizedpower/advancement/recipes/crafting/iron_plate.json 4d1eb58847bfa7731ede820db964e827b1909fe1 data/energizedpower/advancement/recipes/crafting/block_placer.json 867c78e5e6bed8c6443d91ba2af949dbcfd59949 data/energizedpower/advancement/recipes/crafting/mv_transformer_3_to_3.json -ca13e47fbcb62001e182ed827a7d1a47aa8a6a52 data/energizedpower/recipe/crafting/battery_3.json -b76540c396ea98c6d975de60fa891dacf65a2978 data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_ores.json -5a83aff5b8c3d28bc8ab25dbe8096b9dfbd1f036 data/energizedpower/recipe/growing/pink_tulips_from_growing_pink_tulip.json -965f8f8a52bb8b9ebfbdd83b7247f8076a069a50 data/energizedpower/recipe/blasting/silicon_from_blasting_nether_quartz.json -ca0c7197caeaccb42945f87bb24b6f3f60fb2398 data/energizedpower/recipe/press_mold_maker/raw_gear_press_mold.json -5a6b63fbabf0d4cb9e2c1dd8da4667bb482fae32 data/energizedpower/recipe/sawmill/sticks_from_sawing_planks.json +cfbbc3036ce056905c09daf28a6227f9348fbb3d data/energizedpower/recipe/crafting/battery_3.json +36a574072715103e0697f2ca4708fccc1a9be4f6 data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_ores.json +fcd3a81ee8dfb1fe27d3d5e189cf4489102e888f data/energizedpower/recipe/growing/pink_tulips_from_growing_pink_tulip.json +304a5c65ede17f38fb7ce85b0d9dcc79745f5519 data/energizedpower/recipe/blasting/silicon_from_blasting_nether_quartz.json +fad18b419c25b8e2e471c441f4439cbb42f848f4 data/energizedpower/recipe/press_mold_maker/raw_gear_press_mold.json +b8a3d6ea0c7a20c69276ea7e84cb51e77688a47b data/energizedpower/recipe/sawmill/sticks_from_sawing_planks.json 743ed453b6be4cd9cd0ba09a816e00b10d1a2a9a data/energizedpower/advancement/recipes/crafting/metal_press.json d471dd479ab5daf0ce4a071efbd5be3e21d6ebee data/energizedpower/advancement/recipes/crafting/heat_generator.json -ac68f1d1109571eae340a570c0e1890d786b13ae data/energizedpower/recipe/fluid_transposer/red_concrete.json -e92e49d62ff300df9589702cf30f02cc0eecb220 data/energizedpower/recipe/crafting/ehv_transformer_1_to_n.json +1d5511156d6d3ea9439274ffe3867673a567c59a data/energizedpower/recipe/fluid_transposer/red_concrete.json +2658f232a6712413bd339a376473cc8495811151 data/energizedpower/recipe/crafting/ehv_transformer_1_to_n.json d6d4be61cf048db68da77973b6213d33b830693c data/energizedpower/advancement/recipes/crafting/basic_fertilizer.json -3686693274b73d70aea1734fe737803a74764fcb data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_3.json -b29f1e94e2cd791a6871f8e41cb20d7395b512a2 data/energizedpower/recipe/crafting/gold_plate.json -d2a472bb5560a231963dbb014276b28b24907afd data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate.json -4b9c8a3a12425c9de3f24852ad4a0637bb752b75 data/energizedpower/recipe/crusher/blackstone_from_crushing_blackstone_variants.json -76a0669f9ade464d22d03e0ae4d45364d44be11c data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_chest_boat.json -ab5ccd543d2cdc6a4c5e384b0ead4b57e723a8b6 data/energizedpower/recipe/growing/oxeye_daisies_from_growing_oxeye_daisy.json +625037641d4a2655a452053e9270767eac4fea83 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_3.json +478154e7f72226f43f7dc7a78c34965ecf87d5eb data/energizedpower/recipe/crafting/gold_plate.json +ce7592c84e840556007bb884088972cfd0dda7fd data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate.json +2bfc6d54f693f770d1150b3d6b09cbd784a41f0c data/energizedpower/recipe/crusher/blackstone_from_crushing_blackstone_variants.json +8613a067f8e99f98a6392e104420187ab4a2bb1f data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_chest_boat.json +224039e2af168b44fafb4cbd75a6a6c90405b764 data/energizedpower/recipe/growing/oxeye_daisies_from_growing_oxeye_daisy.json ad3161c8fb5e1b6b063bd17d7aacdadce7a186c4 data/energizedpower/advancement/recipes/crafting/extraction_depth_upgrade_module_5.json 7886bf7fcef1a83f70a647bbc09d9aa2a8e7d4e4 data/energizedpower/advancement/recipes/crafting/range_upgrade_module_2.json 87e9e430ff17ed3f595e868f3c274acfa8899590 data/energizedpower/advancement/recipes/crafting/reinforced_advanced_machine_frame.json -7e88a18436124f6b0da280692f463b619225c04f data/energizedpower/recipe/crafting/mv_transformer_n_to_1.json -0ef3970e4370683d1dba881eac1ff264f0da2a4f data/energizedpower/recipe/assembling/reinforced_advanced_solar_cell.json -81762e4f8f3a3f078bc448caeb8e2ae6f890f302 data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_ingot.json +063045a4200e4e03c02b720b8a33345ca92e2e0f data/energizedpower/recipe/crafting/mv_transformer_n_to_1.json +5021cdba328c58f077fdda8c79febfc5b6bd73e1 data/energizedpower/recipe/assembling/reinforced_advanced_solar_cell.json +17b824e2c8ae41503b831538eddfa6c91d1009b6 data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_ingot.json b34f9817ff6b71d859d6502f1a9445175024cd67 data/energizedpower/advancement/recipes/crafting/energized_gold_cable_using_wire.json 97f90caab52437fc09d7a0dfa3399e81db9c0c99 data/energizedpower/advancement/recipes/crafting/speed_upgrade_module_4.json 896fcc5a6453c75410bf1831ac796e9510018787 data/energizedpower/advancement/recipes/crafting/teleporter.json -a2ac15efbfb1443e7cbcf1887302c13b3f2acdf6 data/energizedpower/recipe/growing/beetroots_from_growing_beetroot_seeds.json +06e86f95dd2da62491e5a03205f02a821e0de75f data/energizedpower/recipe/growing/beetroots_from_growing_beetroot_seeds.json 3569b17834afe87a84d94262a5dead905f79731c data/energizedpower/advancement/recipes/crafting/charger.json -1ac7afc660311255cf7feffb8a500b9743915945 data/energizedpower/recipe/crafting/copper_cable_using_wire.json -f264792af9b7f68e1060f40ff5faf3d4ab12d97f data/energizedpower/recipe/charger/energized_copper_ingot.json +592418fd34708ca66bdbd46366f7219a59b31875 data/energizedpower/recipe/crafting/copper_cable_using_wire.json +57d304c03a53d7957d0417725ab1ea33d395c184 data/energizedpower/recipe/charger/energized_copper_ingot.json 9b634be8afc5f44d5e203c4df02598ab9d2b61b3 data/energizedpower/advancement/recipes/crafting/energizer.json -066187013ab4b77ab15ea61bd0504f1a3e3df118 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_1.json -10f064b9a2962de7914601f4b2ff17bb2e426e4a data/energizedpower/recipe/crusher/basalt_from_crushing_basalt_variants.json -66e2fb4f614ed32e0651a2d27e2a7f8a26e2ebf2 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence.json -536bfba9b3ea54fdbe69afe64ec64cdf1a0c198a data/energizedpower/recipe/thermal_generator/energy_production_from_lava.json -61c7d39a950cdd9f48c1ed49d8277c3bded9d4ab data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence_gate.json -d535b337cc73995f983688830a098dd9acd43613 data/energizedpower/recipe/crafting/moon_light_upgrade_module_3.json +b3401e5ae264f6d3994a337f434921d1a9020a49 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_1.json +0aa61f21695d08612d07978828802414d6416348 data/energizedpower/recipe/crusher/basalt_from_crushing_basalt_variants.json +867e7167a690f8b9d46772f0882cb87b7c6ad46b data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence.json +4d1873e781a2d5d29588a8597c8f77adac5aef39 data/energizedpower/recipe/thermal_generator/energy_production_from_lava.json +3a6e94252b9d9f25c2681b9ecc4f9a678569be88 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence_gate.json +6d5c6b344853fcd78969f446a36a13191fa20544 data/energizedpower/recipe/crafting/moon_light_upgrade_module_3.json f5fd8af35159efe1686b26a3a066c8336990cb1a data/energizedpower/advancement/recipes/blasting/tin_ingot_from_blasting_tin_dust.json 52dba76331de1552ba568372838fb77d5c930ba0 data/energizedpower/advancement/recipes/crafting/battery_5.json -7806a748629fe06c8943c819de4647c8fb79c791 data/energizedpower/recipe/crafting/plant_growth_chamber.json -2c19c6b21701eae09264c0918ea5985a3f53d122 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_door.json -12dc3bdacae349546d7ee3e5a70b44334fc24c31 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_barrel.json +f20d42aabf266a3d43cb4ebab4f2b1152ebf098c data/energizedpower/recipe/crafting/plant_growth_chamber.json +6f318ef284764791254d452699eb5ec7b1df16ab data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_door.json +ce04ec6d4cc5054a54e1f3a175362fe5138c940b data/energizedpower/recipe/sawmill/oak_planks_from_sawing_barrel.json 4514f7b726dacae6f26e4bd0c9d4ec3c1ca3f4bb data/energizedpower/advancement/recipes/crafting/duration_upgrade_module_4.json 73c48a77cbc79e16c6486b8e7fdcfb494e1c7deb data/energizedpower/advancement/recipes/crafting/stone_hammer.json -8b9f69ba8e3c18ae43876073097187dec46418d7 data/energizedpower/recipe/crafting/compressor.json -ff335e8b73bb83e23f932b82d855f863ab14b184 data/energizedpower/recipe/growing/fertilizer/bone_meal.json -a1ef8749f7203249ee206c9e08234dbdb4d9fcac data/energizedpower/recipe/blasting/tin_ingot_from_blasting_raw_tin.json +59aad3f441f1eaa45b23587fe16f133d68c76fc8 data/energizedpower/recipe/crafting/compressor.json +77743b83f06b1b5f6080465529b11c228426603a data/energizedpower/recipe/growing/fertilizer/bone_meal.json +1f04ac4e2b119327e7744bd11fcb2eb9d53f1e55 data/energizedpower/recipe/blasting/tin_ingot_from_blasting_raw_tin.json b5a16bf3cb0dd8a43768e2bfbc98a0beba481a8a data/energizedpower/advancement/recipes/crafting/energized_gold_cable.json -3662da2e235f9496ca387558b7497b71561912f2 data/energizedpower/recipe/crusher/mossy_cobblestone_from_crushing_mossy_stone_bricks.json -f41a97b56ff38d517b91cd086d35c6767fd707c0 data/energizedpower/recipe/smelting/iron_nugget_from_smelting_iron_hammer.json +79946b430317897c0d56b8581856168f78e045f7 data/energizedpower/recipe/crusher/mossy_cobblestone_from_crushing_mossy_stone_bricks.json +7ccf712a0bc8ad0467e8fafdf2c64dc2a5bbadd4 data/energizedpower/recipe/smelting/iron_nugget_from_smelting_iron_hammer.json 3d0feb77fb7b5c731c08df4931d9985b20a4a218 data/energizedpower/advancement/recipes/smelting/tin_ingot_from_smelting_raw_tin.json 385edafd3887260acfd8c958301f55974fc03792 data/energizedpower/advancement/recipes/crafting/assembling_machine.json 966865793f07f8949f3d721749ccd357cf88ea69 data/energizedpower/advancement/recipes/crafting/battery_box.json -9dc3b363d9910a8072a952550cbf108fe5b9f1e7 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_5.json -e1203e7ec613735635342993df74abeeaa0bbfaa data/energizedpower/recipe/crafting/tin_cable.json -5573fff741ae9e92592b21971cbe0ab05fcba4b8 data/energizedpower/recipe/energizer/energized_copper_ingot.json -994fa2eebd985a4021ae1b452e94388f1896c411 data/energizedpower/recipe/crafting/mv_transformer_3_to_3.json +54b37553a1fd68fc2cf45bae59069e66b2eac641 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_5.json +16b4f5e6bd05bdf7854e6bab01251b80f71f36af data/energizedpower/recipe/crafting/tin_cable.json +bfd6693814fb243aa2905801fc4a028d9754a466 data/energizedpower/recipe/energizer/energized_copper_ingot.json +16f2a7ac149f12d3adf70e1d7a2e3fa4522ba991 data/energizedpower/recipe/crafting/mv_transformer_3_to_3.json 76b949ae5329089ba3bb1090eae3b14bdccf7763 data/energizedpower/advancement/recipes/crafting/fluid_pump.json -d1eae3fb497dea1382aceccf3113dd11581be61a data/energizedpower/recipe/crafting/ehv_transformer_n_to_1.json -23312966bf0a296a35613a220fff6cb5d4126dbd data/energizedpower/recipe/crafting/iron_fluid_pipe.json -15aab38732fef2d9005979168b25f36b1d37718d data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_pressure_plate.json +19d50f8bc293646001d4874c94a8722eac1339a8 data/energizedpower/recipe/crafting/ehv_transformer_n_to_1.json +7f4685a8e825e05ecad63792914c987734f58714 data/energizedpower/recipe/crafting/iron_fluid_pipe.json +0435cbc4a4776419d503f9b0964c76f8072f949b data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_pressure_plate.json 9a17affe709cea2c53c87ddf67a247e46a047374 data/energizedpower/advancement/recipes/crafting/solar_panel_1.json -1d1845a02057a5ccb74771f3c97b6afb4f6acee8 data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ores.json -02311b1797029f28d5b8961d84c744377e521cb2 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_logs.json -e5d61488f9d93b6a72c3eb547b9a1d8d445a557a data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_trapdoor.json +a48695983233fa17784412f9c54cdfddb46b29a2 data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ores.json +d646e60125f6b0cb940e326dc740eff8fc8d0f6b data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_logs.json +19e7127253a9a6296c8f662b6cd66c35a286d8ed data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_trapdoor.json 0c7dd2b2df5ef9e49ebdd5bd722fb742c23e51c3 data/energizedpower/advancement/recipes/crafting/tin_block.json 934894c299d012c97a5877158ac80e83925a061f data/energizedpower/advancement/recipes/crafting/item_conveyor_belt_from_dried_kelp.json -79449ac6beeccc29286f2aae2aff11eb354f9c04 data/energizedpower/recipe/pulverizer/quartz_from_pulverizer_nether_quartz_ores.json -390a84b48a3af4b03ff5042fbed8b7ca1826320c data/energizedpower/recipe/metal_press/copper_wire.json +4ab38ca134db9e58b8b0b4764a67c04cb285503c data/energizedpower/recipe/pulverizer/quartz_from_pulverizer_nether_quartz_ores.json +b0b08a27a1db9e6d49aeb73b4c57cbb4a965bbfc data/energizedpower/recipe/metal_press/copper_wire.json dccd2cbf52c436a27c91b9a86dbdff8543089efe data/energizedpower/advancement/recipes/crafting/silicon_from_silicon_block.json 879ae14f4d951f378a23576f4917f0672efd4692 data/energizedpower/advancement/recipes/smelting/iron_ingot_from_smelting_iron_dust.json d375bf61b9e91f357fe2793c71be9bd0e83a06de data/energizedpower/advancement/recipes/crafting/induction_smelter.json -5cd3434464c8578a6ee5af5b6bd231b4d5acaff8 data/energizedpower/recipe/blasting/iron_nugget_from_blasting_iron_hammer.json -ca3410efb6dd94e31d9d900e06fd2f8672dd096f data/energizedpower/recipe/smithing/netherite_hammer.json -fc059a2c6d59be77f6fb47e3cc6b2d0ebfa44b39 data/energizedpower/recipe/crafting/charging_station.json -3c35f85d34578fdfbb9daf8c06cb6ab7f03c211f data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_trapdoor.json -08958c3669fd615c145bb0b3c5c5b1a598853ade data/energizedpower/recipe/metal_press/tin_wire.json -7bb76f6b34c4eece88605b3dafb672ee53286088 data/energizedpower/recipe/growing/lily_of_the_valley_from_growing_lily_of_the_valley.json +c251e836eabc1c8820fbfe8f20965019cab466de data/energizedpower/recipe/blasting/iron_nugget_from_blasting_iron_hammer.json +8b58956aeb2454aca36e2970e726f763a10a097d data/energizedpower/recipe/smithing/netherite_hammer.json +3684e95860faf54cbb4858e13a8282ad6d3f545f data/energizedpower/recipe/crafting/charging_station.json +28e19e0bb0d8da55eeb3187f0384015a6a85d765 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_trapdoor.json +db087ef618cc0ed98dc7156de628bf6bdf9f44e2 data/energizedpower/recipe/metal_press/tin_wire.json +8744b28c92e1bbe7fb581a5d5b699d0854fc5fc8 data/energizedpower/recipe/growing/lily_of_the_valley_from_growing_lily_of_the_valley.json 1eb40f920f7f020e584f818528287cff0d95dd0b data/energizedpower/advancement/recipes/crafting/battery_1.json a32996fa2effcaa5ad90cd8b5ac61fd8cb8a6ef7 data/energizedpower/advancement/recipes/crafting/advanced_battery_box.json e7d4d03903ebb5a4221bef480c9acf63405d6632 data/energizedpower/advancement/recipes/crafting/sawmill.json b98241e78abd493548fef906e524cacab4a18e86 data/energizedpower/advancement/recipes/crafting/energy_efficiency_upgrade_module_5.json -2300f582843f08058f13ae666384d3557b70109d data/energizedpower/recipe/crafting/raw_tin_block.json +93619044388ea5b1900d4f0d6a602bcf76391e40 data/energizedpower/recipe/crafting/raw_tin_block.json 45048f60f1e6d1dfd0dcfff3eb7c3e5dc1a8f7c7 data/energizedpower/advancement/recipes/crafting/cutter.json -a2e114dd90573caa469aaa14b27df51c4cf6dd24 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence_gate.json -adf39d8ca9a19ee7d68889b5f5ed325a3a545f19 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence.json -006fd3d285e5674c07b5ef3643fee433df11cd95 data/energizedpower/recipe/crafting/smoker_upgrade_module.json +08db1103f03bf81f9e6394bc205e1f734f50d463 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence_gate.json +ad76e020c4e21404341beb5b51901d5b97dedb23 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence.json +7dacc17769db2ca2bdae01b310b950f4c94bd75a data/energizedpower/recipe/crafting/smoker_upgrade_module.json 243e0f96af4fc73f1cc836ed55a139ff3d63bda8 data/energizedpower/advancement/recipes/smelting/gold_nugget_from_smelting_golden_hammer.json -a65721becdaccdf8f4b45ae921d473094954fdd5 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_pressure_plate.json +4d6e32e1c163004b92241b03198fd794e48a7968 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_pressure_plate.json df4e2e914883de89628f7a72f6bc523642c394f6 data/energizedpower/advancement/recipes/crafting/minecart_uncharger.json -2b143b11af54685a2d77c662ed2a7f3cae8e33c7 data/energizedpower/recipe/compressing/energized_gold_plate_from_compressing_energized_gold_ingot.json +5d51450d3c5a66b13410d670a60dd6256e2604ef data/energizedpower/recipe/compressing/energized_gold_plate_from_compressing_energized_gold_ingot.json 1ab9edfc81813c16d462182da9fcc11ae6855101 data/energizedpower/advancement/recipes/smelting/silicon_from_smelting_nether_quartz.json -cd7c8444e7bf1a87b68f64f851de421e7d628516 data/energizedpower/recipe/filtration_plant/iron_ore_filtration.json +0ad7a2829e7c4568afee9c6d8d3cb0b1b0f4c5b2 data/energizedpower/recipe/filtration_plant/iron_ore_filtration.json ae8a63096714ef31a4b8a55e49b91bf7a5db63fd data/energizedpower/advancement/recipes/smelting/gear_press_mold.json -137ee7e337b941b2ebbf1ce935e5c3443d31b7ac data/energizedpower/recipe/crafting/golden_hammer.json -5fb7747da48d99843c4592a6f382444338cfb20c data/energizedpower/recipe/pulverizer/netherite_scrap_from_pulverizer_ancient_debris.json -b6910fb1a1f0f9f1ae0511eba9937b684c2da2c0 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_jukebox.json -4822eb4a84bc07af980bf0ab968d8b2db22de160 data/energizedpower/recipe/sawmill/sticks_from_sawing_buttons.json +f5f93451aebc6d39917878c7eb9c8b74f727b8c0 data/energizedpower/recipe/crafting/golden_hammer.json +16fd5d7677b8bbe21f5bd970e9ebb728fb6f716a data/energizedpower/recipe/pulverizer/netherite_scrap_from_pulverizer_ancient_debris.json +fe8cfbc9f172285c36bedf23d6076bc2cf28f5ee data/energizedpower/recipe/sawmill/oak_planks_from_sawing_jukebox.json +dfe352f4b70f8d6585d35f2fc7e201fd18e9d3c4 data/energizedpower/recipe/sawmill/sticks_from_sawing_buttons.json 598165e605ee9f4ddcd59dbecd433280a5e0cf9d data/energizedpower/advancement/recipes/blasting/silicon_from_blasting_nether_quartz.json -ad8ad650dda7fb7a155d533e5a69b8937bc31ebc data/energizedpower/recipe/assembling/processing_unit.json -8196a552ee6cbf8a2f84ea96d1eb9a9a9fc822cb data/energizedpower/recipe/crafting/solar_panel_4.json +bc5fb274e0874f41e453ef77c0d003de57df47ef data/energizedpower/recipe/assembling/processing_unit.json +ae5d651842f84f157b0a79f3db9468a47e98f15a data/energizedpower/recipe/crafting/solar_panel_4.json effdc951d048c705a6de0c3b500fd409984a7b00 data/energizedpower/advancement/recipes/blasting/iron_ingot_from_blasting_iron_dust.json -93bc05ea369eb46385c02ef09ac0db6124555111 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_bookshelf.json +064ca60d9d71dde21ad51bc60e7de97c3001de2a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_bookshelf.json 407b169b1431d3ed3524c1d98a549d708ceb329a data/energizedpower/advancement/recipes/crafting/filtration_plant.json -20dbcf7a35ff3864bd32cfa9cadfd85c31314664 data/energizedpower/recipe/stone_solidifier/deepslate.json -252f2706d8ae96e1f1f9bd3478db7003d6e1ec98 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence_gate.json -c644b0715f0f16566b971f207258f9dc581463e1 data/energizedpower/recipe/fluid_transposer/magenta_concrete.json -7d7af6c98171d4559a6a5a2691a18ca3acfebac3 data/energizedpower/recipe/fluid_transposer/wet_sponge.json -6de6a0a0c9d54c24ce4a7a1cb14d8f31f3153db4 data/energizedpower/recipe/crafting/auto_press_mold_maker.json -96b50c88bebca482bd791ba672c1a90636562e04 data/energizedpower/recipe/crafting/saw_blade.json -e82a5ad947a4a492365d026f02142d1e68578f5a data/energizedpower/recipe/pulverizer/emerald_from_pulverizer_emerald_ores.json -8b8bbca97f499888d35247f5727add0ff4b1ddd5 data/energizedpower/recipe/crafting/fluid_transposer.json -2dd8c42a9852732a1e161e214ce238e285203e31 data/energizedpower/recipe/crusher/diorite_from_crushing_polished_diorite.json +270c22f08289c77b3421392d5993f707e9b97894 data/energizedpower/recipe/stone_solidifier/deepslate.json +3be4e7de54f46327c8dabb1196687dda65447fa8 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence_gate.json +f59da182dfd98120194868b16da9ea2ae014b58f data/energizedpower/recipe/fluid_transposer/magenta_concrete.json +e97c123ffdeed19784b33345424de816dba7d6c1 data/energizedpower/recipe/fluid_transposer/wet_sponge.json +4384e94c6be96142fc2f384c648d6c4d0d41fc9e data/energizedpower/recipe/crafting/auto_press_mold_maker.json +afcf364da9a229b94e4e87d211d915e9983ed0a3 data/energizedpower/recipe/crafting/saw_blade.json +0900d1a8c8463f941af5b270971ac8b482aca301 data/energizedpower/recipe/pulverizer/emerald_from_pulverizer_emerald_ores.json +cc2936f67725adc6cc4ea9da0c7815a3b19c0aeb data/energizedpower/recipe/crafting/fluid_transposer.json +fcfa55cc21d2431deb57a6980a5c8155fbe8bbc2 data/energizedpower/recipe/crusher/diorite_from_crushing_polished_diorite.json 5c9261723de0f1afcc31a6649e4935c056ed6923 data/energizedpower/advancement/recipes/crafting/gold_cable.json -5f7bad2029d62d53fe175b76121612e1f8f349b2 data/energizedpower/recipe/crafting/speed_upgrade_module_3.json -9a915e817c0cf7562d6a7c9e72f256da00dfa65a data/energizedpower/recipe/crafting/auto_stonecutter.json -7794f6da5680f84eec7e37d46928da0562c2f6c3 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ingots.json -cc5e497dd35375889a95e99e351d906ccaf323fe data/energizedpower/recipe/crafting/inventory_teleporter.json +fad6fbc1fbab89b293bbf21eed2cc3566680fb53 data/energizedpower/recipe/crafting/speed_upgrade_module_3.json +54686b5e1856469dda0883a4ab942bd698770fae data/energizedpower/recipe/crafting/auto_stonecutter.json +fc5211ec0f10bbc49ddbf0ccb0af665eba0c4c03 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ingots.json +08c20eb5fdadac8aa2c9abe792b504c06fd9eda5 data/energizedpower/recipe/crafting/inventory_teleporter.json 0ad990242d5d8e0f3d5a3cf125f3ae5cf0391b82 data/energizedpower/advancement/recipes/smelting/copper_ingot_from_smelting_copper_dust.json bcde59cf51f2936b8e2e83a4e413d96acaedc1fa data/energizedpower/advancement/recipes/crafting/advanced_machine_frame.json -5bc24d3841d679eef0772081ccf883ae529b0291 data/energizedpower/recipe/crafting/raw_tin.json -30cc95797a7fff090ecdcb63db29deb34cb94251 data/energizedpower/recipe/crafting/weather_controller.json -d1d8f07f8efb27d2295d31eb260e829e9855f1aa data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_sign.json +6035ed81cfba6671adeb833a86caa1f93b90cad8 data/energizedpower/recipe/crafting/raw_tin.json +c4b9f9e5f42e0a0041764b7569aaae91a76b9818 data/energizedpower/recipe/crafting/weather_controller.json +fd874b59e6ecf81d209412de3ce23d7436270e42 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_sign.json b857658eade839f47e7631ebaf1c795fc257ba18 data/energizedpower/advancement/recipes/crafting/advanced_crusher.json bf55f901757b2d4016a719ef59da8deafb49b724 data/energizedpower/advancement/recipes/crafting/copper_plate.json -3419cee9837af87ec804299bbcb4eb7176caf4eb data/energizedpower/recipe/growing/peonies_from_growing_peony.json +0699b104aadf89d3aac978c4f9ad10c18ab0dc4a data/energizedpower/recipe/growing/peonies_from_growing_peony.json 93575d88f7b37a66cea57811f1b4bd802a3c8e70 data/energizedpower/advancement/recipes/crafting/battery_8.json -8f0f90dd8d959b2057f02d922c3ca8804a685789 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_boat.json +c97eeb59ea706cda3b90185ffdc43118c7b70552 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_boat.json c7acbd69c027f005cc39a0a0a8810c03b6aab863 data/energizedpower/advancement/recipes/crafting/powered_furnace.json b177d1849d2b3ab1cd292bddba653af406bcfe1f data/energizedpower/advancement/recipes/crafting/gold_wire.json -25eb55f9616f317d55f166ba7ff395d847ce6e2f data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_stems.json -1ab420f276372a907834b40dbec74ae2de3f72c7 data/energizedpower/recipe/crafting/basic_solar_cell.json -064f9bad1a81b39d19fc5e7bed5c45d1bed7c3e5 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_pickaxe.json -7785572be9e101c6dca3978bd6d4679f14c527fc data/energizedpower/recipe/press_mold_maker/raw_rod_press_mold.json -c7842e20ec25d5a5c79c24ce555372954c4eb0e1 data/energizedpower/recipe/crafting/powered_furnace.json -9e355808fd3608e6ca38e4ed5256223d0a57dff0 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_door.json -8973ee9967b897409aca6881b69433cb8bfe70ca data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_pressure_plate.json -3d68ca5a35358bac8a92501418609023a5713dc3 data/energizedpower/recipe/growing/sunflowers_from_growing_sunflower.json +73f0bd9de7f7db0e60ad040db8cff9b24ba45de3 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_stems.json +11e6d203acb63130438120a278509885b2e68799 data/energizedpower/recipe/crafting/basic_solar_cell.json +395fcb39730398c31c5b4d0cb5d360c1a6beee0d data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_pickaxe.json +b9a5e84cddd9f3a3acf7f3eb598f01acebbcb192 data/energizedpower/recipe/press_mold_maker/raw_rod_press_mold.json +a6890376e07f29b32a0d7b8666fcaa6df91b8120 data/energizedpower/recipe/crafting/powered_furnace.json +30c1e11777d5589c8eaf01ffe237f904403fb9c9 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_door.json +59b8d21f4471a8bf440ea88b6d5dd65f74a932fd data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_pressure_plate.json +4ff5b3533c02a02e149d3b76fe4c0065f8b22850 data/energizedpower/recipe/growing/sunflowers_from_growing_sunflower.json 2141389f8390cdb4ea30cb07ac9dba5ce6c6c6b1 data/energizedpower/advancement/recipes/crafting/golden_fluid_pipe.json -e0191a10fc0fecceca203e583945548402d7fca0 data/energizedpower/recipe/crafting/pulverizer.json -16e3e7eee167a81305e60ec802e4426ceef65a73 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_logs.json +c606f64931ac0f3684a25c9a597a60d28035a804 data/energizedpower/recipe/crafting/pulverizer.json +9025c3a4fcda98fdb4044214337e76f436ae75f4 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_logs.json 0a080a8eed96bf84cc2ce6d7e8a36ba484f3e4a0 data/energizedpower/advancement/recipes/crafting/hv_transformer_3_to_3.json -f24239f3915d7efccf5a6aa73d9ad2de5cb611b7 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_pressure_plate.json -e21f69311ecb7ee39412e2b2e0e50c3374913f45 data/energizedpower/recipe/growing/sweet_berries_from_growing_sweet_berries.json -493c02ea29c6989b1841291263e7154d7f561b12 data/energizedpower/recipe/crystal_growing/budding_amethyst.json -e13c608081cf6d612f413555e23827b5667d6ca5 data/energizedpower/recipe/sawmill/sticks_from_sawing_stairs.json -5388c8eecf70bd37dd9da1d04ecaf871b85b0da9 data/energizedpower/recipe/crafting/energized_crystal_matrix_cable.json -10fea87f35260768fd6e894e3da42a7861144516 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_5.json -639cc08e6917ac05b4fc27799ae6b2c3ce3e1f4d data/energizedpower/recipe/crafting/advanced_minecart_charger.json +b3f02ac2ad35115fbdf05ffcbb53fc324cf0b82c data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_pressure_plate.json +053d5ca7f5f83b637ce09a4262705f2d4e6cd0ff data/energizedpower/recipe/growing/sweet_berries_from_growing_sweet_berries.json +6dc24e420a22adc8e3e20a53c97e1820d0df487d data/energizedpower/recipe/crystal_growing/budding_amethyst.json +9002cd7ef47562ce823db7fea5c1b6079477de6e data/energizedpower/recipe/sawmill/sticks_from_sawing_stairs.json +ad4ef9fc245ffa36ac94b04d379eb946a1593df7 data/energizedpower/recipe/crafting/energized_crystal_matrix_cable.json +f62fcc099922993e6f1bef5578ea15d078faff0b data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_5.json +2f406d28aaacfdae93be9a765a3af81015930e85 data/energizedpower/recipe/crafting/advanced_minecart_charger.json 7ed928dc7e7520a41ba9c2a881d682429c467fea data/energizedpower/advancement/recipes/crafting/fluid_tank_medium.json -29e9cfb0f0e593be048cf4d246637bd88650c415 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_sign.json +5d07ad49e14ed5bd9a6f832dcf87f0d54690c67e data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_sign.json ab1fc404da0248b87b7e6a6ac62991a502bda031 data/energizedpower/advancement/recipes/blasting/copper_ingot_from_blasting_copper_dust.json -b2f9d1c3b5327335d545bc19862f133f2a3d72d8 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ores.json -bda61a790f1196bab44c6232a79b8958fc9275d0 data/energizedpower/recipe/crafting/duration_upgrade_module_5.json +98d5390ae73b774d49c84ac4e4b0c1bd6d1564bb data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ores.json +7cc58b3826946c6db6debbb1f4ac19f308265b0c data/energizedpower/recipe/crafting/duration_upgrade_module_5.json b86858ad8b19fd4b69da18e475783c02a022a823 data/energizedpower/advancement/recipes/crafting/reinforced_advanced_upgrade_module.json -3d2e07c7106a1ca598ccc10873835f739058cee1 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chest.json +db5ca3efbbb29a9e6248aeb58ae9dc1ea8836909 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chest.json 05dc8e129bf93914b142c7e198115d78ac8e3f62 data/energizedpower/advancement/recipes/crafting/moon_light_upgrade_module_3.json -674702a25e37753d5976aee90f496a8bf7068842 data/energizedpower/recipe/fluid_transposer/white_concrete.json -86e2a1aeae45062ea81661b29469667790e158be data/energizedpower/recipe/smelting/gold_nugget_from_smelting_golden_hammer.json -096931906ed0792e47aaad055f15e3db8d16e092 data/energizedpower/recipe/compressing/cobblestone_from_compressing_stone_pebbles.json -8333d1afcfc9d83244763292bdab9f687ee32ea8 data/energizedpower/recipe/crafting/battery_7.json -ccfe38e7cc9d5d098e430d2c15fb97d87c84d953 data/energizedpower/recipe/growing/glow_berries_from_growing_glow_berries.json -f926ef3e1629cf4c7f32898a92d10b6c38ab311d data/energizedpower/recipe/crafting/solar_panel_3.json -89f4feedb553a65f1821abe6c4ac6742c1d630bb data/energizedpower/recipe/crafting/fluid_drainer.json +7ba1770968f6b736260f11855f2c49efd9a5e467 data/energizedpower/recipe/fluid_transposer/white_concrete.json +5afad98614d11fa56a18613320c5de3d72694cfe data/energizedpower/recipe/smelting/gold_nugget_from_smelting_golden_hammer.json +7f4dd39e49b4ce74656e90df1cbf08af450eb7e6 data/energizedpower/recipe/compressing/cobblestone_from_compressing_stone_pebbles.json +7c982109df91925724b88ba9fee2c9d268c8565a data/energizedpower/recipe/crafting/battery_7.json +9cddf20d8195114006c107e28bab1bec305c387c data/energizedpower/recipe/growing/glow_berries_from_growing_glow_berries.json +17e03df99b69c91bd621c9519fbf4fb80fa5b8a3 data/energizedpower/recipe/crafting/solar_panel_3.json +de747c82ab1f54f2ca5b64bc8c6d2590332b8f87 data/energizedpower/recipe/crafting/fluid_drainer.json fea1f2bd9743a5aa945c71578ae5789458509812 data/energizedpower/advancement/recipes/crafting/raw_tin_block.json -4ed8f78b5154effb19da70a8e15a95d3c9c52ab4 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_chest_boat.json -4e6b390345e010610d217f766eb1da8c8838f1d1 data/energizedpower/recipe/crafting/advanced_uncharger.json -30b27e9fcf5c8cbf20b4dde33b3a1993d79e67f8 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence_gate.json -434c04074803b17cf1228cb65395807d1b4187e1 data/energizedpower/recipe/crafting/uncharger.json +9c3d0ee741f384dcc0634304610942379c727c1b data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_chest_boat.json +9e4e30c83108422dcac6154149c4f61db8f32ae5 data/energizedpower/recipe/crafting/advanced_uncharger.json +1e80012adaff6c1bcdf74cf7b03db03c7bb64496 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence_gate.json +e10ddc45c93ec733caa24f750a69e6ab5dce3099 data/energizedpower/recipe/crafting/uncharger.json 18748a2dc50d22116ab61a00ee02fcd6cb97d159 data/energizedpower/advancement/recipes/crafting/item_conveyor_belt_switch.json -5f507ea8fce6ee9002a41ebc25d81fc5e9fecca7 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_pressure_plate.json -9bce5b46461ba6161b3445f3e3970aadd3390f08 data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic.json -36e863a226cf5ccb572939bd1d65d2c5d76cbd26 data/energizedpower/recipe/blasting/gold_ingot_from_blasting_gold_dust.json -53f8d3038adea6a98a89e4414592542eea5d9432 data/energizedpower/recipe/crafting/tin_nugget.json -d8941d2d4b64aeea1ace533ea3cca37973812406 data/energizedpower/recipe/crafting/battery_box.json -b78c2f635fb9d7e6d8d037b22b8ade93c07c6695 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_2.json -38726e4d0a79c23289dead5b7a72daf81da50186 data/energizedpower/recipe/crafting/drain.json +a6d0f2476be322593c90abda37546c77534b8c0e data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_pressure_plate.json +d9d82e3474fcad5be4521b1641e6a1377d161c36 data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic.json +b02bca33403bb407e1d1555e1bbcbfa70a00e5de data/energizedpower/recipe/blasting/gold_ingot_from_blasting_gold_dust.json +c6ecc738fd6c6deac0f78187d9f582166ce30b36 data/energizedpower/recipe/crafting/tin_nugget.json +e26d3039c1f82e1552e42709245c04b5cf711692 data/energizedpower/recipe/crafting/battery_box.json +ad369be7cf64361651df0240c13cd730ac03c456 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_2.json +535b7c0b95cfcfa631061f398eaa5839ae5c841e data/energizedpower/recipe/crafting/drain.json c9394f85b16517a03f826a5cb1d2d1693b6d7384 data/energizedpower/advancement/recipes/crafting/energy_efficiency_upgrade_module_4.json f2974021543e0f22a783ec7b6a32baec7d7b12c8 data/energizedpower/advancement/recipes/crafting/drain.json 2d39441e7bb42e6246fc0613feba49dae002fdb6 data/energizedpower/advancement/recipes/crafting/tin_ingot_from_nuggets.json 68adea6408c9fd183cb792a23cb32ac93309cb42 data/energizedpower/advancement/recipes/crafting/uncharger.json -fa8d3bf0ac369b9d49c8cd6eca6ff0239c38d37b data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_pressure_plate.json -62e88e785f865a1b63fe374ed6a1d5a315322673 data/energizedpower/recipe/crafting/battery_2.json -40980fdc7171ea397824ad44a4dae7f3894b0e44 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_sign.json -92bd9bf5a553e9309133a42fa90e394d3c9cb4b1 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence_gate.json -a17ab211cf76e0c67e0731ca4b8f021184c6db21 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_boat.json -f557342f93a0c140aedeebd3dcd4197231b32cc3 data/energizedpower/recipe/fluid_transposer/mud.json -62856c63225deae96c0db71b8660662c980c0dbd data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold_blocks.json -20094ba200889a37ded87692a04dffe56fd62cd2 data/energizedpower/recipe/crafting/fluid_tank_medium.json -5626c045bf239df995e2cd21151bb6acf3d068a7 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_door.json -c171c13ea0b54cfa5eef2903f1b324bc0462cfe3 data/energizedpower/recipe/press_mold_maker/raw_wire_press_mold.json -4fd7398da2774c1424e1defe30ee645562e335b2 data/energizedpower/recipe/crafting/lv_transformer_1_to_n.json -23e658fd02ba018a2743ff83331c970e8a664222 data/energizedpower/recipe/crafting/energized_copper_cable_using_wire.json +94f05159af2fbb6bb0b0150b527d363ae8a9c9ca data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_pressure_plate.json +4394be3a375dc41112bfb0e221d4570bde46ea18 data/energizedpower/recipe/crafting/battery_2.json +42158aa523e9b07a4eb72d153c38aa2b39cd57ff data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_sign.json +917fd159a28a27e938f463bbcd9d59a7e1398805 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence_gate.json +e66453cc10f6ebf6f4cc270ff8933af848e2d340 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_boat.json +26c78a8f675fe89f029c50ef9aef171ee6d36285 data/energizedpower/recipe/fluid_transposer/mud.json +df8d1b49552807525456a9aefb8a559b34f58fd9 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold_blocks.json +7e003e0baaff35582bec79a20c0dd89cdbda6a27 data/energizedpower/recipe/crafting/fluid_tank_medium.json +2edd3e4b1f8ca675ce5c2bd11a4a3f6d0197e31e data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_door.json +c627926293185882b0e55249e66f81334e05c903 data/energizedpower/recipe/press_mold_maker/raw_wire_press_mold.json +3b5c1d4f2bd7fc25e249dac520b7c59e208a4d8c data/energizedpower/recipe/crafting/lv_transformer_1_to_n.json +9a23812deb17f5b99cbefc2e05d59bd2b4b84037 data/energizedpower/recipe/crafting/energized_copper_cable_using_wire.json 4112e8ecbca1ba9a56f8e8ae8cdafd6f9a7b2736 data/energizedpower/advancement/recipes/crafting/advanced_upgrade_module.json 1a3a7856a974a98ad732993f486ccaf6179a40ae data/energizedpower/advancement/recipes/crafting/hv_transformer_1_to_n.json -c191e502bf8f0f433eb1a9a5a740c0c61a8c2d07 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence_gate.json +2aa7d558bf43803b2c41ca632fc5fc1c2f61cdcb data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence_gate.json 130e2819f84623cb7c66873a9baf160437219959 data/energizedpower/advancement/recipes/crafting/energized_crystal_matrix_cable.json -0454157e9157af6caf519e2aee3629ae8cd79c98 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_raft.json +3a4568006e67c7c68b23e065f20b97e676a2b96e data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_raft.json 3c7dfa34092163995d1e950c25f494784fc94fe1 data/energizedpower/advancement/recipes/crafting/blast_furnace_upgrade_module.json -1ca5e3f66813d7eb7a6f3ef9cb8d8e7cd7fe2ad0 data/energizedpower/recipe/crusher/andesite_from_crushing_polished_andesite.json -355b192236ef0647dbe7b800c80a0da28da81bfe data/energizedpower/recipe/growing/sugar_canes_from_growing_sugar_cane.json -4eeffcbf067ad1f1223aab9f8ddf275a8b11232f data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_4.json -b48434fbf80dcc9b1e1cd5f9e42d2ccffbf7d362 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_chest_boat.json -242bd886d7da3ba968eef97383b94653050c2e95 data/energizedpower/recipe/smelting/gold_ingot_from_smelting_gold_dust.json -2e8da40d6232f811375c44f7cbef5112899c3b55 data/energizedpower/recipe/assembling/advanced_solar_cell.json -42dc57c2e7956358ca99b72526944a5c60024728 data/energizedpower/recipe/alloy_furnace/steel_ingot.json -4ef95f58bcf9f496626ee84bdbd0a842189b3708 data/energizedpower/recipe/crafting/duration_upgrade_module_4.json -41709861426b2e25a4102b65f301f6754fba27bd data/energizedpower/recipe/crafting/battery_6.json +80658c712783fdaee0db6a3e6f051b645bfd0d87 data/energizedpower/recipe/crusher/andesite_from_crushing_polished_andesite.json +615bdfea573b837d13e926f558b4370bb9d83ab7 data/energizedpower/recipe/growing/sugar_canes_from_growing_sugar_cane.json +55f96dc745f5771bbe6d878dc8ea6e953ef68fc4 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_4.json +8d70767507857c9caa7c45f9ac3adebce85349ff data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_chest_boat.json +dfe051f1ec499e10871e89efcc0a2e3e8ca63780 data/energizedpower/recipe/smelting/gold_ingot_from_smelting_gold_dust.json +dfa18bf4255c2ce2a525b5598e588ead08018334 data/energizedpower/recipe/assembling/advanced_solar_cell.json +d279d73efc61bdb338b83deef76513cb07e16a8e data/energizedpower/recipe/alloy_furnace/steel_ingot.json +78c1b988fb54d075190a86f145d84637c647ec67 data/energizedpower/recipe/crafting/duration_upgrade_module_4.json +cc1e048f1b66f2832b00dfdc65ba6daefeed0453 data/energizedpower/recipe/crafting/battery_6.json 92b18dc3b4c263ceef0946d2099f07d574529db3 data/energizedpower/advancement/recipes/crafting/duration_upgrade_module_1.json -0d57ad232295747246df3c5305051b97040f0629 data/energizedpower/recipe/crafting/inventory_charger.json +455ddfe8f2e46fb7e4c96d3970cdd050d855cae1 data/energizedpower/recipe/crafting/inventory_charger.json 9409c25eec9bdcfeade28c6247ee182418bbc6f8 data/energizedpower/advancement/recipes/crafting/hv_transformer_n_to_1.json dd3827b6b6efccc25101a9361da1f8817cca7502 data/energizedpower/advancement/recipes/crafting/ehv_transformer_n_to_1.json 8a09cb762ad6f22237630fe465000b3a31873a44 data/energizedpower/advancement/recipes/crafting/advanced_minecart_uncharger.json -dcde1b1fc2ee82403af9fb160907c2dfc4284283 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_sign.json +b282a3fec39412c721a7b3030cab29567a3620fc data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_sign.json da24d69aae9706c86a69110974712f219bc58270 data/energizedpower/advancement/recipes/crafting/extraction_depth_upgrade_module_2.json -c61e838f151d4958c03275737a184537e3474644 data/energizedpower/recipe/crafting/iron_plate.json +3b55f9dae41a8788bd8c783897d2fe67beeb9f0b data/energizedpower/recipe/crafting/iron_plate.json 9591b43b97833f4e6f0482c1cfff5d865976df00 data/energizedpower/advancement/recipes/blasting/iron_nugget_from_blasting_iron_hammer.json -da3fc53aed23919a206c6110b1a6c34d34090614 data/energizedpower/recipe/sawmill/sawdust_from_sawing_sticks.json -ed664c06534b9032982ae9dfa8e2c9f101e5a1ec data/energizedpower/recipe/crafting/basic_upgrade_module.json -748b587979df61acd461ffbfc57d30ce163caab0 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_trapdoor.json -a767196861bb403659a41d0c6033570df880eec8 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_fletching_table.json -37221d53c26d87a42c0cfa5714bc9f50e8f6cedd data/energizedpower/recipe/blasting/iron_ingot_from_blasting_iron_dust.json -ad8af154adbf40c79ecc8f3109f30d1cdafe2b6b data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron.json -2873f575a4a9369fffbd81ebd2cdb0153edacdd0 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_trapdoor.json -bd4662099b476059e80e199ec2f0d1e51f668043 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_cartography_table.json +0af44c33ec2e50dc309868012c6080d6bc0c92bb data/energizedpower/recipe/sawmill/sawdust_from_sawing_sticks.json +bae79b1cae05e92c6bd6d76fc92a442155a787e4 data/energizedpower/recipe/crafting/basic_upgrade_module.json +0f8af185fadbf5f8f9c3f024218870d282e724b8 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_trapdoor.json +1327cfed9d09884b9f74643637d5055f5b924d0a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_fletching_table.json +9d2c8b98b075b9b6a171471214c11cb0e115d85c data/energizedpower/recipe/blasting/iron_ingot_from_blasting_iron_dust.json +2f148d253c491747755275e59f92c138933fff9d data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron.json +ea6e5bddbf171259c8ebf29bddffb8c1529661af data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_trapdoor.json +8bd52b9808f69521336c39e356ea7f613c500387 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_cartography_table.json b5970c12a7ec35eab012b5171207c7c9bfc8b92a data/energizedpower/advancement/recipes/crafting/energized_copper_cable_using_wire.json -23f299fcf80954d2fda895bb51e00c64e9f9eff5 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence.json +3d026ab9c17794f752264eca135f3bbef8cd8dd1 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence.json 567393dda68ec08e43fa2cc73105a32a6456e429 data/energizedpower/advancement/recipes/crafting/advanced_charger.json -aa09af5bd522ee4ed4bf9b43c43c07fc2cb13b69 data/energizedpower/recipe/crusher/sand_from_crushing_gravel.json -de060d65be78620b957f732d4593d09318799677 data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_block.json +629f346426abff74f329f225a1dcc0cc03aa6fb4 data/energizedpower/recipe/crusher/sand_from_crushing_gravel.json +4527000cf6265eb038217ed25834b803e638c25b data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_block.json ba0028ff5b9a98599942844229e37494a3ef5f32 data/energizedpower/advancement/recipes/crafting/iron_fluid_pipe.json -f66f9bd5955b9bb0f9879fccd40a009af0af3b02 data/energizedpower/recipe/crafting/golden_fluid_pipe.json +f557d18e6e84dd1a7ad5eaba6f4a16b28fb0576c data/energizedpower/recipe/crafting/golden_fluid_pipe.json 0ca2d6440d94850f46ef4af0ebdbe45d9a3aed7e data/energizedpower/advancement/recipes/crafting/battery_4.json -94cb39814805aedae29d4ac099189722061a7a54 data/energizedpower/recipe/crafting/thermal_generator.json -819dc6100ecd39b294e1ede9b176c414cc62df55 data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_block.json -8b79c598a3d9dc0ec9373d900378763d893340db data/energizedpower/recipe/growing/brown_mushrooms_from_growing_brown_mushroom.json +f38cb6f78ff9f3fb48a50bf6cfb581beed9315ca data/energizedpower/recipe/crafting/thermal_generator.json +02c6ce285939b98e575928706fc4c389501b068e data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_block.json +971c08e72e4d1f8de1a8aae77ae7af3e5e067363 data/energizedpower/recipe/growing/brown_mushrooms_from_growing_brown_mushroom.json 3fd17a9153ae4e50c2fc2833c73bde7d62e8cdca data/energizedpower/advancement/recipes/crafting/energized_copper_cable.json -5b0eb64c53bd092b695bd0df8cffb64e70bded33 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ingots.json -81d6911c55fbb543d28042fe9b54e6b39085d18e data/energizedpower/recipe/crafting/speed_upgrade_module_5.json -668eaea04be1aca75c9bd3942651ba9015c0dd84 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence_gate.json -bccf1dcbeba02c0156413c8c2138d9d51a36a8be data/energizedpower/recipe/assembling/advanced_circuit.json +0a4179086a5965bfef1d9e5a1c15d295c992533c data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ingots.json +313066e7674a6c8ea4a8d2fa4c0bf20f129464ba data/energizedpower/recipe/crafting/speed_upgrade_module_5.json +b47a6bfd112d9203f62ade3c9b5a11a8d0665b74 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence_gate.json +5a0ebe71302c194e439e6ab8bdb211043c77b895 data/energizedpower/recipe/assembling/advanced_circuit.json 74ce810c6dc062d3d00a30cef0ab5a20de6a759a data/energizedpower/advancement/recipes/blasting/tin_ingot_from_blasting_tin_ores.json -e385b1179fba5eb644bfb2ed929d14347ca9cb8d data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_trapdoor.json +c81ce0e4e322a32852e6b6ab1499c3cbbbe964c6 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_trapdoor.json 0b1c15e16064473f161b841df15ea7e9be9f0fd2 data/energizedpower/advancement/recipes/crafting/mv_transformer_n_to_1.json -958ee72ea30d85e8aa55463f16c9721a06b3dc88 data/energizedpower/recipe/filtration_plant/copper_ore_filtration.json -f008183ee300c7f4f9ba49f529fee2f85524cccc data/energizedpower/recipe/compressing/advanced_alloy_plate_from_compressing_advanced_alloy_ingot.json +4b15050f45984d4c4df8c183eec904de152e3244 data/energizedpower/recipe/filtration_plant/copper_ore_filtration.json +915c360565ff79f44149d25dd5fd3721373c9887 data/energizedpower/recipe/compressing/advanced_alloy_plate_from_compressing_advanced_alloy_ingot.json 844353f8e591b4e6da816e5bd1a3c02b3a60f02f data/energizedpower/advancement/recipes/crafting/range_upgrade_module_1.json bb2011fbfd4c8bed5a77ed35607720fa35f7df90 data/energizedpower/advancement/recipes/crafting/time_controller.json -f8f13e6f0933e2c6e69168155138589cffdc7a93 data/energizedpower/recipe/smelting/silicon_from_smelting_nether_quartz.json -8a71e61a5645f1af4e47b4a301787567b54e9cf7 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_door.json -ed430ccc3b2409df2c8c52b3b8586b95b367c1cf data/energizedpower/recipe/crafting/speed_upgrade_module_2.json +f5ec3011c0f0139f3a93826339271e08bfd72c71 data/energizedpower/recipe/smelting/silicon_from_smelting_nether_quartz.json +2451c386d4b548bd2537170dfd47da29898fb202 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_door.json +d538517d76ddaa8f245c3b0f2df8e113618a0369 data/energizedpower/recipe/crafting/speed_upgrade_module_2.json 6a6402b3942c11dc6459bb3273aa4b6e374ffe9c data/energizedpower/advancement/recipes/crafting/solar_panel_5.json -a6a30b9fe6f85ad4bd73fb46c51e6f007176a838 data/energizedpower/recipe/crafting/teleporter_matrix.json -8d06a521bfb190f42729cf3e56de882abfb88651 data/energizedpower/recipe/crafting/crystal_growth_chamber.json +9499c1c2a493a123f5e551eb026981b421598a80 data/energizedpower/recipe/crafting/teleporter_matrix.json +c78a404f265c58f3b3af4a27168360f395bba09a data/energizedpower/recipe/crafting/crystal_growth_chamber.json de1945483ec6652088af7fbdfe3218ced9bc9ab9 data/energizedpower/advancement/recipes/crafting/teleporter_matrix.json 30f7287b06e64128ece6eff0218fb74e493dee56 data/energizedpower/advancement/recipes/crafting/energy_capacity_upgrade_module_1.json -6805bcf629c91d3e95df77ccfc6fc5096c9ecc41 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_chest_boat.json -09f7525fbd3bb8d39e47c4717fa6ae0b5b895db9 data/energizedpower/recipe/smelting/iron_ingot_from_smelting_iron_dust.json +20b174019153e79e2a53d11dddb378784995d4eb data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_chest_boat.json +d7c08714618c66ac035cdeaeac648fdb8314b52e data/energizedpower/recipe/smelting/iron_ingot_from_smelting_iron_dust.json 87d45af572dbe4c35dffee30f95133fdbbc32e22 data/energizedpower/advancement/recipes/crafting/coal_engine.json 3d0336fbe2e2335242eaf638c1fd65fc04b4519e data/energizedpower/recipe/crafting/teleporter_matrix_settings_copy.json -1460f2f31cbb84e3f8b607630d38687f6aa95c53 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_sign.json -96170b708e3ed9f0c7bb765ce3e370b4f423ad91 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_3.json -71d7e439f1f601e72135b3fcd7308339e3a26b84 data/energizedpower/recipe/heat_generator/energy_production_from_flowing_lava.json +ad83b5b1169e6b2211b3abc4a1aa26f9e9119430 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_sign.json +54b93035666d08ccd24b98bc8c9352192fa67840 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_3.json +d3758fa9dc69db9df07786569ab826a38023d466 data/energizedpower/recipe/heat_generator/energy_production_from_flowing_lava.json 2db3082ad74b797c099a33fb2ec2e0a8e4bf8faf data/energizedpower/advancement/recipes/crafting/pulverizer.json -daab989f42d53a802c0ca766bc75defed3016d92 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_door.json -61b435b090caebf6d41ee45c3855ba5c892411d9 data/energizedpower/recipe/crafting/reinforced_advanced_machine_frame.json +3fcb00c29425812bef3a7d5f9fe4f87fae48e525 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_door.json +b5788b8246c2b7b8afe293b40f49da55ac9d36bb data/energizedpower/recipe/crafting/reinforced_advanced_machine_frame.json ff9f47c0f998015fa99bf4c4357576fe20a9ec1d data/energizedpower/advancement/recipes/smelting/tin_ingot_from_smelting_tin_dust.json c4b2b442c32123e5954e061c9be64a9185f1d237 data/energizedpower/advancement/recipes/crafting/ehv_transformer_1_to_n.json dd3401c938faf60a9b821674084952033040ba94 data/energizedpower/advancement/recipes/crafting/auto_stonecutter.json -552f60123b9f2964c62fa19d3bb43bb4801e4710 data/energizedpower/recipe/crafting/iron_hammer.json -0e6ba5e9a3109214c32dadfb7541a2be664cc540 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_note_block.json -7ac0aba0c9e6b77b9fe2a61b687003d00470a8bb data/energizedpower/recipe/crafting/crusher.json -40192b63d2fbcb27087cee8740ededbf9d8b75ee data/energizedpower/recipe/crafting/blast_furnace_upgrade_module.json -406c0e4be96204f4016998d09ec1877e5099bbf5 data/energizedpower/recipe/stone_solidifier/cobblestone.json -7725ab4e4e9e42708c9115ad4f0621ec2a5fc40b data/energizedpower/recipe/metal_press/energized_gold_wire.json -99067fb839edbcf2fba3a583e384607f870c0718 data/energizedpower/recipe/crafting/sawdust_from_sawdust_block.json -75166e4e9e80504fb03c6c62d130240ed6783c0d data/energizedpower/recipe/crafting/fluid_tank_small.json -5d4d34ba557dadc95c15a797d12014cd6181deef data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_trapdoor.json -1a390e1e19addcab5ff16d7d440ac01f4b4ff7a7 data/energizedpower/recipe/stone_solidifier/andesite.json +8bbe204187505bbfaeb5c5a83a2266db034a2bec data/energizedpower/recipe/crafting/iron_hammer.json +340a803c83ce7559f45d00a50a4f2e0011a0d44b data/energizedpower/recipe/sawmill/oak_planks_from_sawing_note_block.json +fa38174d3030fb9338e21fe11c68953e9aac991d data/energizedpower/recipe/crafting/crusher.json +ac859c8f52ed0008fcd473821b3d5f0ff5346702 data/energizedpower/recipe/crafting/blast_furnace_upgrade_module.json +ac0f9f5b97b04575deb34282a2994f7a70c1459c data/energizedpower/recipe/stone_solidifier/cobblestone.json +7121f1df93f4f242132c831a3912206143a635a0 data/energizedpower/recipe/metal_press/energized_gold_wire.json +cc8752cc525a34a7857a3c28c1adbfc16da63e32 data/energizedpower/recipe/crafting/sawdust_from_sawdust_block.json +16369dcfa1683d3616d37e216f4ad15d242856d7 data/energizedpower/recipe/crafting/fluid_tank_small.json +0325c05b723206bd92dbe2d8c41aa20b4e1699ba data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_trapdoor.json +3dfe16ef5a814dc70911ff82cf55e79c139f163e data/energizedpower/recipe/stone_solidifier/andesite.json 78ea62e1a1ec260c8d8927db69e5a5268cfd1e56 data/energizedpower/advancement/recipes/crafting/item_conveyor_belt_loader.json -b549cab3db7dc66b864b006b3cf393c29df6fae8 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ores.json +3abe4dc6f55c9946eed61355697b76ec78d4ce08 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ores.json d7f7ecd35392b29288ed920e5142ead765279a64 data/energizedpower/advancement/recipes/crafting/item_conveyor_belt_merger.json 3deddec2604c4bdb9791dd697aeef5569740bc7b data/energizedpower/advancement/recipes/crafting/energy_capacity_upgrade_module_3.json -df6a7366ac931486ee805a7a16779d2dd2582d6d data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence.json -c4228ced518c3ae2885b46a28deeb7bf2d26e36c data/energizedpower/recipe/crafting/solar_panel_5.json -465999d48e66ed07b9161b168a603ee0c4123f4e data/energizedpower/recipe/crafting/filtration_plant.json -d99fbdff0f1bceff3013fd7a77efccaf87597154 data/energizedpower/recipe/growing/carrots_from_growing_carrot.json +62c8eb5656f1e531ffe2fb99bb93ec45f2d22f28 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence.json +15cb9faa4baad46f5723b8c45885ead8a2ea2b3d data/energizedpower/recipe/crafting/solar_panel_5.json +0b58e5427c18e4398f1ab6dc4f558e589c321f5d data/energizedpower/recipe/crafting/filtration_plant.json +2c10daa97b0119ba1a435221e2a6697311f93209 data/energizedpower/recipe/growing/carrots_from_growing_carrot.json e127f299110ab4ca289b90a6051c95c3e8a8aee3 data/energizedpower/advancement/recipes/crafting/speed_upgrade_module_1.json 77c7d4e9799036ee93c2d2e8b79f01577e29f3cf data/energizedpower/advancement/recipes/blasting/gold_nugget_from_blasting_golden_hammer.json -3ff72b3ea9965458ddca4c1fb337d3a9c960a1d1 data/energizedpower/recipe/growing/lilacs_from_growing_lilac.json -b537edb8b9e3cd3ef3f77dedbf6f50f6a51002e5 data/energizedpower/recipe/crafting/heat_generator.json -2a02f6edb79353f42567ed83e5f8da19a843f126 data/energizedpower/recipe/crafting/advanced_battery_box_minecart.json +ff4f5a57e3d717f702ace7e2c7d3cdc1c889f2ec data/energizedpower/recipe/growing/lilacs_from_growing_lilac.json +50160765d5af1efca697d3a348c1647d8e1e6ca8 data/energizedpower/recipe/crafting/heat_generator.json +18daadf255da6f4cdb60e9cc3d1d392ebdaef945 data/energizedpower/recipe/crafting/advanced_battery_box_minecart.json e44f97993c4c4ea6dbadabfa8876f624a0bd8a38 data/energizedpower/advancement/recipes/crafting/basic_upgrade_module.json -f52f314239120c832d0e5a6a0958c130bf4be7ae data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin.json -dc6bd1a6f8078c35cfe48aa8782a713ded8b9b09 data/energizedpower/recipe/crafting/powered_lamp.json +ac403c47d3544cd2b22725ce6a0fd6b4bbdae970 data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin.json +f7e8a7db9fab4c73cc487f4ab60caa2f48691113 data/energizedpower/recipe/crafting/powered_lamp.json 0b563c3166c94c8bfd077fb95b62e445ecce5135 data/energizedpower/advancement/recipes/crafting/minecart_charger.json 6cf9369b788ea4b323a7b3d7e405efd09db8c330 data/energizedpower/advancement/recipes/crafting/battery_6.json -6d06f4d3c26186e6b45a0436595aed3047015b45 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_sign.json -7c605a43b76f1058aab7982185d135b3032b587e data/energizedpower/recipe/growing/rose_bushes_from_growing_rose_bush.json -ceda55256b11d194d7aa817ef48cc3a021dbe40f data/energizedpower/recipe/crafting/basic_machine_frame.json -1cbbe8de8a5a4c9eb3551aba7d6a546f6eda4318 data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_dust.json -0adb6bbb928e286d5ad0fe34f30fe01c97d4e359 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_door.json -80ef22df8feda65eedfba70aed67974d80e6e17a data/energizedpower/recipe/crafting/ehv_transformer_3_to_3.json -5896df2aa1d0b7a35e4e48a9d6a821635fc4479e data/energizedpower/recipe/crafting/lightning_generator.json -31ef4ae3588b1d0215f1dfbcb97d580202e4d7e1 data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_block.json +e44e45ab6196760d7a788e12a956b9eaa92d8029 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_sign.json +5832218e8d5b502f263b1464be8edc196736c330 data/energizedpower/recipe/growing/rose_bushes_from_growing_rose_bush.json +8f154ae0b3711e99262e1db4abe6b29b3c820850 data/energizedpower/recipe/crafting/basic_machine_frame.json +56dc50c46602a3ea3a81d1edb36a42c5ee6de811 data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_dust.json +444dbcf7bfd640053e2bf5796e7f23bc5c8e4252 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_door.json +8e180d91c8237c7f24106bf973146b123922ea7d data/energizedpower/recipe/crafting/ehv_transformer_3_to_3.json +13e5ccf79e69d5a3020ddeada9592934a2d26ebb data/energizedpower/recipe/crafting/lightning_generator.json +c0c3b863a3d0d2f5307d1d0b677ffc4361f13b2b data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_block.json 88068c34e45b62c09b8e93d238470d22b654f285 data/energizedpower/advancement/recipes/crafting/hardened_machine_frame.json -a6ae413fd19e269d619f5279aa182cffbf0a6950 data/energizedpower/recipe/crafting/press_mold_maker.json +956c05f4cdb14b39af8fe1770e5b7ff41f13ef7d data/energizedpower/recipe/crafting/press_mold_maker.json c40c155326b84b89f6819ba263626eee82a64c2f data/energizedpower/advancement/recipes/crafting/charcoal_filter.json -169d589b11ea6696526141a0870e989c24ab4a42 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_chest_boat.json -cd9c9e83c1e102d3e1025311878b29649748ebff data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_1.json -065887ed5451e4f49db78987ff33bff5dd8d7d11 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_boat.json -896b52e30163e2c5a280bf5962ec2e213898e447 data/energizedpower/recipe/crafting/coal_engine.json -abf5494402e08f9dccaee95f79e8fbf0a098eb46 data/energizedpower/recipe/crafting/range_upgrade_module_2.json +d17648081eda6023d8da67140496d0eea0603ae8 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_chest_boat.json +77aad6c3bea26556d6706c96d765be25f72cca88 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_1.json +f3ffed9dc855c4899d8d3a07a5f8b56f3377cb54 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_boat.json +d0bdff0df25c784a7f069c4ca38d809fbc352013 data/energizedpower/recipe/crafting/coal_engine.json +489ebbc90d161fc71865ad1c996e143045379dc9 data/energizedpower/recipe/crafting/range_upgrade_module_2.json ca0f8301bdf397ab14e76a144ada53f2504e47b6 data/energizedpower/advancement/recipes/crafting/energy_efficiency_upgrade_module_1.json -4096cb64be3b47630b8b4034de7b8c00ef8990aa data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin_blocks.json -002f7f2a490df22d2d3cbf6964851b4af4e34a07 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_pressure_plate.json -c78327031334518333f8eb888fa5c45e68b54637 data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ingots.json -6247f8f07696fb8fd4a7caff112c47f1b9f25720 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_chest_boat.json -aeb970ee9a020f0f3c38f6e3b2a223e3c695da49 data/energizedpower/recipe/crafting/tin_wire.json +d6495cdde93a587cdab90c1770a5b4a677cdf54d data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin_blocks.json +80e04582d4e340f1059675804a9f56f86d61b60b data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_pressure_plate.json +ae2779a90ee587a5e22dd25144c3c8dbd03ce30b data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ingots.json +2328f1c05dbd32e49adff4f5d6638eab442b2439 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_chest_boat.json +4a1bebe43867f75c7fb987c0289491aa7e8e070c data/energizedpower/recipe/crafting/tin_wire.json d30063e84f5acca78af46193edacdd6fcb35a0f1 data/energizedpower/advancement/recipes/crafting/duration_upgrade_module_6.json -62d9c292c9170a1ab7fe28fbd3acd1bb619326c6 data/energizedpower/recipe/growing/bamboo_from_growing_bamboo.json +0b61dd4f35cff589b99637eeeddd51e749397419 data/energizedpower/recipe/growing/bamboo_from_growing_bamboo.json ddf93831f9cb7aa9a87a2875c3ab56b42bf9375c data/energizedpower/advancement/recipes/crafting/range_upgrade_module_3.json -a0e340c68b4b3fac31e5be05c5c2022dee529185 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper_blocks.json -0745aa32bae0c08fc510b5bd2bf8e6cd8b52121f data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_boat.json -e1ac5f3248c72d5ab2150c7d3daf8c22a12092f5 data/energizedpower/recipe/crafting/charcoal_filter.json -25cc13eaa9d99130601689092f6b73a4b789d6e7 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_pressure_plate.json -13c21d48cc923d3397782b701bd760ad90c3a62c data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_5.json -af8728284aca3a8f383fc00b77b20ab8be718333 data/energizedpower/recipe/growing/wheat_from_growing_wheat_seeds.json -d4be3b88db41c5ec2e319ad5f1252b9cfec1c302 data/energizedpower/advancement/recipes/crafting/iron_hammer.json -9ddbefea7f818716fb6b9f4b5ebb81ee4cf9d6c9 data/energizedpower/recipe/crafting/induction_smelter.json -8a8247621af724f7050e96f6d8f239cade3187d9 data/energizedpower/recipe/crafting/advanced_minecart_uncharger.json -94cbfd3ba023abcb1739a89cf9b6f5fa4f794b07 data/energizedpower/recipe/crafting/duration_upgrade_module_2.json +4dd44f7fb9a85b24a9648aaaeeb8c94cc0f23359 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper_blocks.json +207abb45ba9c73ad9042e8b813e47290b21f55c4 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_boat.json +a30cc6bd653f0047d45262adb7a9a58e42aa9c00 data/energizedpower/recipe/crafting/charcoal_filter.json +fc082ca18d113413400919cb63a6d2d9bd707f09 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_pressure_plate.json +6889518fdb6ffc5ae34ee76931dbd287ca736033 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_5.json +89e68e263b159e50a8d9674656cdb137e796e413 data/energizedpower/recipe/growing/wheat_from_growing_wheat_seeds.json +33a82489d371e6c1f192325553d59c881629e1ba data/energizedpower/advancement/recipes/crafting/iron_hammer.json +6ab2d4556bd48d24f1b1fc33cc98b6e678114462 data/energizedpower/recipe/crafting/induction_smelter.json +25c74910d56e80ea9ce7bc63acc870eda6ad32d1 data/energizedpower/recipe/crafting/advanced_minecart_uncharger.json +14209b7e1597d14e372d7e6ad1409ecdae379320 data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_stairs.json +08c2c1304e80792a98ab73ee89c78af1f427d593 data/energizedpower/recipe/crafting/duration_upgrade_module_2.json 7fa2c36905c2cb78b498974968389340646c9d17 data/energizedpower/advancement/recipes/smelting/iron_nugget_from_smelting_iron_hammer.json -df41e331ad735be53f8db54512ca155936b2d395 data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone.json -fc2b3b87644099627302d7f0a10bf37e4ae3b1e4 data/energizedpower/recipe/fluid_transposer/blue_concrete.json +d49d3397d53c943b8d3548da3a0a626427c8a547 data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone.json +a1d0134667dc13e566d4b55064ae30ef3a527089 data/energizedpower/recipe/fluid_transposer/blue_concrete.json 28a354b962351e752a70c9f116f752ab78d3dad1 data/energizedpower/advancement/recipes/crafting/mv_transformer_1_to_n.json -7c146ed5a7ecf3a8f52c2dd5c51a0ca00c0a0b23 data/energizedpower/recipe/crafting/battery_4.json +6cb882024183049e9048ecd12e858314fbcf5bca data/energizedpower/recipe/crafting/battery_4.json 753862f9eddd618ce76cefc68ba6ca06ef847255 data/energizedpower/advancement/recipes/crafting/powered_lamp.json -9c207ae82a1f813fb173666225b6594447b4e41b data/energizedpower/recipe/growing/pumpkin_from_growing_pumpkin_seeds.json -b35b227b08dbd496ef3d5b0ffe5552ee481079bc data/energizedpower/recipe/crafting/cutter.json -784e5fe83959bb0d4efb75fc5aeedfc64f5afb4c data/energizedpower/recipe/crusher/tuff_from_crushing_tuff_variants.json -65b040eb0d096f10759296522ede35e2165dd310 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence.json -69d414cf732ee0f4209b51126beb4b24229b675f data/energizedpower/recipe/growing/azure_bluets_from_growing_azure_bluet.json +57cd6679efb7caf85f03afe8d2419d504e09c85a data/energizedpower/recipe/growing/pumpkin_from_growing_pumpkin_seeds.json +c716b5ff5d82a98dd9fdbb2d764bd25cc6b83be7 data/energizedpower/recipe/crafting/cutter.json +9814eaafd9bea81f0bc3fc0e037a74cb451c9f4f data/energizedpower/recipe/crusher/tuff_from_crushing_tuff_variants.json +9295206fb8a6352f0d431c79fe78453c71a08c7c data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence.json +1fc53efc287c667acce95b33ccdc97f92686520d data/energizedpower/recipe/growing/azure_bluets_from_growing_azure_bluet.json diff --git a/src/generated/resources/.cache/30cb00db1c2a2f188c206a001f53abd8ae32c39e b/src/generated/resources/.cache/30cb00db1c2a2f188c206a001f53abd8ae32c39e index dfb937f25..9e65a8302 100644 --- a/src/generated/resources/.cache/30cb00db1c2a2f188c206a001f53abd8ae32c39e +++ b/src/generated/resources/.cache/30cb00db1c2a2f188c206a001f53abd8ae32c39e @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-21T20:30:22.460980608 Energized Power/Block Loot Tables +// 1.21.2 2025-01-19T18:23:01.789865348 Energized Power/Block Loot Tables 4031842599e191385675273dfed5cd6f3c449e20 data/energizedpower/loot_table/blocks/item_conveyor_belt_loader.json 0969fa6cea044e0a38c7e55a6f7ddb6bd0c39218 data/energizedpower/loot_table/blocks/stone_solidifier.json 616950a2a37d1032997d6adcc28ddc462e137e97 data/energizedpower/loot_table/blocks/fluid_filler.json @@ -49,8 +49,8 @@ a573ef14231d9cc8f15eb515117c456c5d5f09c2 data/energizedpower/loot_table/blocks/g 97b44c3da7a35aa74eceff3cd3f955baa377c872 data/energizedpower/loot_table/blocks/basic_machine_frame.json 0834185a3d0dbfd976b7206df250f5fdd9a5639d data/energizedpower/loot_table/blocks/plant_growth_chamber.json 4cbdabb03cd92cf53682b2d9e4b483410dd49c3d data/energizedpower/loot_table/blocks/block_placer.json -75cd2b9225591085c881138629a609012dfecb68 data/energizedpower/loot_table/blocks/fluid_pipe.json e541dc4bb9d7520893cbdc0581388e789484b38d data/energizedpower/loot_table/blocks/energized_crystal_matrix_cable.json +75cd2b9225591085c881138629a609012dfecb68 data/energizedpower/loot_table/blocks/fluid_pipe.json 44cf775e849ca5fcf0c7711436190b7b512a73e2 data/energizedpower/loot_table/blocks/advanced_uncharger.json 5b9c417dffd3bbc4fcbcc5b50d830e4e976b55ca data/energizedpower/loot_table/blocks/tin_block.json 25d0147d0fbd4d4a60079627ad059f02d1f91107 data/energizedpower/loot_table/blocks/tin_ore.json diff --git a/src/generated/resources/.cache/45bf58945b99de8e1d8fd096eb93e9c6ecbef3e0 b/src/generated/resources/.cache/45bf58945b99de8e1d8fd096eb93e9c6ecbef3e0 index 3d335be90..3ec44ce8d 100644 --- a/src/generated/resources/.cache/45bf58945b99de8e1d8fd096eb93e9c6ecbef3e0 +++ b/src/generated/resources/.cache/45bf58945b99de8e1d8fd096eb93e9c6ecbef3e0 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-21T20:30:22.456497223 Energized Power/Advancements (Advanced) +// 1.21.2 2025-01-19T18:23:01.787270661 Energized Power/Advancements (Advanced) 348c143ab4a32c8091ebc4914c660de205443faf data/energizedpower/advancement/main/advanced/duration_upgrade_module_4.json 98ec67818acc1cfeb4cb0869518643cdb8558c7f data/energizedpower/advancement/main/advanced/range_upgrade_module_2.json bf7fb6ac9fc4d202afead358445745e4a0df19de data/energizedpower/advancement/main/advanced/reinforced_advanced_upgrade_module.json diff --git a/src/generated/resources/.cache/61a2129db19d91bc9e82e9f5fc1ab563678d0663 b/src/generated/resources/.cache/61a2129db19d91bc9e82e9f5fc1ab563678d0663 index c311b9082..161c070ff 100644 --- a/src/generated/resources/.cache/61a2129db19d91bc9e82e9f5fc1ab563678d0663 +++ b/src/generated/resources/.cache/61a2129db19d91bc9e82e9f5fc1ab563678d0663 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-21T20:30:22.452775224 Energized Power/Model Definitions +// 1.21.2 2025-01-19T18:23:01.785397118 Energized Power/Model Definitions ca76b5ac4db2216a2ab6250baf6f84d5ba33acd8 assets/energizedpower/blockstates/fluid_tank_medium.json 952e2488cacb991210a8a80387215f6f216ea320 assets/energizedpower/models/item/tin_dust.json a6b104fa8caf7830dd99f3efba76aec320c7855e assets/energizedpower/models/block/copper_cable_side.json @@ -13,8 +13,8 @@ b78d47e7e2fd7be3bd6ccfd770f32ef6fb847f35 assets/energizedpower/models/item/filtr 6f6c93c9f6e14213bcf72290535c722025601deb assets/energizedpower/models/item/alloy_furnace.json f308fef0c72d2385996b2286014781d2e012232c assets/energizedpower/models/item/sawdust_block.json 2fec8ac0111e6a12dec15197cf724b043604d03a assets/energizedpower/models/block/hv_transformer_n_to_1.json -be9a2abe9ad8facd34c63b9a52dee50a4f5b9000 assets/energizedpower/blockstates/hv_transformer_1_to_n.json 1d31d5b61a56b63a0a1cf0b7748831755293e4d6 assets/energizedpower/blockstates/solar_panel_6.json +be9a2abe9ad8facd34c63b9a52dee50a4f5b9000 assets/energizedpower/blockstates/hv_transformer_1_to_n.json 93752060be44019ad114802e18afea859cd0f7aa assets/energizedpower/models/item/energized_copper_wire.json a3a693f00d0f9ab8a437ff8d2568ff5e04299134 assets/energizedpower/models/block/energized_copper_cable_core.json c1f35b4ded8f9a43bae9918ba642655769e6b969 assets/energizedpower/models/item/sawmill.json @@ -46,8 +46,8 @@ a9b52905eb42fdc53da07090308d6f3345038fc3 assets/energizedpower/models/block/flui 74937ff71b756ed0e47a92505fec17a4c14ce5d2 assets/energizedpower/blockstates/creative_battery_box.json 54e3453310b46623fd03368ca8c86a6a623a5f58 assets/energizedpower/models/item/auto_crafter.json 64fdcca75651951227db798db9f6a34d029babb1 assets/energizedpower/blockstates/advanced_machine_frame.json -5dd7706d51bd4be9c7302f705af059fa84fd567a assets/energizedpower/models/item/energy_efficiency_upgrade_module_3.json 244da3ee738d7745b40c80971629eb93f23c471f assets/energizedpower/models/item/basic_fertilizer.json +5dd7706d51bd4be9c7302f705af059fa84fd567a assets/energizedpower/models/item/energy_efficiency_upgrade_module_3.json 7f12ab1141d3b0b73aeeeb0198321e42a23f8e92 assets/energizedpower/models/item/gold_plate.json 65e487659a399dd42bfbefa44990dd543b5dada4 assets/energizedpower/blockstates/fluid_pipe.json 0a8383c7c7f344aa3702205c579a274f5ed5ae0e assets/energizedpower/blockstates/advanced_uncharger.json @@ -70,8 +70,8 @@ b4cce92b1a9845f7f80e21b777a2190f20c35e4e assets/energizedpower/models/item/iron_ 04f7230363fc71f3872bedc56e8ce24adfb1feab assets/energizedpower/blockstates/fluid_drainer.json 38f3f41cfddaf73a189b6ff894a12d07f8593571 assets/energizedpower/models/block/golden_fluid_pipe_core.json 0d4d564988b826b260f6864d0584ad80d30f77c7 assets/energizedpower/blockstates/hv_transformer_n_to_1.json -2502ac3307919cd28d1b87cc668688a33853f012 assets/energizedpower/models/block/coal_engine.json 45969708683a3c836a3b59242f30b5232dae8eb6 assets/energizedpower/models/item/solar_panel_2.json +2502ac3307919cd28d1b87cc668688a33853f012 assets/energizedpower/models/block/coal_engine.json 646899470e36810ad9285450c992f6f6a9d33922 assets/energizedpower/models/item/energy_analyzer.json b5a51a3faf92ce1695d7631457e81ad855bc18e4 assets/energizedpower/models/item/battery_5.json ef31216bb734c8433981a8b992e53c35bb212999 assets/energizedpower/models/item/inventory_coal_engine_active.json @@ -126,8 +126,8 @@ b24ea706373ed2fb96165a8c6da0c0309adb3112 assets/energizedpower/models/item/extra b982bf53e3cc6b4ab99a408575a62c4c0d85013b assets/energizedpower/models/block/advanced_minecart_charger.json bdaa97cd9c8644a7feb3ff7eb30af54f73412006 assets/energizedpower/blockstates/tin_ore.json 17d8a7f18babcbfd9d78be66322d8351cea4f8c8 assets/energizedpower/blockstates/advanced_auto_crafter.json -948fb3b46e7a003c728cca7442e330f3e4723d5b assets/energizedpower/models/block/raw_tin_block.json 1512e69d7a401332dc7a8ec7cba40b03bd75b382 assets/energizedpower/models/item/range_upgrade_module_3.json +948fb3b46e7a003c728cca7442e330f3e4723d5b assets/energizedpower/models/block/raw_tin_block.json 041643a52ba21431a32eb0d7a98f56b3293fee17 assets/energizedpower/models/block/tin_block.json 6d71aa8678385d6adea0edce8fdade66dfeddb2e assets/energizedpower/models/item/inventory_teleporter.json 1397ad4102bafde751cdc656e57b97768e1b1b36 assets/energizedpower/models/block/item_conveyor_belt_splitter.json @@ -216,8 +216,8 @@ d3bdcfaf9c92e8181d1e9a6f9e1bb8a1a4ffb944 assets/energizedpower/blockstates/solar e369beef0c2c97c55764b6aa54dc0f2de65aa3c5 assets/energizedpower/models/block/alloy_furnace.json adcf3e7205c9446b797041665b8d211297b5b7f2 assets/energizedpower/models/item/moon_light_upgrade_module_1.json 000018fa3ddb9cff6a9b4bfebbdbaaa0a8c5ed13 assets/energizedpower/blockstates/teleporter.json -918b02d7c68e47e05364d7cb68adc9682b7ba035 assets/energizedpower/models/block/plant_growth_chamber.json 6e5c5c16b9dae86d11286cd9d581ccc52407b625 assets/energizedpower/models/block/solar_panel_3.json +918b02d7c68e47e05364d7cb68adc9682b7ba035 assets/energizedpower/models/block/plant_growth_chamber.json fd4d9f89cdb72f9df7243bbd3c1c5c17c62caa11 assets/energizedpower/models/item/advanced_pulverizer.json 547d27532ef22b5f66ce37ad83bc733322fb7065 assets/energizedpower/models/item/gold_dust.json 8a537a08e75b5e642226d025e60aca9a020c5cce assets/energizedpower/models/item/battery_2.json @@ -232,8 +232,8 @@ c07deee6fbbaeddf6987586760841d3de6c93b63 assets/energizedpower/models/block/ener 72210e2546991884a16bff6b23fe2512a377bbb6 assets/energizedpower/models/block/advanced_powered_furnace_on.json 019532839ab48f943cb307b65077fa79ba9d5629 assets/energizedpower/models/block/fluid_tank_small.json 10aad478e69cde0660a4b9d64ca4d1bcf76352f8 assets/energizedpower/blockstates/copper_cable.json -28c062f9f4e6a4bdbcb754480ad51273022638d5 assets/energizedpower/blockstates/item_conveyor_belt_splitter.json 21e33cfb503f76c0baa63ebe97333b499005d4e2 assets/energizedpower/blockstates/heat_generator.json +28c062f9f4e6a4bdbcb754480ad51273022638d5 assets/energizedpower/blockstates/item_conveyor_belt_splitter.json d095d7d4315bca1d8c35a2ce534d197e358247c0 assets/energizedpower/models/item/battery_box.json 27e62839fb1f16628b931722588701d82532a5c0 assets/energizedpower/models/item/drain.json 8c92aaa052c1b26e34701058211349ae5955a3af assets/energizedpower/models/item/energized_crystal_matrix_cable.json @@ -323,8 +323,8 @@ f7e214611d2c26d930ce2d01f1f2ecc6dd839d4b assets/energizedpower/models/item/golde 3d0d11e167f266547c4ca8b6edbd0309ff3e081f assets/energizedpower/models/item/extraction_depth_upgrade_module_1.json 188f63673b6dc9cdcb5e174afd075aaa313e5028 assets/energizedpower/models/block/ehv_transformer_3_to_3.json 835ad6528a0304c47736f0eb001814e2cb690f2c assets/energizedpower/models/item/item_conveyor_belt_loader.json -3f1c9eb6961d5c8493cbdb4f199b56e80a4ec150 assets/energizedpower/blockstates/fluid_tank_large.json 821a9a8fb54a8ba16e209afae7e7237ab6794ff5 assets/energizedpower/blockstates/lv_transformer_1_to_n.json +3f1c9eb6961d5c8493cbdb4f199b56e80a4ec150 assets/energizedpower/blockstates/fluid_tank_large.json 7925aed2b9e14f2ff08103ede56453089bd930aa assets/energizedpower/models/item/teleporter_matrix.json a270176f635a46ec9b188ea60bab9c25adb7c663 assets/energizedpower/blockstates/reinforced_advanced_machine_frame.json 0e0367d46698149b04cfae22b70f67fdc410a7f2 assets/energizedpower/models/item/dirty_water_bucket.json @@ -334,8 +334,8 @@ b788ccc0dbcd4aba1808f33b396efd380735566a assets/energizedpower/blockstates/fluid c9c11ff2b1f89c857b6f1f61d2ce800144d97717 assets/energizedpower/models/block/powered_furnace.json fc3199a3a40ade13137276b08589ddce3ee1d4f3 assets/energizedpower/models/item/copper_wire.json ae591142a9e184953aee293f320cf2a9f2811568 assets/energizedpower/blockstates/solar_panel_5.json -eef77da8af0d16376ff6f236eef24e762e42504a assets/energizedpower/models/item/teleporter_processing_unit.json ea36ed6d3705d8d983553854b2966e86157352f2 assets/energizedpower/blockstates/item_conveyor_belt.json +eef77da8af0d16376ff6f236eef24e762e42504a assets/energizedpower/models/item/teleporter_processing_unit.json cc51af62242b2bf2ffbf9515f678079a1cd3d61f assets/energizedpower/models/item/basic_machine_frame.json 91b152370b9626e992e9509844b9b5165ffb3451 assets/energizedpower/models/item/creative_battery_box.json f358ad2e600035b0edeae3a56ba3843b4677c9d5 assets/energizedpower/models/block/battery_box.json @@ -406,15 +406,15 @@ d18cb1c8afa39e643c0a4df22940b041d7b9675c assets/energizedpower/models/item/cutte 1f92cb3d78c9f713b7201f1ceab30fbeb5bc2c8a assets/energizedpower/models/item/crystal_growth_chamber.json 93b7cd8a5ccbedbab4f8f8060fa7ba5311fe32bc assets/energizedpower/models/item/wooden_hammer.json 0aa26681b7f1c4a8a3f94a3cf3b721d910096653 assets/energizedpower/models/block/golden_fluid_pipe_side_extract.json -94e4dbe28dc38eec0c1fb4971fb4e7d8459cf434 assets/energizedpower/blockstates/transformer_n_to_1.json 431bbedc3e5848b5d3478d29a91aedb2cf90ff2d assets/energizedpower/blockstates/advanced_battery_box.json +94e4dbe28dc38eec0c1fb4971fb4e7d8459cf434 assets/energizedpower/blockstates/transformer_n_to_1.json 61c6d956c7ff802d1058a3688558587547d2499b assets/energizedpower/models/block/solar_panel_2.json b7d2badc156d4328284b85ff99c97bf11d52c053 assets/energizedpower/blockstates/alloy_furnace.json 30df35fd726443b136a34f8c6f151b634b8e7e12 assets/energizedpower/models/item/metal_press.json 3c477e55d7db014cdab29a57a05790b8a13e914c assets/energizedpower/models/item/reinforced_advanced_machine_frame.json 03811db3ca3b7e91b3f533725156309031f9a2e0 assets/energizedpower/models/item/energy_efficiency_upgrade_module_5.json -74f86d228d0a8d9b67652474208809b3d5713727 assets/energizedpower/models/block/item_conveyor_belt_flat.json e8c97ac83e0a045f3c8e354462058f41c887d8f9 assets/energizedpower/models/block/item_conveyor_belt.json +74f86d228d0a8d9b67652474208809b3d5713727 assets/energizedpower/models/block/item_conveyor_belt_flat.json 90ab8b8dce5432fea001aa39c7635a95c65afcb6 assets/energizedpower/models/item/gold_wire.json a46ab724d76d9aa83b2fa1aa3c2beb550f73a8e0 assets/energizedpower/models/item/charcoal_dust.json 4d656b7c3e82111bd7642dafc20ae992995e2ea7 assets/energizedpower/models/item/hv_transformer_n_to_1.json diff --git a/src/generated/resources/.cache/6dc4ad12d3c8855c07be9363a20923ccfe150898 b/src/generated/resources/.cache/6dc4ad12d3c8855c07be9363a20923ccfe150898 index dbdee4161..e14c39504 100644 --- a/src/generated/resources/.cache/6dc4ad12d3c8855c07be9363a20923ccfe150898 +++ b/src/generated/resources/.cache/6dc4ad12d3c8855c07be9363a20923ccfe150898 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-21T20:30:22.4569222 Energized Power/Tags for minecraft:item +// 1.21.2 2025-01-19T18:23:01.787481349 Energized Power/Tags for minecraft:item 5aeb1d268a4af3b906f9030117d116c5e435f51b data/c/tags/item/ingots/redstone_alloy.json fd183452dd799f8a170ed852d3c32a0429121458 data/c/tags/item/storage_blocks/tin.json 84765d7cb4a258a98ef9381bc0f7b5c2ef6f1e17 data/c/tags/item/ingots/tin.json diff --git a/src/generated/resources/.cache/91a8cd24f530640f6c4efc077c96a20e92575fd7 b/src/generated/resources/.cache/91a8cd24f530640f6c4efc077c96a20e92575fd7 index 239524666..bfe3c71ba 100644 --- a/src/generated/resources/.cache/91a8cd24f530640f6c4efc077c96a20e92575fd7 +++ b/src/generated/resources/.cache/91a8cd24f530640f6c4efc077c96a20e92575fd7 @@ -1,11 +1,11 @@ -// 1.21.1 2024-09-21T20:30:22.456305454 Energized Power/Registries Provider +// 1.21.2 2025-01-19T18:23:01.787163712 Energized Power/Registries Provider 316a8070a2e8dec6a6b08dfd04b23753c416ee12 data/energizedpower/worldgen/placed_feature/tin_ore.json 9878f9343dbce3411240fe787a7ed64c53c4b4f7 data/energizedpower/worldgen/template_pool/small_solar_farm/start_pool.json 0500aa67ea447840a34da89ebbd66f9dc2537655 data/energizedpower/worldgen/structure/small_solar_farm.json d5cab9c11276e0886a4551f58ebfa1292873b4c9 data/energizedpower/worldgen/template_pool/factory_1/start_pool.json 7eb9432a99d812d01c0f4849e2ef13bb2e9a2c00 data/energizedpower/worldgen/structure_set/factory_1.json bf89128f4dddb66a1c182d41a8e696a3110648e0 data/energizedpower/worldgen/structure_set/small_solar_farm.json -5ad2dc86a2177ff5f25a527336dc78b3dd2dc062 data/energizedpower/painting_variant/gear.json +40ec13debc1998414c281ce78ac0bd6ea9245328 data/energizedpower/painting_variant/gear.json aaa78c8c33a9aa7cd3386b065f9ab80bd1db1ad4 data/energizedpower/worldgen/configured_feature/tin_ore.json 7ccd724e560b63f6b4858380f484c3c84b2dd1c0 data/energizedpower/worldgen/structure/factory_1.json -315171f8b72c2c383c6e8644ee24528e46a14d3e data/energizedpower/painting_variant/factory.json +74c397de30bc0f8c1484a85450c0b2099ec60072 data/energizedpower/painting_variant/factory.json diff --git a/src/generated/resources/.cache/92c7384ad795a5537a50be2f271330fefca3f635 b/src/generated/resources/.cache/92c7384ad795a5537a50be2f271330fefca3f635 index 00e789676..493dbfc3b 100644 --- a/src/generated/resources/.cache/92c7384ad795a5537a50be2f271330fefca3f635 +++ b/src/generated/resources/.cache/92c7384ad795a5537a50be2f271330fefca3f635 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-21T20:30:22.461584275 Energized Power/Tags for minecraft:block +// 1.21.2 2025-01-19T18:23:01.790115547 Energized Power/Tags for minecraft:block a6059a627c0cc23ca09e65f9b660f52fb6cd7541 data/c/tags/block/storage_blocks/silicon.json 0188b32506d053262085462e35472b10a97de3fb data/minecraft/tags/block/needs_stone_tool.json 3dd65c930d78a891766bed591b7962b592077cab data/c/tags/block/ores_in_ground/deepslate.json diff --git a/src/generated/resources/.cache/a14de9a9eafa15e4f5d8531aa403ee32c2c64de8 b/src/generated/resources/.cache/a14de9a9eafa15e4f5d8531aa403ee32c2c64de8 index f798db18b..fff6c2ad8 100644 --- a/src/generated/resources/.cache/a14de9a9eafa15e4f5d8531aa403ee32c2c64de8 +++ b/src/generated/resources/.cache/a14de9a9eafa15e4f5d8531aa403ee32c2c64de8 @@ -1,3 +1,3 @@ -// 1.21.1 2024-09-21T20:30:22.461722914 Energized Power/Tags for minecraft:worldgen/biome +// 1.21.2 2025-01-19T18:23:01.790189142 Energized Power/Tags for minecraft:worldgen/biome 5056f3bd580be2fd51c5ed3c2780ed82e9a2768a data/energizedpower/tags/worldgen/biome/has_structure/factory_1.json 164200eb063c897fb31d324663b6697fd4fc8e99 data/energizedpower/tags/worldgen/biome/has_structure/small_solar_farm.json diff --git a/src/generated/resources/.cache/aa30a14434758698d25134bbd84217009936019d b/src/generated/resources/.cache/aa30a14434758698d25134bbd84217009936019d index 568458006..780ce1824 100644 --- a/src/generated/resources/.cache/aa30a14434758698d25134bbd84217009936019d +++ b/src/generated/resources/.cache/aa30a14434758698d25134bbd84217009936019d @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-21T20:30:22.459920972 Energized Power/Advancements (Basics) +// 1.21.2 2025-01-19T18:23:01.789282265 Energized Power/Advancements (Basics) ff9949fe72dee114b53ee0f2b647b81b2f1f402b data/energizedpower/advancement/main/basics/extraction_depth_upgrade_module_2.json 5077465da380532c15013042a6350f9bb114e033 data/energizedpower/advancement/main/basics/tin_wire.json 758575b2c93bb79d57a98000a744b24d80d53b5f data/energizedpower/advancement/main/basics/minecart_uncharger.json diff --git a/src/generated/resources/.cache/b827f0e91e250ab35a3ab8ade0c3210bd92ef507 b/src/generated/resources/.cache/b827f0e91e250ab35a3ab8ade0c3210bd92ef507 index b3e920804..7f8931622 100644 --- a/src/generated/resources/.cache/b827f0e91e250ab35a3ab8ade0c3210bd92ef507 +++ b/src/generated/resources/.cache/b827f0e91e250ab35a3ab8ade0c3210bd92ef507 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-21T20:30:22.460438375 Energized Power/Book Pages: energizedpower +// 1.21.2 2025-01-19T18:23:01.789562957 Energized Power/Book Pages: energizedpower 72be5264065a2e5411f5cb57146f147f462bbfc5 assets/energizedpower/book_pages/chapters/0080_item_transportation/0060_item_conveyor_belt_merger.json 92a7dc0a8ac2d306b45b0a156e9331d4325e1686 assets/energizedpower/book_pages/chapters/0060_energy_blocks/0050_energy_consumption/0150_fluid_transposer.json 7bb6a7187d0a9d8abc534220044ccfa14b1a46be assets/energizedpower/book_pages/chapters/0010_resources/0020_saw_blade.json @@ -7,8 +7,8 @@ 8bf4e9736f3efd05066f88e49eb9ec11aa5aaaf4 assets/energizedpower/book_pages/chapters/0010_resources/0150_energized_crystal_matrix.json 335066f689f30bbbfc3ccfd9824844cf56d167ef assets/energizedpower/book_pages/chapters/0090_fluids/0010_dirty_water.json 4d8bc14e0040f3ae324a77136f1c79ad8dfdc12c assets/energizedpower/book_pages/chapters/0060_energy_blocks/0050_energy_consumption/0250_time_controller.json -63d28d14ae7873c0b527719895be35c6d32cb5c0 assets/energizedpower/book_pages/chapters/0060_energy_blocks/0050_energy_consumption/0100_auto_stonecutter.json a5db5ebde926b6f5cd5d8fddefa2fd5ad288a396 assets/energizedpower/book_pages/chapters/0010_resources/0110_metal_products.json +63d28d14ae7873c0b527719895be35c6d32cb5c0 assets/energizedpower/book_pages/chapters/0060_energy_blocks/0050_energy_consumption/0100_auto_stonecutter.json 7b3bafbf3e5d95192c1b37b09b8a9d0427e57505 assets/energizedpower/book_pages/chapters/0070_fluid_blocks/0030_drain.json ade5edc63375a9b26a530e90158f43693e9bc1f1 assets/energizedpower/book_pages/chapters/0000_welcome/0020_table_of_contents.json 8eebbbf90b39827bf2d6cb602440a64a851dd2b0 assets/energizedpower/book_pages/chapters/0020_upgrades/0030_energy_capacity_upgrades.json diff --git a/src/generated/resources/.cache/cda3e4c85727b044fb95c106daa39b97111ac8b6 b/src/generated/resources/.cache/cda3e4c85727b044fb95c106daa39b97111ac8b6 index 980a16e26..f6b5a8718 100644 --- a/src/generated/resources/.cache/cda3e4c85727b044fb95c106daa39b97111ac8b6 +++ b/src/generated/resources/.cache/cda3e4c85727b044fb95c106daa39b97111ac8b6 @@ -1,2 +1,2 @@ -// 1.21.1 2024-09-21T20:30:22.457261826 Energized Power/Tags for minecraft:point_of_interest_type +// 1.21.2 2025-01-19T18:23:01.787673045 Energized Power/Tags for minecraft:point_of_interest_type d042174582c5889006d89649caed5acc8e3f05e7 data/minecraft/tags/point_of_interest_type/acquirable_job_site.json diff --git a/src/generated/resources/.cache/fb2b4cb76b8f389f636d6c447615b099905f1ed1 b/src/generated/resources/.cache/fb2b4cb76b8f389f636d6c447615b099905f1ed1 index 343f162f6..cbda052fb 100644 --- a/src/generated/resources/.cache/fb2b4cb76b8f389f636d6c447615b099905f1ed1 +++ b/src/generated/resources/.cache/fb2b4cb76b8f389f636d6c447615b099905f1ed1 @@ -1,2 +1,2 @@ -// 1.21.1 2024-09-21T20:30:22.452323541 Energized Power/Tags for minecraft:painting_variant +// 1.21.2 2025-01-19T18:23:01.784937621 Energized Power/Tags for minecraft:painting_variant a8a6daa4902968eb7bd6579259038438741c926a data/minecraft/tags/painting_variant/placeable.json diff --git a/src/generated/resources/data/energizedpower/advancement/recipes/crafting/diamond_hammer.json b/src/generated/resources/data/energizedpower/advancement/recipes/crafting/diamond_hammer.json index 1a79a2d1c..a8f53cdb8 100644 --- a/src/generated/resources/data/energizedpower/advancement/recipes/crafting/diamond_hammer.json +++ b/src/generated/resources/data/energizedpower/advancement/recipes/crafting/diamond_hammer.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "#c:gems/diamond" + "items": "#minecraft:diamond_tool_materials" } ] }, diff --git a/src/generated/resources/data/energizedpower/advancement/recipes/crafting/golden_hammer.json b/src/generated/resources/data/energizedpower/advancement/recipes/crafting/golden_hammer.json index c828002b5..a13685430 100644 --- a/src/generated/resources/data/energizedpower/advancement/recipes/crafting/golden_hammer.json +++ b/src/generated/resources/data/energizedpower/advancement/recipes/crafting/golden_hammer.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "#c:ingots/gold" + "items": "#minecraft:gold_tool_materials" } ] }, diff --git a/src/generated/resources/data/energizedpower/advancement/recipes/crafting/iron_hammer.json b/src/generated/resources/data/energizedpower/advancement/recipes/crafting/iron_hammer.json index 725febed8..ab554203f 100644 --- a/src/generated/resources/data/energizedpower/advancement/recipes/crafting/iron_hammer.json +++ b/src/generated/resources/data/energizedpower/advancement/recipes/crafting/iron_hammer.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "#c:ingots/iron" + "items": "#minecraft:iron_tool_materials" } ] }, diff --git a/src/generated/resources/data/energizedpower/advancement/recipes/crafting/wooden_hammer.json b/src/generated/resources/data/energizedpower/advancement/recipes/crafting/wooden_hammer.json index e8b475d2f..17aaa7424 100644 --- a/src/generated/resources/data/energizedpower/advancement/recipes/crafting/wooden_hammer.json +++ b/src/generated/resources/data/energizedpower/advancement/recipes/crafting/wooden_hammer.json @@ -5,7 +5,7 @@ "conditions": { "items": [ { - "items": "#minecraft:planks" + "items": "#minecraft:wooden_tool_materials" } ] }, diff --git a/src/generated/resources/data/energizedpower/painting_variant/factory.json b/src/generated/resources/data/energizedpower/painting_variant/factory.json index ef8cd51fe..01417d955 100644 --- a/src/generated/resources/data/energizedpower/painting_variant/factory.json +++ b/src/generated/resources/data/energizedpower/painting_variant/factory.json @@ -1,5 +1,11 @@ { "asset_id": "energizedpower:factory", + "author": { + "translate": "painting.energizedpower.factory.author" + }, "height": 2, + "title": { + "translate": "painting.energizedpower.factory.title" + }, "width": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/painting_variant/gear.json b/src/generated/resources/data/energizedpower/painting_variant/gear.json index 12174e512..f99c56e49 100644 --- a/src/generated/resources/data/energizedpower/painting_variant/gear.json +++ b/src/generated/resources/data/energizedpower/painting_variant/gear.json @@ -1,5 +1,11 @@ { "asset_id": "energizedpower:gear", + "author": { + "translate": "painting.energizedpower.gear.author" + }, "height": 2, + "title": { + "translate": "painting.energizedpower.gear.title" + }, "width": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/alloy_furnace/advanced_alloy_ingot.json b/src/generated/resources/data/energizedpower/recipe/alloy_furnace/advanced_alloy_ingot.json index 4ab099997..a72c91e13 100644 --- a/src/generated/resources/data/energizedpower/recipe/alloy_furnace/advanced_alloy_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/alloy_furnace/advanced_alloy_ingot.json @@ -1,27 +1,22 @@ { "type": "energizedpower:alloy_furnace", - "inputs": [ + "ingredients": [ { "count": 3, - "input": { - "tag": "c:ingots/steel" - } + "ingredient": "#c:ingots/steel" }, { "count": 3, - "input": { - "tag": "c:ingots/copper" - } + "ingredient": "#c:ingots/copper" }, { "count": 3, - "input": { - "tag": "c:ingots/tin" - } + "ingredient": "#c:ingots/tin" } ], - "output": { - "item": "energizedpower:advanced_alloy_ingot" + "result": { + "count": 1, + "id": "energizedpower:advanced_alloy_ingot" }, "ticks": 10000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/alloy_furnace/redstone_alloy_ingot.json b/src/generated/resources/data/energizedpower/recipe/alloy_furnace/redstone_alloy_ingot.json index f01eb7b5b..c725ebeb4 100644 --- a/src/generated/resources/data/energizedpower/recipe/alloy_furnace/redstone_alloy_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/alloy_furnace/redstone_alloy_ingot.json @@ -1,25 +1,20 @@ { "type": "energizedpower:alloy_furnace", - "inputs": [ + "ingredients": [ { - "input": { - "tag": "c:ingots/tin" - } + "ingredient": "#c:ingots/tin" }, { - "input": { - "tag": "c:silicon" - } + "ingredient": "#c:silicon" }, { "count": 2, - "input": { - "tag": "c:dusts/redstone" - } + "ingredient": "#c:dusts/redstone" } ], - "output": { - "item": "energizedpower:redstone_alloy_ingot" + "result": { + "count": 1, + "id": "energizedpower:redstone_alloy_ingot" }, "ticks": 2500 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/alloy_furnace/steel_ingot.json b/src/generated/resources/data/energizedpower/recipe/alloy_furnace/steel_ingot.json index 0210034a0..ebb8bd3d1 100644 --- a/src/generated/resources/data/energizedpower/recipe/alloy_furnace/steel_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/alloy_furnace/steel_ingot.json @@ -1,20 +1,17 @@ { "type": "energizedpower:alloy_furnace", - "inputs": [ + "ingredients": [ { - "input": { - "tag": "c:ingots/iron" - } + "ingredient": "#c:ingots/iron" }, { "count": 3, - "input": { - "tag": "minecraft:coals" - } + "ingredient": "#minecraft:coals" } ], - "output": { - "item": "energizedpower:steel_ingot" + "result": { + "count": 1, + "id": "energizedpower:steel_ingot" }, "ticks": 500 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/assembling/advanced_circuit.json b/src/generated/resources/data/energizedpower/recipe/assembling/advanced_circuit.json index ce31333ba..a8f3bd286 100644 --- a/src/generated/resources/data/energizedpower/recipe/assembling/advanced_circuit.json +++ b/src/generated/resources/data/energizedpower/recipe/assembling/advanced_circuit.json @@ -1,32 +1,25 @@ { "type": "energizedpower:assembling_machine", - "inputs": [ + "ingredients": [ { "count": 4, - "input": { - "item": "energizedpower:basic_circuit" - } + "ingredient": "energizedpower:basic_circuit" }, { "count": 4, - "input": { - "tag": "c:wires/energized_copper" - } + "ingredient": "#c:wires/energized_copper" }, { "count": 4, - "input": { - "tag": "c:silicon" - } + "ingredient": "#c:silicon" }, { "count": 2, - "input": { - "tag": "c:dusts/redstone" - } + "ingredient": "#c:dusts/redstone" } ], - "output": { - "item": "energizedpower:advanced_circuit" + "result": { + "count": 1, + "id": "energizedpower:advanced_circuit" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/assembling/advanced_solar_cell.json b/src/generated/resources/data/energizedpower/recipe/assembling/advanced_solar_cell.json index 46a74ab8c..c724540da 100644 --- a/src/generated/resources/data/energizedpower/recipe/assembling/advanced_solar_cell.json +++ b/src/generated/resources/data/energizedpower/recipe/assembling/advanced_solar_cell.json @@ -1,31 +1,24 @@ { "type": "energizedpower:assembling_machine", - "inputs": [ + "ingredients": [ { "count": 2, - "input": { - "item": "energizedpower:basic_solar_cell" - } + "ingredient": "energizedpower:basic_solar_cell" }, { "count": 4, - "input": { - "tag": "c:ingots/energized_copper" - } + "ingredient": "#c:ingots/energized_copper" }, { "count": 2, - "input": { - "tag": "c:ingots/tin" - } + "ingredient": "#c:ingots/tin" }, { - "input": { - "tag": "c:ingots/redstone_alloy" - } + "ingredient": "#c:ingots/redstone_alloy" } ], - "output": { - "item": "energizedpower:advanced_solar_cell" + "result": { + "count": 1, + "id": "energizedpower:advanced_solar_cell" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/assembling/crystal_matrix.json b/src/generated/resources/data/energizedpower/recipe/assembling/crystal_matrix.json index da852f8e3..6b2fa8aed 100644 --- a/src/generated/resources/data/energizedpower/recipe/assembling/crystal_matrix.json +++ b/src/generated/resources/data/energizedpower/recipe/assembling/crystal_matrix.json @@ -1,31 +1,24 @@ { "type": "energizedpower:assembling_machine", - "inputs": [ + "ingredients": [ { "count": 6, - "input": { - "tag": "c:gems/amethyst" - } + "ingredient": "#c:gems/amethyst" }, { "count": 2, - "input": { - "tag": "c:gems/diamond" - } + "ingredient": "#c:gems/diamond" }, { "count": 2, - "input": { - "tag": "c:gems/emerald" - } + "ingredient": "#c:gems/emerald" }, { - "input": { - "tag": "c:ingots/redstone_alloy" - } + "ingredient": "#c:ingots/redstone_alloy" } ], - "output": { - "item": "energizedpower:crystal_matrix" + "result": { + "count": 1, + "id": "energizedpower:crystal_matrix" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/assembling/processing_unit.json b/src/generated/resources/data/energizedpower/recipe/assembling/processing_unit.json index bc6192f64..c044c2f27 100644 --- a/src/generated/resources/data/energizedpower/recipe/assembling/processing_unit.json +++ b/src/generated/resources/data/energizedpower/recipe/assembling/processing_unit.json @@ -1,26 +1,21 @@ { "type": "energizedpower:assembling_machine", - "inputs": [ + "ingredients": [ { "count": 4, - "input": { - "item": "energizedpower:advanced_circuit" - } + "ingredient": "energizedpower:advanced_circuit" }, { "count": 6, - "input": { - "tag": "c:wires/energized_gold" - } + "ingredient": "#c:wires/energized_gold" }, { "count": 6, - "input": { - "tag": "c:silicon" - } + "ingredient": "#c:silicon" } ], - "output": { - "item": "energizedpower:processing_unit" + "result": { + "count": 1, + "id": "energizedpower:processing_unit" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/assembling/reinforced_advanced_solar_cell.json b/src/generated/resources/data/energizedpower/recipe/assembling/reinforced_advanced_solar_cell.json index e425fb3cc..d7466b3cd 100644 --- a/src/generated/resources/data/energizedpower/recipe/assembling/reinforced_advanced_solar_cell.json +++ b/src/generated/resources/data/energizedpower/recipe/assembling/reinforced_advanced_solar_cell.json @@ -1,32 +1,25 @@ { "type": "energizedpower:assembling_machine", - "inputs": [ + "ingredients": [ { "count": 2, - "input": { - "item": "energizedpower:advanced_solar_cell" - } + "ingredient": "energizedpower:advanced_solar_cell" }, { "count": 4, - "input": { - "item": "energizedpower:energized_crystal_matrix" - } + "ingredient": "energizedpower:energized_crystal_matrix" }, { "count": 2, - "input": { - "tag": "c:silicon" - } + "ingredient": "#c:silicon" }, { "count": 2, - "input": { - "tag": "c:dusts/redstone" - } + "ingredient": "#c:dusts/redstone" } ], - "output": { - "item": "energizedpower:reinforced_advanced_solar_cell" + "result": { + "count": 1, + "id": "energizedpower:reinforced_advanced_solar_cell" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/assembling/teleporter_processing_unit.json b/src/generated/resources/data/energizedpower/recipe/assembling/teleporter_processing_unit.json index df691265f..4cb748c8e 100644 --- a/src/generated/resources/data/energizedpower/recipe/assembling/teleporter_processing_unit.json +++ b/src/generated/resources/data/energizedpower/recipe/assembling/teleporter_processing_unit.json @@ -1,32 +1,25 @@ { "type": "energizedpower:assembling_machine", - "inputs": [ + "ingredients": [ { "count": 4, - "input": { - "item": "energizedpower:processing_unit" - } + "ingredient": "energizedpower:processing_unit" }, { "count": 4, - "input": { - "item": "energizedpower:teleporter_matrix" - } + "ingredient": "energizedpower:teleporter_matrix" }, { "count": 2, - "input": { - "item": "energizedpower:energized_crystal_matrix" - } + "ingredient": "energizedpower:energized_crystal_matrix" }, { "count": 2, - "input": { - "tag": "c:silicon" - } + "ingredient": "#c:silicon" } ], - "output": { - "item": "energizedpower:teleporter_processing_unit" + "result": { + "count": 1, + "id": "energizedpower:teleporter_processing_unit" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/copper_ingot_from_blasting_copper_dust.json b/src/generated/resources/data/energizedpower/recipe/blasting/copper_ingot_from_blasting_copper_dust.json index 5758c4e9b..3ff4311c7 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/copper_ingot_from_blasting_copper_dust.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/copper_ingot_from_blasting_copper_dust.json @@ -4,9 +4,7 @@ "cookingtime": 100, "experience": 0.7, "group": "copper_ingot", - "ingredient": { - "tag": "c:dusts/copper" - }, + "ingredient": "#c:dusts/copper", "result": { "id": "minecraft:copper_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/gold_ingot_from_blasting_gold_dust.json b/src/generated/resources/data/energizedpower/recipe/blasting/gold_ingot_from_blasting_gold_dust.json index e3a173fe6..97977fdf9 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/gold_ingot_from_blasting_gold_dust.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/gold_ingot_from_blasting_gold_dust.json @@ -4,9 +4,7 @@ "cookingtime": 100, "experience": 0.7, "group": "gold_ingot", - "ingredient": { - "tag": "c:dusts/gold" - }, + "ingredient": "#c:dusts/gold", "result": { "id": "minecraft:gold_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/gold_nugget_from_blasting_golden_hammer.json b/src/generated/resources/data/energizedpower/recipe/blasting/gold_nugget_from_blasting_golden_hammer.json index 16be41577..c3171c507 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/gold_nugget_from_blasting_golden_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/gold_nugget_from_blasting_golden_hammer.json @@ -4,9 +4,7 @@ "cookingtime": 100, "experience": 0.1, "group": "gold_nugget", - "ingredient": { - "item": "energizedpower:golden_hammer" - }, + "ingredient": "energizedpower:golden_hammer", "result": { "id": "minecraft:gold_nugget" } diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/iron_ingot_from_blasting_iron_dust.json b/src/generated/resources/data/energizedpower/recipe/blasting/iron_ingot_from_blasting_iron_dust.json index 560336a7e..58831f3d5 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/iron_ingot_from_blasting_iron_dust.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/iron_ingot_from_blasting_iron_dust.json @@ -4,9 +4,7 @@ "cookingtime": 100, "experience": 0.7, "group": "iron_ingot", - "ingredient": { - "tag": "c:dusts/iron" - }, + "ingredient": "#c:dusts/iron", "result": { "id": "minecraft:iron_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/iron_nugget_from_blasting_iron_hammer.json b/src/generated/resources/data/energizedpower/recipe/blasting/iron_nugget_from_blasting_iron_hammer.json index bd00b5f2d..7ad2e8582 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/iron_nugget_from_blasting_iron_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/iron_nugget_from_blasting_iron_hammer.json @@ -4,9 +4,7 @@ "cookingtime": 100, "experience": 0.1, "group": "iron_nugget", - "ingredient": { - "item": "energizedpower:iron_hammer" - }, + "ingredient": "energizedpower:iron_hammer", "result": { "id": "minecraft:iron_nugget" } diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/silicon_from_blasting_nether_quartz.json b/src/generated/resources/data/energizedpower/recipe/blasting/silicon_from_blasting_nether_quartz.json index f299d2901..9973ec692 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/silicon_from_blasting_nether_quartz.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/silicon_from_blasting_nether_quartz.json @@ -4,9 +4,7 @@ "cookingtime": 250, "experience": 4.1, "group": "silicon", - "ingredient": { - "tag": "c:gems/quartz" - }, + "ingredient": "#c:gems/quartz", "result": { "id": "energizedpower:silicon" } diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_raw_tin.json b/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_raw_tin.json index a36a3bf7e..3ff04bdbd 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_raw_tin.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_raw_tin.json @@ -4,9 +4,7 @@ "cookingtime": 100, "experience": 0.7, "group": "tin_ingot", - "ingredient": { - "tag": "c:raw_materials/tin" - }, + "ingredient": "#c:raw_materials/tin", "result": { "id": "energizedpower:tin_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_dust.json b/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_dust.json index 58cd6f295..0c54b0e84 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_dust.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_dust.json @@ -4,9 +4,7 @@ "cookingtime": 100, "experience": 0.7, "group": "tin_ingot", - "ingredient": { - "tag": "c:dusts/tin" - }, + "ingredient": "#c:dusts/tin", "result": { "id": "energizedpower:tin_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_ores.json b/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_ores.json index 47b82b860..42a496a12 100644 --- a/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_ores.json @@ -4,9 +4,7 @@ "cookingtime": 100, "experience": 0.7, "group": "tin_ingot", - "ingredient": { - "tag": "c:ores/tin" - }, + "ingredient": "#c:ores/tin", "result": { "id": "energizedpower:tin_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/charger/energized_copper_ingot.json b/src/generated/resources/data/energizedpower/recipe/charger/energized_copper_ingot.json index 1ebac677a..2887dbe64 100644 --- a/src/generated/resources/data/energizedpower/recipe/charger/energized_copper_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/charger/energized_copper_ingot.json @@ -1,10 +1,9 @@ { "type": "energizedpower:charger", "energy": 4194304, - "ingredient": { - "tag": "c:ingots/copper" - }, - "output": { - "item": "energizedpower:energized_copper_ingot" + "ingredient": "#c:ingots/copper", + "result": { + "count": 1, + "id": "energizedpower:energized_copper_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/advanced_alloy_plate_from_compressing_advanced_alloy_ingot.json b/src/generated/resources/data/energizedpower/recipe/compressing/advanced_alloy_plate_from_compressing_advanced_alloy_ingot.json index 39cac4e14..0a41f2e84 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/advanced_alloy_plate_from_compressing_advanced_alloy_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/advanced_alloy_plate_from_compressing_advanced_alloy_ingot.json @@ -1,9 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:ingots/advanced_alloy" + "ingredient": "#c:ingots/advanced_alloy" }, - "output": { - "item": "energizedpower:advanced_alloy_plate" + "result": { + "count": 1, + "id": "energizedpower:advanced_alloy_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/cobblestone_from_compressing_stone_pebbles.json b/src/generated/resources/data/energizedpower/recipe/compressing/cobblestone_from_compressing_stone_pebbles.json index 37140ef3c..84eae88ce 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/cobblestone_from_compressing_stone_pebbles.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/cobblestone_from_compressing_stone_pebbles.json @@ -1,10 +1,11 @@ { "type": "energizedpower:compressor", "ingredient": { - "item": "energizedpower:stone_pebble" + "count": 16, + "ingredient": "energizedpower:stone_pebble" }, - "inputCount": 16, - "output": { - "item": "minecraft:cobblestone" + "result": { + "count": 1, + "id": "minecraft:cobblestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_block.json b/src/generated/resources/data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_block.json index 5a9715c1c..282035f73 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_block.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_block.json @@ -1,10 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:storage_blocks/copper" + "ingredient": "#c:storage_blocks/copper" }, - "output": { + "result": { "count": 9, - "item": "energizedpower:copper_plate" + "id": "energizedpower:copper_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_ingot.json b/src/generated/resources/data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_ingot.json index 71e029c99..5da1c4238 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_ingot.json @@ -1,9 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:ingots/copper" + "ingredient": "#c:ingots/copper" }, - "output": { - "item": "energizedpower:copper_plate" + "result": { + "count": 1, + "id": "energizedpower:copper_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/energized_copper_plate_from_compressing_energized_copper_ingot.json b/src/generated/resources/data/energizedpower/recipe/compressing/energized_copper_plate_from_compressing_energized_copper_ingot.json index 4a974e8cb..4ef661eb1 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/energized_copper_plate_from_compressing_energized_copper_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/energized_copper_plate_from_compressing_energized_copper_ingot.json @@ -1,9 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:ingots/energized_copper" + "ingredient": "#c:ingots/energized_copper" }, - "output": { - "item": "energizedpower:energized_copper_plate" + "result": { + "count": 1, + "id": "energizedpower:energized_copper_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/energized_gold_plate_from_compressing_energized_gold_ingot.json b/src/generated/resources/data/energizedpower/recipe/compressing/energized_gold_plate_from_compressing_energized_gold_ingot.json index 58eedfeae..f4a4eb99e 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/energized_gold_plate_from_compressing_energized_gold_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/energized_gold_plate_from_compressing_energized_gold_ingot.json @@ -1,9 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:ingots/energized_gold" + "ingredient": "#c:ingots/energized_gold" }, - "output": { - "item": "energizedpower:energized_gold_plate" + "result": { + "count": 1, + "id": "energizedpower:energized_gold_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_block.json b/src/generated/resources/data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_block.json index c84a409e0..185163b25 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_block.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_block.json @@ -1,10 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:storage_blocks/gold" + "ingredient": "#c:storage_blocks/gold" }, - "output": { + "result": { "count": 9, - "item": "energizedpower:gold_plate" + "id": "energizedpower:gold_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_ingot.json b/src/generated/resources/data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_ingot.json index 9d1b7b6fa..c756e541e 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_ingot.json @@ -1,9 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:ingots/gold" + "ingredient": "#c:ingots/gold" }, - "output": { - "item": "energizedpower:gold_plate" + "result": { + "count": 1, + "id": "energizedpower:gold_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_block.json b/src/generated/resources/data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_block.json index 62e0a7968..34ff7c86d 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_block.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_block.json @@ -1,10 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:storage_blocks/iron" + "ingredient": "#c:storage_blocks/iron" }, - "output": { + "result": { "count": 9, - "item": "energizedpower:iron_plate" + "id": "energizedpower:iron_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_ingot.json b/src/generated/resources/data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_ingot.json index 1a64c11fd..5d07c05cb 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_ingot.json @@ -1,9 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:ingots/iron" + "ingredient": "#c:ingots/iron" }, - "output": { - "item": "energizedpower:iron_plate" + "result": { + "count": 1, + "id": "energizedpower:iron_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_block.json b/src/generated/resources/data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_block.json index dc4ac7467..ae66a5e85 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_block.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_block.json @@ -1,10 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:storage_blocks/tin" + "ingredient": "#c:storage_blocks/tin" }, - "output": { + "result": { "count": 9, - "item": "energizedpower:tin_plate" + "id": "energizedpower:tin_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_ingot.json b/src/generated/resources/data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_ingot.json index 2a21d570c..5a4ba82f7 100644 --- a/src/generated/resources/data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_ingot.json @@ -1,9 +1,10 @@ { "type": "energizedpower:compressor", "ingredient": { - "tag": "c:ingots/tin" + "ingredient": "#c:ingots/tin" }, - "output": { - "item": "energizedpower:tin_plate" + "result": { + "count": 1, + "id": "energizedpower:tin_plate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_auto_crafter.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_auto_crafter.json index 0e6ba0aad..918764f6d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_auto_crafter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_auto_crafter.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "P": { - "tag": "c:plates/advanced_alloy" - }, - "a": { - "item": "energizedpower:auto_crafter" - }, - "c": { - "item": "energizedpower:advanced_circuit" - } + "A": "energizedpower:advanced_machine_frame", + "G": "#c:plates/energized_gold", + "P": "#c:plates/advanced_alloy", + "a": "energizedpower:auto_crafter", + "c": "energizedpower:advanced_circuit" }, "pattern": [ "GaG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_battery_box.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_battery_box.json index 12116b677..a21eb4b23 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_battery_box.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_battery_box.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_8" - }, - "E": { - "tag": "c:plates/energized_gold" - }, - "M": { - "item": "energizedpower:advanced_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - } + "B": "energizedpower:battery_8", + "E": "#c:plates/energized_gold", + "M": "energizedpower:advanced_machine_frame", + "S": "#c:storage_blocks/silicon" }, "pattern": [ "EBE", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_battery_box_minecart.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_battery_box_minecart.json index f584df2cb..c3f34a5e7 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_battery_box_minecart.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_battery_box_minecart.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "item": "energizedpower:advanced_battery_box" - }, - { - "item": "minecraft:minecart" - } + "energizedpower:advanced_battery_box", + "minecraft:minecart" ], "result": { "count": 1, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_charger.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_charger.json index f14f7865d..2d2eba979 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_charger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_charger.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "C": { - "item": "energizedpower:charger" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "S": { - "tag": "c:silicon" - }, - "a": { - "tag": "c:plates/advanced_alloy" - } + "A": "energizedpower:advanced_machine_frame", + "C": "energizedpower:charger", + "G": "#c:plates/energized_gold", + "S": "#c:silicon", + "a": "#c:plates/advanced_alloy" }, "pattern": [ "SGS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_crusher.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_crusher.json index 3a4cdd533..2a6999de8 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_crusher.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_crusher.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "C": { - "item": "energizedpower:crusher" - }, - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "a": { - "tag": "c:plates/advanced_alloy" - }, - "c": { - "tag": "c:plates/energized_copper" - } + "A": "energizedpower:advanced_machine_frame", + "C": "energizedpower:crusher", + "F": "energizedpower:fluid_tank_small", + "a": "#c:plates/advanced_alloy", + "c": "#c:plates/energized_copper" }, "pattern": [ "aCa", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_fertilizer.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_fertilizer.json index 6aecdab28..dcdcd89b0 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_fertilizer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_fertilizer.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "G": { - "item": "energizedpower:good_fertilizer" - }, - "M": { - "item": "minecraft:red_mushroom" - }, - "R": { - "item": "minecraft:rose_bush" - }, - "S": { - "item": "minecraft:sweet_berries" - }, - "T": { - "item": "minecraft:red_tulip" - }, - "r": { - "tag": "c:dyes/red" - } + "G": "energizedpower:good_fertilizer", + "M": "minecraft:red_mushroom", + "R": "minecraft:rose_bush", + "S": "minecraft:sweet_berries", + "T": "minecraft:red_tulip", + "r": "#c:dyes/red" }, "pattern": [ "MGS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_machine_frame.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_machine_frame.json index 3d4cc6f2f..8c94a3848 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_machine_frame.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_machine_frame.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "tag": "c:ingots/advanced_alloy" - }, - "E": { - "tag": "c:ingots/energized_copper" - }, - "H": { - "item": "energizedpower:hardened_machine_frame" - }, - "S": { - "tag": "c:silicon" - } + "A": "#c:ingots/advanced_alloy", + "E": "#c:ingots/energized_copper", + "H": "energizedpower:hardened_machine_frame", + "S": "#c:silicon" }, "pattern": [ "ESE", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_minecart_charger.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_minecart_charger.json index e3a723565..6694249a2 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_minecart_charger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_minecart_charger.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "G": { - "tag": "c:storage_blocks/gold" - }, - "H": { - "item": "energizedpower:advanced_charger" - }, - "S": { - "tag": "c:silicon" - }, - "c": { - "tag": "c:plates/energized_copper" - }, - "g": { - "tag": "c:plates/energized_gold" - } + "C": "#c:storage_blocks/copper", + "G": "#c:storage_blocks/gold", + "H": "energizedpower:advanced_charger", + "S": "#c:silicon", + "c": "#c:plates/energized_copper", + "g": "#c:plates/energized_gold" }, "pattern": [ "gGg", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_minecart_uncharger.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_minecart_uncharger.json index 7f1cf42da..423cc9016 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_minecart_uncharger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_minecart_uncharger.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "G": { - "tag": "c:storage_blocks/gold" - }, - "S": { - "tag": "c:silicon" - }, - "U": { - "item": "energizedpower:advanced_uncharger" - }, - "c": { - "tag": "c:plates/energized_copper" - }, - "g": { - "tag": "c:plates/energized_gold" - } + "C": "#c:storage_blocks/copper", + "G": "#c:storage_blocks/gold", + "S": "#c:silicon", + "U": "energizedpower:advanced_uncharger", + "c": "#c:plates/energized_copper", + "g": "#c:plates/energized_gold" }, "pattern": [ "cCc", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_powered_furnace.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_powered_furnace.json index 06173a8b1..90b270f5c 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_powered_furnace.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_powered_furnace.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "P": { - "item": "energizedpower:powered_furnace" - }, - "S": { - "tag": "c:silicon" - }, - "a": { - "tag": "c:plates/advanced_alloy" - } + "A": "energizedpower:advanced_machine_frame", + "G": "#c:plates/energized_gold", + "P": "energizedpower:powered_furnace", + "S": "#c:silicon", + "a": "#c:plates/advanced_alloy" }, "pattern": [ "GPG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_pulverizer.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_pulverizer.json index b3701963a..cd4c0a2dc 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_pulverizer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_pulverizer.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "C": { - "tag": "c:plates/energized_copper" - }, - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "P": { - "item": "energizedpower:pulverizer" - }, - "a": { - "tag": "c:plates/advanced_alloy" - } + "A": "energizedpower:advanced_machine_frame", + "C": "#c:plates/energized_copper", + "F": "energizedpower:fluid_tank_small", + "P": "energizedpower:pulverizer", + "a": "#c:plates/advanced_alloy" }, "pattern": [ "aPa", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_uncharger.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_uncharger.json index a11bc6e01..da6c25d66 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_uncharger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_uncharger.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "S": { - "tag": "c:silicon" - }, - "U": { - "item": "energizedpower:uncharger" - }, - "a": { - "tag": "c:plates/advanced_alloy" - } + "A": "energizedpower:advanced_machine_frame", + "G": "#c:plates/energized_gold", + "S": "#c:silicon", + "U": "energizedpower:uncharger", + "a": "#c:plates/advanced_alloy" }, "pattern": [ "GUG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_upgrade_module.json b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_upgrade_module.json index 7aac2c858..c047b9450 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/advanced_upgrade_module.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/advanced_upgrade_module.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_circuit" - }, - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/energized_copper" - }, - "G": { - "tag": "c:wires/energized_gold" - } + "A": "energizedpower:advanced_circuit", + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/energized_copper", + "G": "#c:wires/energized_gold" }, "pattern": [ "GGG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/alloy_furnace.json b/src/generated/resources/data/energizedpower/recipe/crafting/alloy_furnace.json index 36e27739e..c8d4a3a71 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/alloy_furnace.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/alloy_furnace.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "minecraft:bricks" - }, - "F": { - "item": "minecraft:furnace" - }, - "I": { - "tag": "c:plates/iron" - } + "B": "minecraft:bricks", + "F": "minecraft:furnace", + "I": "#c:plates/iron" }, "pattern": [ "III", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/assembling_machine.json b/src/generated/resources/data/energizedpower/recipe/crafting/assembling_machine.json index 2de63301e..e8396a13a 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/assembling_machine.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/assembling_machine.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_circuit" - }, - "H": { - "item": "energizedpower:hardened_machine_frame" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "i": { - "tag": "c:gears/iron" - }, - "s": { - "tag": "c:ingots/steel" - } + "B": "energizedpower:basic_circuit", + "H": "energizedpower:hardened_machine_frame", + "R": "#c:dusts/redstone", + "S": "#c:storage_blocks/silicon", + "i": "#c:gears/iron", + "s": "#c:ingots/steel" }, "pattern": [ "iRi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/auto_crafter.json b/src/generated/resources/data/energizedpower/recipe/crafting/auto_crafter.json index 6606c66ee..fc8a0c5a3 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/auto_crafter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/auto_crafter.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "T": { - "item": "minecraft:crafting_table" - }, - "b": { - "item": "energizedpower:basic_circuit" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "T": "minecraft:crafting_table", + "b": "energizedpower:basic_circuit" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/auto_press_mold_maker.json b/src/generated/resources/data/energizedpower/recipe/crafting/auto_press_mold_maker.json index 6fa42f19e..bbc86b97f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/auto_press_mold_maker.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/auto_press_mold_maker.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "I": { - "tag": "c:gears/iron" - }, - "P": { - "item": "energizedpower:press_mold_maker" - }, - "i": { - "tag": "c:rods/iron" - } + "B": "energizedpower:basic_machine_frame", + "I": "#c:gears/iron", + "P": "energizedpower:press_mold_maker", + "i": "#c:rods/iron" }, "pattern": [ "IPI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/auto_stonecutter.json b/src/generated/resources/data/energizedpower/recipe/crafting/auto_stonecutter.json index 6f11d8db5..f743bcc81 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/auto_stonecutter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/auto_stonecutter.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "item": "minecraft:stonecutter" - }, - "s": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "S": "minecraft:stonecutter", + "s": "#c:silicon" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/basic_circuit.json b/src/generated/resources/data/energizedpower/recipe/crafting/basic_circuit.json index deb6e39f1..762594204 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/basic_circuit.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/basic_circuit.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:wires/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - } + "C": "#c:wires/copper", + "I": "#c:plates/iron", + "R": "#c:dusts/redstone", + "S": "#c:silicon" }, "pattern": [ "RCR", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/basic_fertilizer.json b/src/generated/resources/data/energizedpower/recipe/crafting/basic_fertilizer.json index ae71723e6..bb21901eb 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/basic_fertilizer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/basic_fertilizer.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "minecraft:allium" - }, - "B": { - "item": "minecraft:bone_meal" - }, - "D": { - "item": "minecraft:dandelion" - }, - "L": { - "tag": "c:gems/lapis" - }, - "P": { - "item": "minecraft:poppy" - }, - "b": { - "item": "minecraft:blue_orchid" - } + "A": "minecraft:allium", + "B": "minecraft:bone_meal", + "D": "minecraft:dandelion", + "L": "#c:gems/lapis", + "P": "minecraft:poppy", + "b": "minecraft:blue_orchid" }, "pattern": [ "DBb", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/basic_machine_frame.json b/src/generated/resources/data/energizedpower/recipe/crafting/basic_machine_frame.json index 838a9a8e8..cf660ad84 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/basic_machine_frame.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/basic_machine_frame.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:ingots/copper" - }, - "I": { - "tag": "c:ingots/iron" - }, - "S": { - "tag": "c:storage_blocks/silicon" - } + "C": "#c:ingots/copper", + "I": "#c:ingots/iron", + "S": "#c:storage_blocks/silicon" }, "pattern": [ "CIC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/basic_solar_cell.json b/src/generated/resources/data/energizedpower/recipe/crafting/basic_solar_cell.json index 804080694..6ba810f46 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/basic_solar_cell.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/basic_solar_cell.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:ingots/copper" - }, - "Q": { - "tag": "c:gems/quartz" - }, - "S": { - "tag": "c:silicon" - }, - "T": { - "tag": "c:ingots/tin" - } + "C": "#c:ingots/copper", + "Q": "#c:gems/quartz", + "S": "#c:silicon", + "T": "#c:ingots/tin" }, "pattern": [ " C ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/basic_upgrade_module.json b/src/generated/resources/data/energizedpower/recipe/crafting/basic_upgrade_module.json index fa8ebab92..76b76d99a 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/basic_upgrade_module.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/basic_upgrade_module.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_circuit" - }, - "C": { - "tag": "c:plates/copper" - }, - "G": { - "tag": "c:wires/gold" - } + "B": "energizedpower:basic_circuit", + "C": "#c:plates/copper", + "G": "#c:wires/gold" }, "pattern": [ "GGG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_1.json index db5361882..3cdd7058f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "T": { - "tag": "c:nuggets/tin" - }, - "c": { - "tag": "minecraft:coals" - } + "C": "#c:plates/copper", + "R": "#c:dusts/redstone", + "T": "#c:nuggets/tin", + "c": "#minecraft:coals" }, "pattern": [ "T T", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_2.json index d5d56897c..c62ba9685 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_2.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_1" - }, - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "T": { - "tag": "c:nuggets/tin" - }, - "c": { - "tag": "minecraft:coals" - } + "B": "energizedpower:battery_1", + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "T": "#c:nuggets/tin", + "c": "#minecraft:coals" }, "pattern": [ "T T", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_3.json index 8b1c97df6..c60aef0a6 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_3.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_2" - }, - "C": { - "tag": "c:plates/copper" - }, - "S": { - "tag": "c:silicon" - }, - "T": { - "tag": "c:nuggets/tin" - } + "B": "energizedpower:battery_2", + "C": "#c:plates/copper", + "S": "#c:silicon", + "T": "#c:nuggets/tin" }, "pattern": [ "T T", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_4.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_4.json index 89763dd51..3c640095b 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_4.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_4.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_3" - }, - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:silicon" - }, - "T": { - "tag": "c:nuggets/tin" - } + "B": "energizedpower:battery_3", + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "S": "#c:silicon", + "T": "#c:nuggets/tin" }, "pattern": [ "T T", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_5.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_5.json index e8ef40acc..3be990cf5 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_5.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_5.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_4" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "tag": "c:ingots/redstone_alloy" - }, - "S": { - "tag": "c:silicon" - }, - "T": { - "tag": "c:nuggets/tin" - } + "B": "energizedpower:battery_4", + "I": "#c:plates/iron", + "R": "#c:ingots/redstone_alloy", + "S": "#c:silicon", + "T": "#c:nuggets/tin" }, "pattern": [ "T T", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_6.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_6.json index 28165240a..f46cdb350 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_6.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_6.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_5" - }, - "E": { - "tag": "c:plates/energized_copper" - }, - "T": { - "tag": "c:nuggets/tin" - } + "B": "energizedpower:battery_5", + "E": "#c:plates/energized_copper", + "T": "#c:nuggets/tin" }, "pattern": [ "T T", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_7.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_7.json index fe59a7907..280cd5523 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_7.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_7.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_6" - }, - "E": { - "tag": "c:plates/energized_gold" - }, - "G": { - "tag": "c:nuggets/gold" - }, - "S": { - "tag": "c:silicon" - } + "B": "energizedpower:battery_6", + "E": "#c:plates/energized_gold", + "G": "#c:nuggets/gold", + "S": "#c:silicon" }, "pattern": [ "G G", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_8.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_8.json index 30e62d72f..d3eb601a5 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_8.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_8.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "tag": "c:plates/advanced_alloy" - }, - "B": { - "item": "energizedpower:battery_7" - }, - "E": { - "tag": "c:plates/energized_gold" - }, - "G": { - "tag": "c:nuggets/gold" - } + "A": "#c:plates/advanced_alloy", + "B": "energizedpower:battery_7", + "E": "#c:plates/energized_gold", + "G": "#c:nuggets/gold" }, "pattern": [ "G G", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_box.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_box.json index a8c2cfdca..884b9a88f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_box.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_box.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_5" - }, - "C": { - "tag": "c:plates/copper" - }, - "M": { - "item": "energizedpower:basic_machine_frame" - }, - "S": { - "tag": "c:silicon" - } + "B": "energizedpower:battery_5", + "C": "#c:plates/copper", + "M": "energizedpower:basic_machine_frame", + "S": "#c:silicon" }, "pattern": [ "CBC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/battery_box_minecart.json b/src/generated/resources/data/energizedpower/recipe/crafting/battery_box_minecart.json index 5255ddc0e..5f8d30121 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/battery_box_minecart.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/battery_box_minecart.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "item": "energizedpower:battery_box" - }, - { - "item": "minecraft:minecart" - } + "energizedpower:battery_box", + "minecraft:minecart" ], "result": { "count": 1, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/blast_furnace_upgrade_module.json b/src/generated/resources/data/energizedpower/recipe/crafting/blast_furnace_upgrade_module.json index 61b7de94c..70ca7aa13 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/blast_furnace_upgrade_module.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/blast_furnace_upgrade_module.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - }, - "b": { - "item": "minecraft:blast_furnace" - } + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/copper", + "R": "#c:dusts/redstone", + "S": "#c:silicon", + "b": "minecraft:blast_furnace" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/block_placer.json b/src/generated/resources/data/energizedpower/recipe/crafting/block_placer.json index 805a0064a..b2f7183c6 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/block_placer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/block_placer.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:storage_blocks/copper" - }, - "D": { - "item": "minecraft:dispenser" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "S": { - "tag": "c:storage_blocks/silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:storage_blocks/copper", + "D": "minecraft:dispenser", + "I": "#c:storage_blocks/iron", + "S": "#c:storage_blocks/silicon" }, "pattern": [ "IDS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/charcoal_filter.json b/src/generated/resources/data/energizedpower/recipe/crafting/charcoal_filter.json index 613ee4e18..5c31e8afa 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/charcoal_filter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/charcoal_filter.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:dusts/charcoal" - }, - "I": { - "tag": "c:plates/iron" - }, - "P": { - "item": "minecraft:paper" - } + "C": "#c:dusts/charcoal", + "I": "#c:plates/iron", + "P": "minecraft:paper" }, "pattern": [ "PCP", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/charger.json b/src/generated/resources/data/energizedpower/recipe/crafting/charger.json index fbe051a32..9cddf15f4 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/charger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/charger.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "s": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "S": "#c:storage_blocks/silicon", + "s": "#c:silicon" }, "pattern": [ "sCs", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/charging_station.json b/src/generated/resources/data/energizedpower/recipe/crafting/charging_station.json index 820193f3e..4f65dde91 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/charging_station.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/charging_station.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "C": { - "tag": "c:storage_blocks/copper" - }, - "E": { - "tag": "c:plates/energized_gold" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "R": { - "tag": "c:storage_blocks/redstone" - }, - "a": { - "tag": "c:plates/advanced_alloy" - } + "A": "energizedpower:advanced_machine_frame", + "C": "#c:storage_blocks/copper", + "E": "#c:plates/energized_gold", + "I": "#c:storage_blocks/iron", + "R": "#c:storage_blocks/redstone", + "a": "#c:plates/advanced_alloy" }, "pattern": [ "aRa", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/coal_engine.json b/src/generated/resources/data/energizedpower/recipe/crafting/coal_engine.json index 5a8c8d5a1..adc602b01 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/coal_engine.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/coal_engine.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "F": { - "item": "minecraft:furnace" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "F": "minecraft:furnace", + "I": "#c:plates/iron", + "S": "#c:silicon" }, "pattern": [ "ISI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/compressor.json b/src/generated/resources/data/energizedpower/recipe/crafting/compressor.json index 174cef4d0..c2c0372be 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/compressor.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/compressor.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "I": { - "tag": "c:plates/iron" - }, - "P": { - "item": "minecraft:piston" - } + "B": "energizedpower:basic_machine_frame", + "I": "#c:plates/iron", + "P": "minecraft:piston" }, "pattern": [ "IPI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/copper_cable.json b/src/generated/resources/data/energizedpower/recipe/crafting/copper_cable.json index 6265e56dc..bea5c730c 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/copper_cable.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/copper_cable.json @@ -3,12 +3,8 @@ "category": "misc", "group": "copper_cable", "key": { - "I": { - "tag": "c:ingots/copper" - }, - "i": { - "item": "energizedpower:cable_insulator" - } + "I": "#c:ingots/copper", + "i": "energizedpower:cable_insulator" }, "pattern": [ "iIi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/copper_cable_using_wire.json b/src/generated/resources/data/energizedpower/recipe/crafting/copper_cable_using_wire.json index 89826d5d9..32652505b 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/copper_cable_using_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/copper_cable_using_wire.json @@ -3,12 +3,8 @@ "category": "misc", "group": "copper_cable", "key": { - "I": { - "item": "energizedpower:cable_insulator" - }, - "W": { - "tag": "c:wires/copper" - } + "I": "energizedpower:cable_insulator", + "W": "#c:wires/copper" }, "pattern": [ "IWI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/copper_plate.json b/src/generated/resources/data/energizedpower/recipe/crafting/copper_plate.json index 7ef3aa4be..12e1f90dd 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/copper_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/copper_plate.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:tools/hammers" - }, - { - "tag": "c:ingots/copper" - } + "#c:tools/hammers", + "#c:ingots/copper" ], "result": { "count": 1, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/copper_wire.json b/src/generated/resources/data/energizedpower/recipe/crafting/copper_wire.json index 3d4f0a87a..768cd9972 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/copper_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/copper_wire.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:tools/cutters" - }, - { - "tag": "c:plates/copper" - } + "#c:tools/cutters", + "#c:plates/copper" ], "result": { "count": 2, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/crusher.json b/src/generated/resources/data/energizedpower/recipe/crafting/crusher.json index 17a4091da..816370b48 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/crusher.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/crusher.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "item": "minecraft:stonecutter" - }, - "s": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "S": "minecraft:stonecutter", + "s": "#c:silicon" }, "pattern": [ "CsC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/crystal_growth_chamber.json b/src/generated/resources/data/energizedpower/recipe/crafting/crystal_growth_chamber.json index 45aa752cb..07b2d93f5 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/crystal_growth_chamber.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/crystal_growth_chamber.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "E": { - "tag": "c:plates/energized_copper" - }, - "P": { - "tag": "c:plates/advanced_alloy" - }, - "a": { - "item": "minecraft:amethyst_block" - } + "A": "energizedpower:advanced_machine_frame", + "E": "#c:plates/energized_copper", + "P": "#c:plates/advanced_alloy", + "a": "minecraft:amethyst_block" }, "pattern": [ "aPa", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/cutter.json b/src/generated/resources/data/energizedpower/recipe/crafting/cutter.json index 54f463cd2..8b844d8be 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/cutter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/cutter.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:rods/wooden" - }, - "i": { - "tag": "c:nuggets/iron" - } + "I": "#c:plates/iron", + "S": "#c:rods/wooden", + "i": "#c:nuggets/iron" }, "pattern": [ "I I", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/diamond_hammer.json b/src/generated/resources/data/energizedpower/recipe/crafting/diamond_hammer.json index 7181fb41a..b5647e68d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/diamond_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/diamond_hammer.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "M": { - "tag": "c:gems/diamond" - }, - "S": { - "tag": "c:rods/wooden" - } + "M": "#minecraft:diamond_tool_materials", + "S": "#c:rods/wooden" }, "pattern": [ " M ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/drain.json b/src/generated/resources/data/energizedpower/recipe/crafting/drain.json index dffab3ca9..4d12e43ba 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/drain.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/drain.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "minecraft:iron_bars" - }, - "G": { - "tag": "c:glass_blocks/colorless" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "i": { - "tag": "c:plates/iron" - } + "B": "minecraft:iron_bars", + "G": "#c:glass_blocks/colorless", + "I": "#c:storage_blocks/iron", + "i": "#c:plates/iron" }, "pattern": [ "IBI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_1.json index 28c574873..26c3cba62 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "r": { - "tag": "c:dusts/redstone" - } + "C": "energizedpower:energized_crystal_matrix", + "G": "#c:plates/energized_gold", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "r": "#c:dusts/redstone" }, "pattern": [ "GCG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_2.json index 002845837..e94d2f11f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_2.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "D": { - "item": "energizedpower:duration_upgrade_module_1" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "r": { - "tag": "c:dusts/redstone" - } + "C": "energizedpower:energized_crystal_matrix", + "D": "energizedpower:duration_upgrade_module_1", + "G": "#c:plates/energized_gold", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "r": "#c:dusts/redstone" }, "pattern": [ "GCG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_3.json index 9632ee1ca..991259f6c 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "D": { - "item": "energizedpower:duration_upgrade_module_2" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "r": { - "tag": "c:dusts/redstone" - } + "C": "energizedpower:energized_crystal_matrix", + "D": "energizedpower:duration_upgrade_module_2", + "G": "#c:plates/energized_gold", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "r": "#c:dusts/redstone" }, "pattern": [ "GCG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_4.json b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_4.json index 8aa5dcfa0..104bf6191 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_4.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_4.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "D": { - "item": "energizedpower:duration_upgrade_module_3" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "r": { - "tag": "c:dusts/redstone" - } + "C": "energizedpower:energized_crystal_matrix", + "D": "energizedpower:duration_upgrade_module_3", + "G": "#c:plates/energized_gold", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "r": "#c:dusts/redstone" }, "pattern": [ "GCG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_5.json b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_5.json index 5558a3b73..ccf2aa2e6 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_5.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_5.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "D": { - "item": "energizedpower:duration_upgrade_module_4" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "r": { - "tag": "c:dusts/redstone" - } + "C": "energizedpower:energized_crystal_matrix", + "D": "energizedpower:duration_upgrade_module_4", + "G": "#c:plates/energized_gold", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "r": "#c:dusts/redstone" }, "pattern": [ "GCG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_6.json b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_6.json index aae2e27ba..632a4c8b2 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_6.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/duration_upgrade_module_6.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "D": { - "item": "energizedpower:duration_upgrade_module_5" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - } + "C": "energizedpower:energized_crystal_matrix", + "D": "energizedpower:duration_upgrade_module_5", + "G": "#c:plates/energized_gold", + "R": "energizedpower:reinforced_advanced_upgrade_module" }, "pattern": [ "GDG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_1_to_n.json b/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_1_to_n.json index 7510e61f9..34ec9564d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_1_to_n.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_1_to_n.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "M": { - "item": "energizedpower:reinforced_advanced_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:hv_transformer_1_to_n" - } + "C": "energizedpower:energized_crystal_matrix", + "M": "energizedpower:reinforced_advanced_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:hv_transformer_1_to_n" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_3_to_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_3_to_3.json index f0b40a95c..84d176e74 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_3_to_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_3_to_3.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "M": { - "item": "energizedpower:reinforced_advanced_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:hv_transformer_3_to_3" - } + "C": "energizedpower:energized_crystal_matrix", + "M": "energizedpower:reinforced_advanced_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:hv_transformer_3_to_3" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_n_to_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_n_to_1.json index 26c828341..e9435a1ca 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_n_to_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/ehv_transformer_n_to_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "M": { - "item": "energizedpower:reinforced_advanced_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:hv_transformer_n_to_1" - } + "C": "energizedpower:energized_crystal_matrix", + "M": "energizedpower:reinforced_advanced_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:hv_transformer_n_to_1" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energized_copper_cable.json b/src/generated/resources/data/energizedpower/recipe/crafting/energized_copper_cable.json index b1737091e..f27320cbd 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energized_copper_cable.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energized_copper_cable.json @@ -3,12 +3,8 @@ "category": "misc", "group": "energized_copper_cable", "key": { - "I": { - "tag": "c:ingots/energized_copper" - }, - "i": { - "item": "energizedpower:cable_insulator" - } + "I": "#c:ingots/energized_copper", + "i": "energizedpower:cable_insulator" }, "pattern": [ "iIi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energized_copper_cable_using_wire.json b/src/generated/resources/data/energizedpower/recipe/crafting/energized_copper_cable_using_wire.json index ae2fdb3d4..c5f347715 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energized_copper_cable_using_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energized_copper_cable_using_wire.json @@ -3,12 +3,8 @@ "category": "misc", "group": "energized_copper_cable", "key": { - "I": { - "item": "energizedpower:cable_insulator" - }, - "W": { - "tag": "c:wires/energized_copper" - } + "I": "energizedpower:cable_insulator", + "W": "#c:wires/energized_copper" }, "pattern": [ "IWI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energized_crystal_matrix_cable.json b/src/generated/resources/data/energizedpower/recipe/crafting/energized_crystal_matrix_cable.json index e6b28543f..7bf26c0e0 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energized_crystal_matrix_cable.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energized_crystal_matrix_cable.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "I": { - "item": "energizedpower:cable_insulator" - } + "C": "energizedpower:energized_crystal_matrix", + "I": "energizedpower:cable_insulator" }, "pattern": [ "ICI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energized_gold_cable.json b/src/generated/resources/data/energizedpower/recipe/crafting/energized_gold_cable.json index 0513ab70d..8272bd356 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energized_gold_cable.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energized_gold_cable.json @@ -3,12 +3,8 @@ "category": "misc", "group": "energized_gold_cable", "key": { - "I": { - "tag": "c:ingots/energized_gold" - }, - "i": { - "item": "energizedpower:cable_insulator" - } + "I": "#c:ingots/energized_gold", + "i": "energizedpower:cable_insulator" }, "pattern": [ "iIi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energized_gold_cable_using_wire.json b/src/generated/resources/data/energizedpower/recipe/crafting/energized_gold_cable_using_wire.json index d1e732bd0..89134f714 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energized_gold_cable_using_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energized_gold_cable_using_wire.json @@ -3,12 +3,8 @@ "category": "misc", "group": "energized_gold_cable", "key": { - "I": { - "item": "energizedpower:cable_insulator" - }, - "W": { - "tag": "c:wires/energized_gold" - } + "I": "energizedpower:cable_insulator", + "W": "#c:wires/energized_gold" }, "pattern": [ "IWI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energized_power_book.json b/src/generated/resources/data/energizedpower/recipe/crafting/energized_power_book.json index 3ad158261..a6dce61be 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energized_power_book.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energized_power_book.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "item": "minecraft:book" - }, - { - "item": "energizedpower:basic_machine_frame" - } + "minecraft:book", + "energizedpower:basic_machine_frame" ], "result": { "count": 1, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energizer.json b/src/generated/resources/data/energizedpower/recipe/crafting/energizer.json index 5f2b9659e..8b3bccfac 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energizer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energizer.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "E": { - "tag": "c:plates/energized_copper" - }, - "G": { - "tag": "c:plates/gold" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "a": { - "tag": "c:plates/advanced_alloy" - } + "A": "energizedpower:advanced_machine_frame", + "E": "#c:plates/energized_copper", + "G": "#c:plates/gold", + "R": "#c:dusts/redstone", + "S": "#c:storage_blocks/silicon", + "a": "#c:plates/advanced_alloy" }, "pattern": [ "RaR", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_analyzer.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_analyzer.json index 17d696ad6..5be05cc17 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_analyzer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_analyzer.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_3" - }, - "C": { - "tag": "c:plates/copper" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - }, - "b": { - "item": "energizedpower:basic_circuit" - } + "B": "energizedpower:battery_3", + "C": "#c:plates/copper", + "R": "#c:dusts/redstone", + "S": "#c:silicon", + "b": "energizedpower:basic_circuit" }, "pattern": [ "S S", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_1.json index 1ddf0fc44..8f95335a3 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "T": { - "tag": "c:plates/tin" - }, - "c": { - "tag": "minecraft:coals" - } + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/copper", + "T": "#c:plates/tin", + "c": "#minecraft:coals" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_2.json index 5e94e9d1b..e61a630dd 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_2.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "E": { - "item": "energizedpower:energy_capacity_upgrade_module_1" - }, - "T": { - "tag": "c:plates/tin" - }, - "c": { - "tag": "minecraft:coals" - } + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/copper", + "E": "energizedpower:energy_capacity_upgrade_module_1", + "T": "#c:plates/tin", + "c": "#minecraft:coals" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_3.json index 3dd1753a2..d41cf5e89 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "E": { - "item": "energizedpower:energy_capacity_upgrade_module_2" - }, - "T": { - "tag": "c:plates/tin" - }, - "c": { - "tag": "minecraft:coals" - } + "A": "energizedpower:advanced_upgrade_module", + "C": "#c:plates/copper", + "E": "energizedpower:energy_capacity_upgrade_module_2", + "T": "#c:plates/tin", + "c": "#minecraft:coals" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_4.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_4.json index 680ff003c..da160d26a 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_4.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_4.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "E": { - "item": "energizedpower:energy_capacity_upgrade_module_3" - }, - "T": { - "tag": "c:plates/tin" - }, - "c": { - "tag": "minecraft:coals" - } + "A": "energizedpower:advanced_upgrade_module", + "C": "#c:plates/copper", + "E": "energizedpower:energy_capacity_upgrade_module_3", + "T": "#c:plates/tin", + "c": "#minecraft:coals" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_5.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_5.json index 39fa39f8b..92a749847 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_5.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_5.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "E": { - "item": "energizedpower:energy_capacity_upgrade_module_4" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "T": { - "tag": "c:plates/tin" - }, - "c": { - "tag": "minecraft:coals" - } + "C": "#c:plates/copper", + "E": "energizedpower:energy_capacity_upgrade_module_4", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "T": "#c:plates/tin", + "c": "#minecraft:coals" }, "pattern": [ "CTC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_1.json index a1fe221f5..ee3bf7125 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "G": { - "tag": "c:ingots/gold" - }, - "R": { - "tag": "c:ingots/redstone_alloy" - } + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/copper", + "G": "#c:ingots/gold", + "R": "#c:ingots/redstone_alloy" }, "pattern": [ "CGC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_2.json index 51c3f64c1..97772791b 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_2.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "E": { - "item": "energizedpower:energy_efficiency_upgrade_module_1" - }, - "G": { - "tag": "c:ingots/gold" - }, - "R": { - "tag": "c:ingots/redstone_alloy" - } + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/copper", + "E": "energizedpower:energy_efficiency_upgrade_module_1", + "G": "#c:ingots/gold", + "R": "#c:ingots/redstone_alloy" }, "pattern": [ "CGC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_3.json index 9d6d01638..3cc869353 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "E": { - "item": "energizedpower:energy_efficiency_upgrade_module_2" - }, - "G": { - "tag": "c:ingots/gold" - }, - "R": { - "tag": "c:ingots/redstone_alloy" - } + "A": "energizedpower:advanced_upgrade_module", + "C": "#c:plates/copper", + "E": "energizedpower:energy_efficiency_upgrade_module_2", + "G": "#c:ingots/gold", + "R": "#c:ingots/redstone_alloy" }, "pattern": [ "CGC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_4.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_4.json index fc56c1c00..636d2181d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_4.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_4.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "E": { - "item": "energizedpower:energy_efficiency_upgrade_module_3" - }, - "G": { - "tag": "c:ingots/gold" - }, - "R": { - "tag": "c:ingots/redstone_alloy" - } + "A": "energizedpower:advanced_upgrade_module", + "C": "#c:plates/copper", + "E": "energizedpower:energy_efficiency_upgrade_module_3", + "G": "#c:ingots/gold", + "R": "#c:ingots/redstone_alloy" }, "pattern": [ "CGC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_5.json b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_5.json index ac172a3b5..63d32bc74 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_5.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_5.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "E": { - "item": "energizedpower:energy_efficiency_upgrade_module_4" - }, - "G": { - "tag": "c:ingots/gold" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "r": { - "tag": "c:ingots/redstone_alloy" - } + "C": "#c:plates/copper", + "E": "energizedpower:energy_efficiency_upgrade_module_4", + "G": "#c:ingots/gold", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "r": "#c:ingots/redstone_alloy" }, "pattern": [ "CGC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_1.json index 9ccb0ff58..9a248312c 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "F": { - "item": "energizedpower:fluid_pipe" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "tag": "c:dusts/redstone" - } + "B": "energizedpower:basic_upgrade_module", + "F": "energizedpower:fluid_pipe", + "I": "#c:plates/iron", + "R": "#c:dusts/redstone" }, "pattern": [ "IFI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_2.json index 1623b1ca8..5f73f1ce3 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_2.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "E": { - "item": "energizedpower:extraction_depth_upgrade_module_1" - }, - "F": { - "item": "energizedpower:fluid_pipe" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "tag": "c:dusts/redstone" - } + "B": "energizedpower:basic_upgrade_module", + "E": "energizedpower:extraction_depth_upgrade_module_1", + "F": "energizedpower:fluid_pipe", + "I": "#c:plates/iron", + "R": "#c:dusts/redstone" }, "pattern": [ "IFI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_3.json index 6213eee6b..d093a93c1 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "E": { - "item": "energizedpower:extraction_depth_upgrade_module_2" - }, - "F": { - "item": "energizedpower:fluid_pipe" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "tag": "c:dusts/redstone" - } + "A": "energizedpower:advanced_upgrade_module", + "E": "energizedpower:extraction_depth_upgrade_module_2", + "F": "energizedpower:fluid_pipe", + "I": "#c:plates/iron", + "R": "#c:dusts/redstone" }, "pattern": [ "IFI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_4.json b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_4.json index 4b6b31baa..2ec9d960d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_4.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_4.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "E": { - "item": "energizedpower:extraction_depth_upgrade_module_3" - }, - "F": { - "item": "energizedpower:fluid_pipe" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "tag": "c:dusts/redstone" - } + "A": "energizedpower:advanced_upgrade_module", + "E": "energizedpower:extraction_depth_upgrade_module_3", + "F": "energizedpower:fluid_pipe", + "I": "#c:plates/iron", + "R": "#c:dusts/redstone" }, "pattern": [ "IFI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_5.json b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_5.json index f2a9af8dc..7bda0cc43 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_5.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_5.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "E": { - "item": "energizedpower:extraction_depth_upgrade_module_4" - }, - "F": { - "item": "energizedpower:fluid_pipe" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "r": { - "tag": "c:dusts/redstone" - } + "E": "energizedpower:extraction_depth_upgrade_module_4", + "F": "energizedpower:fluid_pipe", + "I": "#c:plates/iron", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "r": "#c:dusts/redstone" }, "pattern": [ "IFI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/filtration_plant.json b/src/generated/resources/data/energizedpower/recipe/crafting/filtration_plant.json index 90d15b37b..7a089e18f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/filtration_plant.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/filtration_plant.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "minecraft:iron_bars" - }, - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "H": { - "item": "energizedpower:hardened_machine_frame" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "f": { - "item": "energizedpower:fluid_pipe" - }, - "i": { - "tag": "c:gears/iron" - } + "B": "minecraft:iron_bars", + "F": "energizedpower:fluid_tank_small", + "H": "energizedpower:hardened_machine_frame", + "I": "#c:storage_blocks/iron", + "f": "energizedpower:fluid_pipe", + "i": "#c:gears/iron" }, "pattern": [ "iBi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_analyzer.json b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_analyzer.json index bfc972e4a..2ea63f74f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_analyzer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_analyzer.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:battery_3" - }, - "C": { - "tag": "c:plates/copper" - }, - "L": { - "tag": "c:gems/lapis" - }, - "S": { - "tag": "c:silicon" - }, - "b": { - "item": "energizedpower:basic_circuit" - } + "B": "energizedpower:battery_3", + "C": "#c:plates/copper", + "L": "#c:gems/lapis", + "S": "#c:silicon", + "b": "energizedpower:basic_circuit" }, "pattern": [ "S S", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_drainer.json b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_drainer.json index bfb658db1..b2ca66b6a 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_drainer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_drainer.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "F": "energizedpower:fluid_tank_small", + "I": "#c:plates/iron", + "S": "#c:silicon" }, "pattern": [ "CFC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_filler.json b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_filler.json index acf55e5fa..4d26ae0fe 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_filler.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_filler.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "F": "energizedpower:fluid_tank_small", + "I": "#c:plates/iron", + "S": "#c:silicon" }, "pattern": [ "SIS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_pump.json b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_pump.json index bb58adcfe..1e9a4073a 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_pump.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_pump.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "I": { - "tag": "c:plates/iron" - }, - "P": { - "item": "minecraft:piston" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "p": { - "item": "energizedpower:fluid_pipe" - } + "B": "energizedpower:basic_machine_frame", + "F": "energizedpower:fluid_tank_small", + "I": "#c:plates/iron", + "P": "minecraft:piston", + "R": "#c:dusts/redstone", + "p": "energizedpower:fluid_pipe" }, "pattern": [ "RPR", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_large.json b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_large.json index f3a0c5b44..a9cb18e3f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_large.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_large.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "I": { - "tag": "c:storage_blocks/iron" - } + "F": "energizedpower:fluid_tank_small", + "I": "#c:storage_blocks/iron" }, "pattern": [ "IFI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_medium.json b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_medium.json index 1000bbeb5..db6640833 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_medium.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_medium.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "S": { - "tag": "c:ingots/steel" - } + "F": "energizedpower:fluid_tank_small", + "S": "#c:ingots/steel" }, "pattern": [ "SFS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_small.json b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_small.json index 206523f5e..d1e0f72c7 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_small.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_tank_small.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "G": { - "tag": "c:glass_panes/colorless" - }, - "I": { - "tag": "c:plates/iron" - } + "G": "#c:glass_panes/colorless", + "I": "#c:plates/iron" }, "pattern": [ "IGI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_transposer.json b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_transposer.json index 833536ce3..dd6664489 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/fluid_transposer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/fluid_transposer.json @@ -2,27 +2,13 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "D": { - "item": "energizedpower:fluid_drainer" - }, - "F": { - "item": "energizedpower:fluid_filler" - }, - "H": { - "item": "energizedpower:hardened_machine_frame" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "f": { - "item": "energizedpower:fluid_tank_small" - }, - "i": { - "tag": "c:plates/iron" - } + "C": "#c:plates/copper", + "D": "energizedpower:fluid_drainer", + "F": "energizedpower:fluid_filler", + "H": "energizedpower:hardened_machine_frame", + "I": "#c:storage_blocks/iron", + "f": "energizedpower:fluid_tank_small", + "i": "#c:plates/iron" }, "pattern": [ "CiC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/gold_cable.json b/src/generated/resources/data/energizedpower/recipe/crafting/gold_cable.json index 996fc7612..19bfd8a49 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/gold_cable.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/gold_cable.json @@ -3,12 +3,8 @@ "category": "misc", "group": "gold_cable", "key": { - "I": { - "tag": "c:ingots/gold" - }, - "i": { - "item": "energizedpower:cable_insulator" - } + "I": "#c:ingots/gold", + "i": "energizedpower:cable_insulator" }, "pattern": [ "iIi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/gold_cable_using_wire.json b/src/generated/resources/data/energizedpower/recipe/crafting/gold_cable_using_wire.json index 0850342ab..cb1bc440f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/gold_cable_using_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/gold_cable_using_wire.json @@ -3,12 +3,8 @@ "category": "misc", "group": "gold_cable", "key": { - "I": { - "item": "energizedpower:cable_insulator" - }, - "W": { - "tag": "c:wires/gold" - } + "I": "energizedpower:cable_insulator", + "W": "#c:wires/gold" }, "pattern": [ "IWI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/gold_plate.json b/src/generated/resources/data/energizedpower/recipe/crafting/gold_plate.json index cb03afbed..c7fc35734 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/gold_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/gold_plate.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:tools/hammers" - }, - { - "tag": "c:ingots/gold" - } + "#c:tools/hammers", + "#c:ingots/gold" ], "result": { "count": 1, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/gold_wire.json b/src/generated/resources/data/energizedpower/recipe/crafting/gold_wire.json index 18723500e..f9189f0dd 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/gold_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/gold_wire.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:tools/cutters" - }, - { - "tag": "c:plates/gold" - } + "#c:tools/cutters", + "#c:plates/gold" ], "result": { "count": 2, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/golden_fluid_pipe.json b/src/generated/resources/data/energizedpower/recipe/crafting/golden_fluid_pipe.json index a69869487..89e95c3e9 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/golden_fluid_pipe.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/golden_fluid_pipe.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "G": { - "tag": "c:ingots/gold" - }, - "g": { - "tag": "c:plates/gold" - } + "G": "#c:ingots/gold", + "g": "#c:plates/gold" }, "pattern": [ "GgG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/golden_hammer.json b/src/generated/resources/data/energizedpower/recipe/crafting/golden_hammer.json index 5342ab32d..44f337e45 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/golden_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/golden_hammer.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "M": { - "tag": "c:ingots/gold" - }, - "S": { - "tag": "c:rods/wooden" - } + "M": "#minecraft:gold_tool_materials", + "S": "#c:rods/wooden" }, "pattern": [ " M ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/good_fertilizer.json b/src/generated/resources/data/energizedpower/recipe/crafting/good_fertilizer.json index 301b138fc..2ff8167ba 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/good_fertilizer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/good_fertilizer.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_fertilizer" - }, - "K": { - "item": "minecraft:kelp" - }, - "S": { - "item": "minecraft:sugar_cane" - }, - "W": { - "item": "minecraft:wheat_seeds" - }, - "b": { - "item": "minecraft:bamboo" - }, - "s": { - "item": "minecraft:sugar" - } + "B": "energizedpower:basic_fertilizer", + "K": "minecraft:kelp", + "S": "minecraft:sugar_cane", + "W": "minecraft:wheat_seeds", + "b": "minecraft:bamboo", + "s": "minecraft:sugar" }, "pattern": [ "SBK", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/hardened_machine_frame.json b/src/generated/resources/data/energizedpower/recipe/crafting/hardened_machine_frame.json index c43f10133..fed868264 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/hardened_machine_frame.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/hardened_machine_frame.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "I": { - "tag": "c:gears/iron" - }, - "R": { - "tag": "c:rods/iron" - }, - "S": { - "tag": "c:silicon" - }, - "s": { - "tag": "c:ingots/steel" - } + "B": "energizedpower:basic_machine_frame", + "I": "#c:gears/iron", + "R": "#c:rods/iron", + "S": "#c:silicon", + "s": "#c:ingots/steel" }, "pattern": [ "IsR", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/heat_generator.json b/src/generated/resources/data/energizedpower/recipe/crafting/heat_generator.json index 69522e108..2f8522d42 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/heat_generator.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/heat_generator.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:coal_engine" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "c": { - "tag": "c:wires/copper" - }, - "s": { - "tag": "c:silicon" - } + "C": "energizedpower:coal_engine", + "S": "#c:storage_blocks/silicon", + "c": "#c:wires/copper", + "s": "#c:silicon" }, "pattern": [ "cSc", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_1_to_n.json b/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_1_to_n.json index 09dc15980..29c558e6d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_1_to_n.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_1_to_n.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "G": { - "tag": "c:plates/energized_gold" - }, - "M": { - "item": "energizedpower:advanced_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:transformer_1_to_n" - } + "G": "#c:plates/energized_gold", + "M": "energizedpower:advanced_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:transformer_1_to_n" }, "pattern": [ "GTG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_3_to_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_3_to_3.json index 06c369bde..fcf677817 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_3_to_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_3_to_3.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "G": { - "tag": "c:plates/energized_gold" - }, - "M": { - "item": "energizedpower:advanced_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:transformer_3_to_3" - } + "G": "#c:plates/energized_gold", + "M": "energizedpower:advanced_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:transformer_3_to_3" }, "pattern": [ "GTG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_n_to_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_n_to_1.json index 179b7eff9..ae385f877 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_n_to_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/hv_transformer_n_to_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "G": { - "tag": "c:plates/energized_gold" - }, - "M": { - "item": "energizedpower:advanced_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:transformer_n_to_1" - } + "G": "#c:plates/energized_gold", + "M": "energizedpower:advanced_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:transformer_n_to_1" }, "pattern": [ "GTG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/induction_smelter.json b/src/generated/resources/data/energizedpower/recipe/crafting/induction_smelter.json index fa80dbc55..18d872b0b 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/induction_smelter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/induction_smelter.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:alloy_furnace" - }, - "B": { - "item": "energizedpower:basic_circuit" - }, - "H": { - "item": "energizedpower:hardened_machine_frame" - }, - "S": { - "tag": "c:ingots/steel" - } + "A": "energizedpower:alloy_furnace", + "B": "energizedpower:basic_circuit", + "H": "energizedpower:hardened_machine_frame", + "S": "#c:ingots/steel" }, "pattern": [ "SAS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/inventory_charger.json b/src/generated/resources/data/energizedpower/recipe/crafting/inventory_charger.json index 239cbab0c..a254babbd 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/inventory_charger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/inventory_charger.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:charger" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - }, - "c": { - "tag": "c:plates/copper" - } + "C": "energizedpower:charger", + "I": "#c:plates/iron", + "R": "#c:dusts/redstone", + "S": "#c:silicon", + "c": "#c:plates/copper" }, "pattern": [ "SIS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/inventory_coal_engine.json b/src/generated/resources/data/energizedpower/recipe/crafting/inventory_coal_engine.json index ecc1a90dc..f113159b5 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/inventory_coal_engine.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/inventory_coal_engine.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:coal_engine" - }, - "I": { - "tag": "c:plates/iron" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - }, - "c": { - "tag": "c:plates/copper" - } + "C": "energizedpower:coal_engine", + "I": "#c:plates/iron", + "R": "#c:dusts/redstone", + "S": "#c:silicon", + "c": "#c:plates/copper" }, "pattern": [ "SIS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/inventory_teleporter.json b/src/generated/resources/data/energizedpower/recipe/crafting/inventory_teleporter.json index acbb5b231..8a089ebc6 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/inventory_teleporter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/inventory_teleporter.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "T": { - "item": "energizedpower:teleporter" - }, - "c": { - "tag": "c:plates/energized_copper" - } + "C": "energizedpower:energized_crystal_matrix", + "G": "#c:plates/energized_gold", + "R": "#c:dusts/redstone", + "T": "energizedpower:teleporter", + "c": "#c:plates/energized_copper" }, "pattern": [ "CcC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/iron_fluid_pipe.json b/src/generated/resources/data/energizedpower/recipe/crafting/iron_fluid_pipe.json index dbbb97a5f..68dea6db4 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/iron_fluid_pipe.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/iron_fluid_pipe.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "I": { - "tag": "c:ingots/iron" - }, - "i": { - "tag": "c:plates/iron" - } + "I": "#c:ingots/iron", + "i": "#c:plates/iron" }, "pattern": [ "IiI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/iron_hammer.json b/src/generated/resources/data/energizedpower/recipe/crafting/iron_hammer.json index 3e2b6c50f..d721ea12d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/iron_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/iron_hammer.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "M": { - "tag": "c:ingots/iron" - }, - "S": { - "tag": "c:rods/wooden" - } + "M": "#minecraft:iron_tool_materials", + "S": "#c:rods/wooden" }, "pattern": [ " M ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/iron_plate.json b/src/generated/resources/data/energizedpower/recipe/crafting/iron_plate.json index a8f80e2fd..443e85c1e 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/iron_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/iron_plate.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:tools/hammers" - }, - { - "tag": "c:ingots/iron" - } + "#c:tools/hammers", + "#c:ingots/iron" ], "result": { "count": 1, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_from_dried_kelp.json b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_from_dried_kelp.json index b9353e915..ce6d2614f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_from_dried_kelp.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_from_dried_kelp.json @@ -3,15 +3,9 @@ "category": "misc", "group": "item_conveyor_belt", "key": { - "I": { - "tag": "c:plates/iron" - }, - "K": { - "item": "minecraft:dried_kelp" - }, - "R": { - "tag": "c:dusts/redstone" - } + "I": "#c:plates/iron", + "K": "minecraft:dried_kelp", + "R": "#c:dusts/redstone" }, "pattern": [ " ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_from_leather.json b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_from_leather.json index 607c68706..38bc260a5 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_from_leather.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_from_leather.json @@ -3,15 +3,9 @@ "category": "misc", "group": "item_conveyor_belt", "key": { - "I": { - "tag": "c:plates/iron" - }, - "L": { - "tag": "c:leathers" - }, - "R": { - "tag": "c:dusts/redstone" - } + "I": "#c:plates/iron", + "L": "#c:leathers", + "R": "#c:dusts/redstone" }, "pattern": [ " ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_loader.json b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_loader.json index 7ffc9bf2c..ec2c7020e 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_loader.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_loader.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:cobblestones/normal" - }, - "H": { - "item": "minecraft:hopper" - }, - "c": { - "item": "energizedpower:item_conveyor_belt" - } + "C": "#c:cobblestones/normal", + "H": "minecraft:hopper", + "c": "energizedpower:item_conveyor_belt" }, "pattern": [ "CCC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_merger.json b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_merger.json index c78a23a08..11dfbd94d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_merger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_merger.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:cobblestones/normal" - }, - "I": { - "tag": "c:plates/iron" - }, - "L": { - "item": "energizedpower:item_conveyor_belt_loader" - }, - "R": { - "tag": "c:dusts/redstone" - } + "C": "#c:cobblestones/normal", + "I": "#c:plates/iron", + "L": "energizedpower:item_conveyor_belt_loader", + "R": "#c:dusts/redstone" }, "pattern": [ "CRC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_sorter.json b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_sorter.json index c24b9b1a1..58f145c7e 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_sorter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_sorter.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:cobblestones/normal" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "L": { - "item": "energizedpower:item_conveyor_belt_loader" - }, - "R": { - "tag": "c:storage_blocks/redstone" - } + "C": "#c:cobblestones/normal", + "I": "#c:storage_blocks/iron", + "L": "energizedpower:item_conveyor_belt_loader", + "R": "#c:storage_blocks/redstone" }, "pattern": [ "CRC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_splitter.json b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_splitter.json index df6169efb..d03127dee 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_splitter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_splitter.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:cobblestones/normal" - }, - "I": { - "tag": "c:plates/iron" - }, - "L": { - "item": "energizedpower:item_conveyor_belt_loader" - }, - "R": { - "tag": "c:dusts/redstone" - } + "C": "#c:cobblestones/normal", + "I": "#c:plates/iron", + "L": "energizedpower:item_conveyor_belt_loader", + "R": "#c:dusts/redstone" }, "pattern": [ "CIC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_switch.json b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_switch.json index cdf6fb543..2a8668a08 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_switch.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/item_conveyor_belt_switch.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:cobblestones/normal" - }, - "I": { - "tag": "c:plates/iron" - }, - "L": { - "item": "energizedpower:item_conveyor_belt_loader" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "l": { - "item": "minecraft:lever" - } + "C": "#c:cobblestones/normal", + "I": "#c:plates/iron", + "L": "energizedpower:item_conveyor_belt_loader", + "R": "#c:dusts/redstone", + "l": "minecraft:lever" }, "pattern": [ "ClC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/lightning_generator.json b/src/generated/resources/data/energizedpower/recipe/crafting/lightning_generator.json index 0440308cc..e630de187 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/lightning_generator.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/lightning_generator.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "C": { - "tag": "c:storage_blocks/copper" - }, - "E": { - "tag": "c:plates/energized_copper" - }, - "G": { - "tag": "c:plates/gold" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "a": { - "tag": "c:plates/advanced_alloy" - } + "A": "energizedpower:advanced_machine_frame", + "C": "#c:storage_blocks/copper", + "E": "#c:plates/energized_copper", + "G": "#c:plates/gold", + "R": "#c:dusts/redstone", + "a": "#c:plates/advanced_alloy" }, "pattern": [ "RaR", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_1_to_n.json b/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_1_to_n.json index 5facd2785..899d1231e 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_1_to_n.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_1_to_n.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "M": { - "item": "energizedpower:basic_machine_frame" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - } + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "M": "energizedpower:basic_machine_frame", + "R": "#c:dusts/redstone", + "S": "#c:silicon" }, "pattern": [ "CSI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_3_to_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_3_to_3.json index 77421f37d..915e12ee8 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_3_to_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_3_to_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "M": { - "item": "energizedpower:basic_machine_frame" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - } + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "M": "energizedpower:basic_machine_frame", + "R": "#c:dusts/redstone", + "S": "#c:silicon" }, "pattern": [ "CSI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_n_to_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_n_to_1.json index e12e6da9b..7601688de 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_n_to_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/lv_transformer_n_to_1.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "M": { - "item": "energizedpower:basic_machine_frame" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - } + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "M": "energizedpower:basic_machine_frame", + "R": "#c:dusts/redstone", + "S": "#c:silicon" }, "pattern": [ "CRI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/metal_press.json b/src/generated/resources/data/energizedpower/recipe/crafting/metal_press.json index e05e3a832..794761bd1 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/metal_press.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/metal_press.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "P": { - "item": "minecraft:piston" - }, - "S": { - "tag": "c:ingots/steel" - } + "B": "energizedpower:basic_machine_frame", + "I": "#c:storage_blocks/iron", + "P": "minecraft:piston", + "S": "#c:ingots/steel" }, "pattern": [ "SPS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/minecart_charger.json b/src/generated/resources/data/energizedpower/recipe/crafting/minecart_charger.json index d4d742c86..9757afe1a 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/minecart_charger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/minecart_charger.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "H": { - "item": "energizedpower:charger" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "S": { - "tag": "c:silicon" - }, - "c": { - "tag": "c:plates/copper" - }, - "i": { - "tag": "c:plates/iron" - } + "C": "#c:storage_blocks/copper", + "H": "energizedpower:charger", + "I": "#c:storage_blocks/iron", + "S": "#c:silicon", + "c": "#c:plates/copper", + "i": "#c:plates/iron" }, "pattern": [ "cCc", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/minecart_uncharger.json b/src/generated/resources/data/energizedpower/recipe/crafting/minecart_uncharger.json index 04f8e931a..ef30e1af4 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/minecart_uncharger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/minecart_uncharger.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "S": { - "tag": "c:silicon" - }, - "U": { - "item": "energizedpower:uncharger" - }, - "c": { - "tag": "c:plates/copper" - }, - "i": { - "tag": "c:plates/iron" - } + "C": "#c:storage_blocks/copper", + "I": "#c:storage_blocks/iron", + "S": "#c:silicon", + "U": "energizedpower:uncharger", + "c": "#c:plates/copper", + "i": "#c:plates/iron" }, "pattern": [ "iIi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_1.json index 78bba3e81..dd0ed5fbb 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "G": { - "tag": "c:plates/gold" - }, - "S": { - "tag": "c:silicon" - }, - "b": { - "item": "energizedpower:basic_solar_cell" - } + "B": "energizedpower:basic_upgrade_module", + "G": "#c:plates/gold", + "S": "#c:silicon", + "b": "energizedpower:basic_solar_cell" }, "pattern": [ "GSG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_2.json index d71783540..55907be16 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_2.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "B": { - "item": "energizedpower:basic_solar_cell" - }, - "G": { - "tag": "c:plates/gold" - }, - "M": { - "item": "energizedpower:moon_light_upgrade_module_1" - }, - "S": { - "tag": "c:silicon" - } + "A": "energizedpower:advanced_upgrade_module", + "B": "energizedpower:basic_solar_cell", + "G": "#c:plates/gold", + "M": "energizedpower:moon_light_upgrade_module_1", + "S": "#c:silicon" }, "pattern": [ "GSG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_3.json index 6ff180786..6887eba95 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/moon_light_upgrade_module_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_solar_cell" - }, - "G": { - "tag": "c:plates/gold" - }, - "M": { - "item": "energizedpower:moon_light_upgrade_module_2" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "S": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_solar_cell", + "G": "#c:plates/gold", + "M": "energizedpower:moon_light_upgrade_module_2", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "S": "#c:silicon" }, "pattern": [ "GSG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_1_to_n.json b/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_1_to_n.json index ceb11c4b6..a37735cb6 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_1_to_n.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_1_to_n.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "M": { - "item": "energizedpower:hardened_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:lv_transformer_1_to_n" - } + "C": "#c:storage_blocks/copper", + "I": "#c:storage_blocks/iron", + "M": "energizedpower:hardened_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:lv_transformer_1_to_n" }, "pattern": [ "CTI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_3_to_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_3_to_3.json index 7acce8deb..80b688ffe 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_3_to_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_3_to_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "M": { - "item": "energizedpower:hardened_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:lv_transformer_3_to_3" - } + "C": "#c:storage_blocks/copper", + "I": "#c:storage_blocks/iron", + "M": "energizedpower:hardened_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:lv_transformer_3_to_3" }, "pattern": [ "CTI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_n_to_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_n_to_1.json index bd1820f66..76500e6c7 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_n_to_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/mv_transformer_n_to_1.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "I": { - "tag": "c:storage_blocks/iron" - }, - "M": { - "item": "energizedpower:hardened_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:lv_transformer_n_to_1" - } + "C": "#c:storage_blocks/copper", + "I": "#c:storage_blocks/iron", + "M": "energizedpower:hardened_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:lv_transformer_n_to_1" }, "pattern": [ "CTI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/plant_growth_chamber.json b/src/generated/resources/data/energizedpower/recipe/crafting/plant_growth_chamber.json index c246964be..8d5808e4a 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/plant_growth_chamber.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/plant_growth_chamber.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "D": { - "item": "minecraft:dirt" - }, - "G": { - "tag": "c:glass_panes/colorless" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:silicon" - }, - "W": { - "item": "minecraft:water_bucket" - } + "B": "energizedpower:basic_machine_frame", + "D": "minecraft:dirt", + "G": "#c:glass_panes/colorless", + "I": "#c:plates/iron", + "S": "#c:silicon", + "W": "minecraft:water_bucket" }, "pattern": [ "SWS", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/powered_furnace.json b/src/generated/resources/data/energizedpower/recipe/crafting/powered_furnace.json index 9fe9cbccb..4a342c634 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/powered_furnace.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/powered_furnace.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "F": { - "item": "minecraft:furnace" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "F": "minecraft:furnace", + "I": "#c:plates/iron", + "S": "#c:silicon" }, "pattern": [ "CFC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/powered_lamp.json b/src/generated/resources/data/energizedpower/recipe/crafting/powered_lamp.json index 339489a94..6f9d97cbc 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/powered_lamp.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/powered_lamp.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:ingots/copper" - }, - "R": { - "item": "minecraft:redstone_lamp" - }, - "S": { - "tag": "c:silicon" - } + "C": "#c:ingots/copper", + "R": "minecraft:redstone_lamp", + "S": "#c:silicon" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/press_mold_maker.json b/src/generated/resources/data/energizedpower/recipe/crafting/press_mold_maker.json index 7360d512b..b46e253f3 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/press_mold_maker.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/press_mold_maker.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "minecraft:bricks" - }, - "S": { - "item": "minecraft:smooth_stone" - }, - "s": { - "tag": "minecraft:shovels" - } + "B": "minecraft:bricks", + "S": "minecraft:smooth_stone", + "s": "#minecraft:shovels" }, "pattern": [ "BBB", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/pulverizer.json b/src/generated/resources/data/energizedpower/recipe/crafting/pulverizer.json index f6d201e71..499ffa33a 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/pulverizer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/pulverizer.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "item": "minecraft:stonecutter" - } + "B": "energizedpower:basic_machine_frame", + "I": "#c:plates/iron", + "S": "minecraft:stonecutter" }, "pattern": [ "ISI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_1.json index 516eb72ba..9539b295f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_1.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "tag": "c:dusts/redstone" - } + "A": "energizedpower:advanced_upgrade_module", + "G": "#c:plates/energized_gold", + "R": "#c:dusts/redstone" }, "pattern": [ "GRG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_2.json index a7a59bd68..b7d2044a6 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_2.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:range_upgrade_module_1" - }, - "r": { - "tag": "c:dusts/redstone" - } + "A": "energizedpower:advanced_upgrade_module", + "G": "#c:plates/energized_gold", + "R": "energizedpower:range_upgrade_module_1", + "r": "#c:dusts/redstone" }, "pattern": [ "GrG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_3.json index 696a1b00e..7c7c09ba6 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/range_upgrade_module_3.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:range_upgrade_module_2" - }, - "r": { - "tag": "c:dusts/redstone" - } + "A": "energizedpower:advanced_upgrade_module", + "G": "#c:plates/energized_gold", + "R": "energizedpower:range_upgrade_module_2", + "r": "#c:dusts/redstone" }, "pattern": [ "GrG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/raw_tin.json b/src/generated/resources/data/energizedpower/recipe/crafting/raw_tin.json index f8a69cbd3..fdf9a61e0 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/raw_tin.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/raw_tin.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:storage_blocks/raw_tin" - } + "#c:storage_blocks/raw_tin" ], "result": { "count": 9, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/raw_tin_block.json b/src/generated/resources/data/energizedpower/recipe/crafting/raw_tin_block.json index 58df11a78..1afbb1a81 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/raw_tin_block.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/raw_tin_block.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "#": { - "tag": "c:raw_materials/tin" - } + "#": "#c:raw_materials/tin" }, "pattern": [ "###", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/reinforced_advanced_machine_frame.json b/src/generated/resources/data/energizedpower/recipe/crafting/reinforced_advanced_machine_frame.json index ff8aee23f..8fa9d5432 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/reinforced_advanced_machine_frame.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/reinforced_advanced_machine_frame.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_machine_frame" - }, - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "S": { - "tag": "c:storage_blocks/silicon" - } + "A": "energizedpower:advanced_machine_frame", + "C": "energizedpower:energized_crystal_matrix", + "S": "#c:storage_blocks/silicon" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/reinforced_advanced_upgrade_module.json b/src/generated/resources/data/energizedpower/recipe/crafting/reinforced_advanced_upgrade_module.json index e53d65f99..24aa1fc19 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/reinforced_advanced_upgrade_module.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/reinforced_advanced_upgrade_module.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "G": { - "tag": "c:plates/energized_gold" - }, - "P": { - "item": "energizedpower:processing_unit" - }, - "g": { - "tag": "c:wires/energized_gold" - } + "A": "energizedpower:advanced_upgrade_module", + "G": "#c:plates/energized_gold", + "P": "energizedpower:processing_unit", + "g": "#c:wires/energized_gold" }, "pattern": [ "ggg", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/saw_blade.json b/src/generated/resources/data/energizedpower/recipe/crafting/saw_blade.json index e0bdeb704..a38078ee4 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/saw_blade.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/saw_blade.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "I": { - "tag": "c:ingots/iron" - }, - "i": { - "tag": "c:nuggets/iron" - } + "I": "#c:ingots/iron", + "i": "#c:nuggets/iron" }, "pattern": [ " i ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/sawdust_block.json b/src/generated/resources/data/energizedpower/recipe/crafting/sawdust_block.json index 3c57a5bd1..a997587df 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/sawdust_block.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/sawdust_block.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "#": { - "tag": "c:dusts/wood" - } + "#": "#c:dusts/wood" }, "pattern": [ "###", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/sawdust_from_sawdust_block.json b/src/generated/resources/data/energizedpower/recipe/crafting/sawdust_from_sawdust_block.json index e505acff4..fa23918d0 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/sawdust_from_sawdust_block.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/sawdust_from_sawdust_block.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "item": "energizedpower:sawdust_block" - } + "energizedpower:sawdust_block" ], "result": { "count": 9, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/sawmill.json b/src/generated/resources/data/energizedpower/recipe/crafting/sawmill.json index 16ddc3686..847da84f7 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/sawmill.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/sawmill.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "item": "energizedpower:saw_blade" - }, - "s": { - "item": "energizedpower:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "S": "energizedpower:saw_blade", + "s": "energizedpower:silicon" }, "pattern": [ "sSs", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/silicon_block.json b/src/generated/resources/data/energizedpower/recipe/crafting/silicon_block.json index 70e1d2c10..3aebdc5a6 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/silicon_block.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/silicon_block.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "#": { - "tag": "c:silicon" - } + "#": "#c:silicon" }, "pattern": [ "###", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/silicon_from_silicon_block.json b/src/generated/resources/data/energizedpower/recipe/crafting/silicon_from_silicon_block.json index ae55d9f3f..4651d5c9d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/silicon_from_silicon_block.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/silicon_from_silicon_block.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:storage_blocks/silicon" - } + "#c:storage_blocks/silicon" ], "result": { "count": 9, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/smoker_upgrade_module.json b/src/generated/resources/data/energizedpower/recipe/crafting/smoker_upgrade_module.json index 865642a31..73bc4edfb 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/smoker_upgrade_module.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/smoker_upgrade_module.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "item": "minecraft:smoker" - }, - "s": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/copper", + "R": "#c:dusts/redstone", + "S": "minecraft:smoker", + "s": "#c:silicon" }, "pattern": [ "CsC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_1.json index 0c158d6b6..8fc102d17 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_1.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_solar_cell" - }, - "C": { - "tag": "c:ingots/copper" - }, - "G": { - "tag": "c:glass_panes/colorless" - }, - "I": { - "tag": "c:ingots/iron" - }, - "R": { - "tag": "c:dusts/redstone" - } + "B": "energizedpower:basic_solar_cell", + "C": "#c:ingots/copper", + "G": "#c:glass_panes/colorless", + "I": "#c:ingots/iron", + "R": "#c:dusts/redstone" }, "pattern": [ "GGG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_2.json index aa70436e8..5338b4296 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_2.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_solar_cell" - }, - "C": { - "tag": "c:ingots/copper" - }, - "G": { - "tag": "c:glass_panes/colorless" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "item": "energizedpower:solar_panel_1" - } + "B": "energizedpower:basic_solar_cell", + "C": "#c:ingots/copper", + "G": "#c:glass_panes/colorless", + "R": "#c:dusts/redstone", + "S": "energizedpower:solar_panel_1" }, "pattern": [ "GGG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_3.json index 47c2f672b..8c7040311 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_solar_cell" - }, - "G": { - "tag": "c:glass_panes/colorless" - }, - "R": { - "tag": "c:ingots/redstone_alloy" - }, - "S": { - "item": "energizedpower:solar_panel_2" - }, - "s": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_solar_cell", + "G": "#c:glass_panes/colorless", + "R": "#c:ingots/redstone_alloy", + "S": "energizedpower:solar_panel_2", + "s": "#c:silicon" }, "pattern": [ "GGG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_4.json b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_4.json index 72ab7e527..c0efd4458 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_4.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_4.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_solar_cell" - }, - "G": { - "tag": "c:glass_panes/colorless" - }, - "R": { - "tag": "c:ingots/redstone_alloy" - }, - "S": { - "item": "energizedpower:solar_panel_3" - }, - "s": { - "tag": "c:silicon" - } + "A": "energizedpower:advanced_solar_cell", + "G": "#c:glass_panes/colorless", + "R": "#c:ingots/redstone_alloy", + "S": "energizedpower:solar_panel_3", + "s": "#c:silicon" }, "pattern": [ "GGG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_5.json b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_5.json index e57d13741..6e7853295 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_5.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_5.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_solar_cell" - }, - "E": { - "tag": "c:ingots/energized_gold" - }, - "G": { - "tag": "c:glass_panes/colorless" - }, - "S": { - "item": "energizedpower:solar_panel_4" - }, - "a": { - "tag": "c:gems/amethyst" - } + "A": "energizedpower:advanced_solar_cell", + "E": "#c:ingots/energized_gold", + "G": "#c:glass_panes/colorless", + "S": "energizedpower:solar_panel_4", + "a": "#c:gems/amethyst" }, "pattern": [ "GGG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_6.json b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_6.json index e218bb3fa..39838190f 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_6.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/solar_panel_6.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "tag": "c:gems/amethyst" - }, - "E": { - "tag": "c:ingots/energized_gold" - }, - "G": { - "tag": "c:glass_panes/colorless" - }, - "R": { - "item": "energizedpower:reinforced_advanced_solar_cell" - }, - "S": { - "item": "energizedpower:solar_panel_5" - } + "A": "#c:gems/amethyst", + "E": "#c:ingots/energized_gold", + "G": "#c:glass_panes/colorless", + "R": "energizedpower:reinforced_advanced_solar_cell", + "S": "energizedpower:solar_panel_5" }, "pattern": [ "GGG", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_1.json b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_1.json index ac0d11091..bc57f1364 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_1.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_1.json @@ -2,18 +2,10 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/copper", + "R": "#c:dusts/redstone", + "S": "#c:silicon" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_2.json b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_2.json index ac36de448..b0c006da2 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_2.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_2.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - }, - "s": { - "item": "energizedpower:speed_upgrade_module_1" - } + "B": "energizedpower:basic_upgrade_module", + "C": "#c:plates/copper", + "R": "#c:dusts/redstone", + "S": "#c:silicon", + "s": "energizedpower:speed_upgrade_module_1" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_3.json b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_3.json index 83bae6499..1306186e9 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_3.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_3.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - }, - "s": { - "item": "energizedpower:speed_upgrade_module_2" - } + "A": "energizedpower:advanced_upgrade_module", + "C": "#c:plates/copper", + "R": "#c:dusts/redstone", + "S": "#c:silicon", + "s": "energizedpower:speed_upgrade_module_2" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_4.json b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_4.json index 8ae1c084c..4b203cc72 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_4.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_4.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "item": "energizedpower:advanced_upgrade_module" - }, - "C": { - "tag": "c:plates/copper" - }, - "R": { - "tag": "c:dusts/redstone" - }, - "S": { - "tag": "c:silicon" - }, - "s": { - "item": "energizedpower:speed_upgrade_module_3" - } + "A": "energizedpower:advanced_upgrade_module", + "C": "#c:plates/copper", + "R": "#c:dusts/redstone", + "S": "#c:silicon", + "s": "energizedpower:speed_upgrade_module_3" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_5.json b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_5.json index 261317600..a41149d40 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_5.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/speed_upgrade_module_5.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:plates/copper" - }, - "R": { - "item": "energizedpower:reinforced_advanced_upgrade_module" - }, - "S": { - "tag": "c:silicon" - }, - "r": { - "tag": "c:dusts/redstone" - }, - "s": { - "item": "energizedpower:speed_upgrade_module_4" - } + "C": "#c:plates/copper", + "R": "energizedpower:reinforced_advanced_upgrade_module", + "S": "#c:silicon", + "r": "#c:dusts/redstone", + "s": "energizedpower:speed_upgrade_module_4" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/stone_hammer.json b/src/generated/resources/data/energizedpower/recipe/crafting/stone_hammer.json index 4e30b300a..daa027728 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/stone_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/stone_hammer.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "M": { - "tag": "minecraft:stone_tool_materials" - }, - "S": { - "tag": "c:rods/wooden" - } + "M": "#minecraft:stone_tool_materials", + "S": "#c:rods/wooden" }, "pattern": [ " M ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/stone_solidifier.json b/src/generated/resources/data/energizedpower/recipe/crafting/stone_solidifier.json index 5c11a35e4..187430384 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/stone_solidifier.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/stone_solidifier.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "H": { - "item": "energizedpower:hardened_machine_frame" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:silicon" - }, - "i": { - "tag": "c:gears/iron" - } + "C": "#c:storage_blocks/copper", + "F": "energizedpower:fluid_tank_small", + "H": "energizedpower:hardened_machine_frame", + "I": "#c:plates/iron", + "S": "#c:silicon", + "i": "#c:gears/iron" }, "pattern": [ "iSi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/teleporter.json b/src/generated/resources/data/energizedpower/recipe/crafting/teleporter.json index 1aa998dda..40bd7cdbc 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/teleporter.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/teleporter.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "tag": "c:plates/advanced_alloy" - }, - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "E": { - "tag": "c:plates/energized_gold" - }, - "R": { - "item": "energizedpower:reinforced_advanced_machine_frame" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "T": { - "item": "energizedpower:teleporter_processing_unit" - } + "A": "#c:plates/advanced_alloy", + "C": "energizedpower:energized_crystal_matrix", + "E": "#c:plates/energized_gold", + "R": "energizedpower:reinforced_advanced_machine_frame", + "S": "#c:storage_blocks/silicon", + "T": "energizedpower:teleporter_processing_unit" }, "pattern": [ "CEC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/teleporter_matrix.json b/src/generated/resources/data/energizedpower/recipe/crafting/teleporter_matrix.json index 8fecfeed5..bd014edef 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/teleporter_matrix.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/teleporter_matrix.json @@ -2,15 +2,9 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "tag": "c:gems/amethyst" - }, - "E": { - "item": "energizedpower:energized_crystal_matrix" - }, - "e": { - "tag": "c:ender_pearls" - } + "A": "#c:gems/amethyst", + "E": "energizedpower:energized_crystal_matrix", + "e": "#c:ender_pearls" }, "pattern": [ "AEA", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/thermal_generator.json b/src/generated/resources/data/energizedpower/recipe/crafting/thermal_generator.json index ece343862..8d99dc6eb 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/thermal_generator.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/thermal_generator.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "C": { - "tag": "c:storage_blocks/copper" - }, - "E": { - "item": "energizedpower:coal_engine" - }, - "F": { - "item": "energizedpower:fluid_tank_small" - }, - "H": { - "item": "energizedpower:hardened_machine_frame" - }, - "S": { - "tag": "c:silicon" - }, - "c": { - "tag": "c:plates/copper" - } + "C": "#c:storage_blocks/copper", + "E": "energizedpower:coal_engine", + "F": "energizedpower:fluid_tank_small", + "H": "energizedpower:hardened_machine_frame", + "S": "#c:silicon", + "c": "#c:plates/copper" }, "pattern": [ "cHc", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/time_controller.json b/src/generated/resources/data/energizedpower/recipe/crafting/time_controller.json index 862dff587..6df388e8c 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/time_controller.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/time_controller.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "tag": "c:plates/advanced_alloy" - }, - "C": { - "item": "minecraft:clock" - }, - "E": { - "tag": "c:plates/energized_gold" - }, - "P": { - "item": "energizedpower:processing_unit" - }, - "R": { - "item": "energizedpower:reinforced_advanced_machine_frame" - }, - "c": { - "item": "energizedpower:energized_crystal_matrix" - } + "A": "#c:plates/advanced_alloy", + "C": "minecraft:clock", + "E": "#c:plates/energized_gold", + "P": "energizedpower:processing_unit", + "R": "energizedpower:reinforced_advanced_machine_frame", + "c": "energizedpower:energized_crystal_matrix" }, "pattern": [ "cCc", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/tin_block.json b/src/generated/resources/data/energizedpower/recipe/crafting/tin_block.json index c09daad46..2f5d5c4ab 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/tin_block.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/tin_block.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "#": { - "tag": "c:ingots/tin" - } + "#": "#c:ingots/tin" }, "pattern": [ "###", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/tin_cable.json b/src/generated/resources/data/energizedpower/recipe/crafting/tin_cable.json index a93090849..c6fc45e02 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/tin_cable.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/tin_cable.json @@ -3,12 +3,8 @@ "category": "misc", "group": "tin_cable", "key": { - "I": { - "tag": "c:ingots/tin" - }, - "i": { - "item": "energizedpower:cable_insulator" - } + "I": "#c:ingots/tin", + "i": "energizedpower:cable_insulator" }, "pattern": [ "iIi", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/tin_cable_using_wire.json b/src/generated/resources/data/energizedpower/recipe/crafting/tin_cable_using_wire.json index 63e72635a..aea8d238b 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/tin_cable_using_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/tin_cable_using_wire.json @@ -3,12 +3,8 @@ "category": "misc", "group": "tin_cable", "key": { - "I": { - "item": "energizedpower:cable_insulator" - }, - "W": { - "tag": "c:wires/tin" - } + "I": "energizedpower:cable_insulator", + "W": "#c:wires/tin" }, "pattern": [ "IWI", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/tin_ingot_from_nuggets.json b/src/generated/resources/data/energizedpower/recipe/crafting/tin_ingot_from_nuggets.json index e99c04d49..a515a0e78 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/tin_ingot_from_nuggets.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/tin_ingot_from_nuggets.json @@ -3,9 +3,7 @@ "category": "misc", "group": "tin_ingot", "key": { - "#": { - "tag": "c:nuggets/tin" - } + "#": "#c:nuggets/tin" }, "pattern": [ "###", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/tin_ingot_from_tin_block.json b/src/generated/resources/data/energizedpower/recipe/crafting/tin_ingot_from_tin_block.json index 897317b36..4d90ef7c8 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/tin_ingot_from_tin_block.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/tin_ingot_from_tin_block.json @@ -3,9 +3,7 @@ "category": "misc", "group": "tin_ingot", "ingredients": [ - { - "tag": "c:storage_blocks/tin" - } + "#c:storage_blocks/tin" ], "result": { "count": 9, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/tin_nugget.json b/src/generated/resources/data/energizedpower/recipe/crafting/tin_nugget.json index d5aa4ab19..df3b5abe4 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/tin_nugget.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/tin_nugget.json @@ -2,9 +2,7 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:ingots/tin" - } + "#c:ingots/tin" ], "result": { "count": 9, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/tin_plate.json b/src/generated/resources/data/energizedpower/recipe/crafting/tin_plate.json index 12bd442dc..b9be1e499 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/tin_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/tin_plate.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:tools/hammers" - }, - { - "tag": "c:ingots/tin" - } + "#c:tools/hammers", + "#c:ingots/tin" ], "result": { "count": 1, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/tin_wire.json b/src/generated/resources/data/energizedpower/recipe/crafting/tin_wire.json index 9848894d2..c97391da9 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/tin_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/tin_wire.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shapeless", "category": "misc", "ingredients": [ - { - "tag": "c:tools/cutters" - }, - { - "tag": "c:plates/tin" - } + "#c:tools/cutters", + "#c:plates/tin" ], "result": { "count": 2, diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/uncharger.json b/src/generated/resources/data/energizedpower/recipe/crafting/uncharger.json index a11d991cd..be54f8fd9 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/uncharger.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/uncharger.json @@ -2,21 +2,11 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "B": { - "item": "energizedpower:basic_machine_frame" - }, - "C": { - "tag": "c:plates/copper" - }, - "I": { - "tag": "c:plates/iron" - }, - "S": { - "tag": "c:storage_blocks/silicon" - }, - "s": { - "tag": "c:silicon" - } + "B": "energizedpower:basic_machine_frame", + "C": "#c:plates/copper", + "I": "#c:plates/iron", + "S": "#c:storage_blocks/silicon", + "s": "#c:silicon" }, "pattern": [ "CSC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/weather_controller.json b/src/generated/resources/data/energizedpower/recipe/crafting/weather_controller.json index eaeb5c47b..c10f185dc 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/weather_controller.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/weather_controller.json @@ -2,24 +2,12 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "A": { - "tag": "c:gems/amethyst" - }, - "C": { - "item": "energizedpower:energized_crystal_matrix" - }, - "E": { - "tag": "c:plates/energized_gold" - }, - "P": { - "item": "energizedpower:processing_unit" - }, - "R": { - "item": "energizedpower:reinforced_advanced_machine_frame" - }, - "a": { - "tag": "c:plates/advanced_alloy" - } + "A": "#c:gems/amethyst", + "C": "energizedpower:energized_crystal_matrix", + "E": "#c:plates/energized_gold", + "P": "energizedpower:processing_unit", + "R": "energizedpower:reinforced_advanced_machine_frame", + "a": "#c:plates/advanced_alloy" }, "pattern": [ "CAC", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/wooden_hammer.json b/src/generated/resources/data/energizedpower/recipe/crafting/wooden_hammer.json index 01b973493..82831f335 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/wooden_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/wooden_hammer.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "M": { - "tag": "minecraft:planks" - }, - "S": { - "tag": "c:rods/wooden" - } + "M": "#minecraft:wooden_tool_materials", + "S": "#c:rods/wooden" }, "pattern": [ " M ", diff --git a/src/generated/resources/data/energizedpower/recipe/crafting/wrench.json b/src/generated/resources/data/energizedpower/recipe/crafting/wrench.json index 355ee6d75..6227e3533 100644 --- a/src/generated/resources/data/energizedpower/recipe/crafting/wrench.json +++ b/src/generated/resources/data/energizedpower/recipe/crafting/wrench.json @@ -2,12 +2,8 @@ "type": "minecraft:crafting_shaped", "category": "misc", "key": { - "I": { - "tag": "c:ingots/iron" - }, - "i": { - "tag": "c:nuggets/iron" - } + "I": "#c:ingots/iron", + "i": "#c:nuggets/iron" }, "pattern": [ " I ", diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/andesite_from_crushing_polished_andesite.json b/src/generated/resources/data/energizedpower/recipe/crusher/andesite_from_crushing_polished_andesite.json index e4899d903..188e6e3fb 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/andesite_from_crushing_polished_andesite.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/andesite_from_crushing_polished_andesite.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "item": "minecraft:polished_andesite" - }, - "output": { - "item": "minecraft:andesite" + "ingredient": "minecraft:polished_andesite", + "result": { + "count": 1, + "id": "minecraft:andesite" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/basalt_from_crushing_basalt_variants.json b/src/generated/resources/data/energizedpower/recipe/crusher/basalt_from_crushing_basalt_variants.json index e4cc50a9c..92a0cfd80 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/basalt_from_crushing_basalt_variants.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/basalt_from_crushing_basalt_variants.json @@ -1,14 +1,11 @@ { "type": "energizedpower:crusher", "ingredient": [ - { - "item": "minecraft:smooth_basalt" - }, - { - "item": "minecraft:polished_basalt" - } + "minecraft:smooth_basalt", + "minecraft:polished_basalt" ], - "output": { - "item": "minecraft:basalt" + "result": { + "count": 1, + "id": "minecraft:basalt" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/blackstone_from_crushing_blackstone_variants.json b/src/generated/resources/data/energizedpower/recipe/crusher/blackstone_from_crushing_blackstone_variants.json index 27a3e70b6..cec2dacb7 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/blackstone_from_crushing_blackstone_variants.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/blackstone_from_crushing_blackstone_variants.json @@ -1,23 +1,14 @@ { "type": "energizedpower:crusher", "ingredient": [ - { - "item": "minecraft:polished_blackstone" - }, - { - "item": "minecraft:polished_blackstone_bricks" - }, - { - "item": "minecraft:chiseled_polished_blackstone" - }, - { - "item": "minecraft:cracked_polished_blackstone_bricks" - }, - { - "item": "minecraft:gilded_blackstone" - } + "minecraft:polished_blackstone", + "minecraft:polished_blackstone_bricks", + "minecraft:chiseled_polished_blackstone", + "minecraft:cracked_polished_blackstone_bricks", + "minecraft:gilded_blackstone" ], - "output": { - "item": "minecraft:blackstone" + "result": { + "count": 1, + "id": "minecraft:blackstone" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate.json b/src/generated/resources/data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate.json index bf228dd1b..2377ccbb7 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "item": "minecraft:deepslate" - }, - "output": { - "item": "minecraft:cobbled_deepslate" + "ingredient": "minecraft:deepslate", + "result": { + "count": 1, + "id": "minecraft:cobbled_deepslate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate_variants.json b/src/generated/resources/data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate_variants.json index 31a096100..71a9d885e 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate_variants.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate_variants.json @@ -1,26 +1,15 @@ { "type": "energizedpower:crusher", "ingredient": [ - { - "item": "minecraft:deepslate_bricks" - }, - { - "item": "minecraft:chiseled_deepslate" - }, - { - "item": "minecraft:cracked_deepslate_bricks" - }, - { - "item": "minecraft:deepslate_tiles" - }, - { - "item": "minecraft:cracked_deepslate_tiles" - }, - { - "item": "minecraft:polished_deepslate" - } + "minecraft:deepslate_bricks", + "minecraft:chiseled_deepslate", + "minecraft:cracked_deepslate_bricks", + "minecraft:deepslate_tiles", + "minecraft:cracked_deepslate_tiles", + "minecraft:polished_deepslate" ], - "output": { - "item": "minecraft:cobbled_deepslate" + "result": { + "count": 1, + "id": "minecraft:cobbled_deepslate" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone.json b/src/generated/resources/data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone.json index f4d84c9b8..2315a35a3 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "item": "minecraft:stone" - }, - "output": { - "item": "minecraft:cobblestone" + "ingredient": "minecraft:stone", + "result": { + "count": 1, + "id": "minecraft:cobblestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone_variants.json b/src/generated/resources/data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone_variants.json index f64452302..abe8e749d 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone_variants.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone_variants.json @@ -1,20 +1,13 @@ { "type": "energizedpower:crusher", "ingredient": [ - { - "item": "minecraft:stone_bricks" - }, - { - "item": "minecraft:chiseled_stone_bricks" - }, - { - "item": "minecraft:cracked_stone_bricks" - }, - { - "item": "minecraft:smooth_stone" - } + "minecraft:stone_bricks", + "minecraft:chiseled_stone_bricks", + "minecraft:cracked_stone_bricks", + "minecraft:smooth_stone" ], - "output": { - "item": "minecraft:cobblestone" + "result": { + "count": 1, + "id": "minecraft:cobblestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/diorite_from_crushing_polished_diorite.json b/src/generated/resources/data/energizedpower/recipe/crusher/diorite_from_crushing_polished_diorite.json index 1947b0fb3..213d40ea2 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/diorite_from_crushing_polished_diorite.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/diorite_from_crushing_polished_diorite.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "item": "minecraft:polished_diorite" - }, - "output": { - "item": "minecraft:diorite" + "ingredient": "minecraft:polished_diorite", + "result": { + "count": 1, + "id": "minecraft:diorite" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/granite_from_crushing_polished_granite.json b/src/generated/resources/data/energizedpower/recipe/crusher/granite_from_crushing_polished_granite.json index 2b49cd5d9..d6c0b58fe 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/granite_from_crushing_polished_granite.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/granite_from_crushing_polished_granite.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "item": "minecraft:polished_granite" - }, - "output": { - "item": "minecraft:granite" + "ingredient": "minecraft:polished_granite", + "result": { + "count": 1, + "id": "minecraft:granite" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/gravel_from_crushing_cobblestone.json b/src/generated/resources/data/energizedpower/recipe/crusher/gravel_from_crushing_cobblestone.json index db501fc06..c50c7f91c 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/gravel_from_crushing_cobblestone.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/gravel_from_crushing_cobblestone.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "tag": "c:cobblestones/normal" - }, - "output": { - "item": "minecraft:gravel" + "ingredient": "#c:cobblestones/normal", + "result": { + "count": 1, + "id": "minecraft:gravel" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/mossy_cobblestone_from_crushing_mossy_stone_bricks.json b/src/generated/resources/data/energizedpower/recipe/crusher/mossy_cobblestone_from_crushing_mossy_stone_bricks.json index 6abf8e360..30cec841b 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/mossy_cobblestone_from_crushing_mossy_stone_bricks.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/mossy_cobblestone_from_crushing_mossy_stone_bricks.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "item": "minecraft:mossy_stone_bricks" - }, - "output": { - "item": "minecraft:mossy_cobblestone" + "ingredient": "minecraft:mossy_stone_bricks", + "result": { + "count": 1, + "id": "minecraft:mossy_cobblestone" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone.json b/src/generated/resources/data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone.json index f47b82192..f18aed646 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "item": "minecraft:red_sandstone" - }, - "output": { - "item": "minecraft:red_sand" + "ingredient": "minecraft:red_sandstone", + "result": { + "count": 1, + "id": "minecraft:red_sand" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone_variants.json b/src/generated/resources/data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone_variants.json index d6d4caefa..db40931c3 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone_variants.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone_variants.json @@ -1,17 +1,12 @@ { "type": "energizedpower:crusher", "ingredient": [ - { - "item": "minecraft:smooth_red_sandstone" - }, - { - "item": "minecraft:cut_red_sandstone" - }, - { - "item": "minecraft:chiseled_red_sandstone" - } + "minecraft:smooth_red_sandstone", + "minecraft:cut_red_sandstone", + "minecraft:chiseled_red_sandstone" ], - "output": { - "item": "minecraft:red_sand" + "result": { + "count": 1, + "id": "minecraft:red_sand" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_gravel.json b/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_gravel.json index 8d82005b2..305453e93 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_gravel.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_gravel.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "tag": "c:gravels" - }, - "output": { - "item": "minecraft:sand" + "ingredient": "#c:gravels", + "result": { + "count": 1, + "id": "minecraft:sand" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_sandstone.json b/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_sandstone.json index d05b1ea39..fd7717ec1 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_sandstone.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_sandstone.json @@ -1,9 +1,8 @@ { "type": "energizedpower:crusher", - "ingredient": { - "item": "minecraft:sandstone" - }, - "output": { - "item": "minecraft:sand" + "ingredient": "minecraft:sandstone", + "result": { + "count": 1, + "id": "minecraft:sand" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_sandstone_variants.json b/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_sandstone_variants.json index 3c4d6ea74..2da754837 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_sandstone_variants.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/sand_from_crushing_sandstone_variants.json @@ -1,17 +1,12 @@ { "type": "energizedpower:crusher", "ingredient": [ - { - "item": "minecraft:smooth_sandstone" - }, - { - "item": "minecraft:cut_sandstone" - }, - { - "item": "minecraft:chiseled_sandstone" - } + "minecraft:smooth_sandstone", + "minecraft:cut_sandstone", + "minecraft:chiseled_sandstone" ], - "output": { - "item": "minecraft:sand" + "result": { + "count": 1, + "id": "minecraft:sand" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crusher/tuff_from_crushing_tuff_variants.json b/src/generated/resources/data/energizedpower/recipe/crusher/tuff_from_crushing_tuff_variants.json index 532d8d86f..7ce661841 100644 --- a/src/generated/resources/data/energizedpower/recipe/crusher/tuff_from_crushing_tuff_variants.json +++ b/src/generated/resources/data/energizedpower/recipe/crusher/tuff_from_crushing_tuff_variants.json @@ -1,20 +1,13 @@ { "type": "energizedpower:crusher", "ingredient": [ - { - "item": "minecraft:tuff_bricks" - }, - { - "item": "minecraft:chiseled_tuff_bricks" - }, - { - "item": "minecraft:chiseled_tuff" - }, - { - "item": "minecraft:polished_tuff" - } + "minecraft:tuff_bricks", + "minecraft:chiseled_tuff_bricks", + "minecraft:chiseled_tuff", + "minecraft:polished_tuff" ], - "output": { - "item": "minecraft:tuff" + "result": { + "count": 1, + "id": "minecraft:tuff" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crystal_growing/amethyst_shard.json b/src/generated/resources/data/energizedpower/recipe/crystal_growing/amethyst_shard.json index 1eb1ef22f..9fc9c6552 100644 --- a/src/generated/resources/data/energizedpower/recipe/crystal_growing/amethyst_shard.json +++ b/src/generated/resources/data/energizedpower/recipe/crystal_growing/amethyst_shard.json @@ -1,12 +1,9 @@ { "type": "energizedpower:crystal_growth_chamber", "ingredient": { - "tag": "c:gems/amethyst" + "ingredient": "#c:gems/amethyst" }, - "output": { - "output": { - "item": "minecraft:amethyst_shard" - }, + "result": { "percentages": [ 1.0, 1.0, @@ -14,7 +11,11 @@ 0.5, 0.25, 0.125 - ] + ], + "result": { + "count": 1, + "id": "minecraft:amethyst_shard" + } }, "ticks": 16000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/crystal_growing/budding_amethyst.json b/src/generated/resources/data/energizedpower/recipe/crystal_growing/budding_amethyst.json index d3297e4f7..8b45ea43c 100644 --- a/src/generated/resources/data/energizedpower/recipe/crystal_growing/budding_amethyst.json +++ b/src/generated/resources/data/energizedpower/recipe/crystal_growing/budding_amethyst.json @@ -1,16 +1,17 @@ { "type": "energizedpower:crystal_growth_chamber", "ingredient": { - "item": "minecraft:amethyst_block" + "count": 4, + "ingredient": "minecraft:amethyst_block" }, - "inputCount": 4, - "output": { - "output": { - "item": "minecraft:budding_amethyst" - }, + "result": { "percentages": [ 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:budding_amethyst" + } }, "ticks": 32000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/energizer/energized_copper_ingot.json b/src/generated/resources/data/energizedpower/recipe/energizer/energized_copper_ingot.json index ed9223407..beaefb8c3 100644 --- a/src/generated/resources/data/energizedpower/recipe/energizer/energized_copper_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/energizer/energized_copper_ingot.json @@ -1,10 +1,9 @@ { "type": "energizedpower:energizer", "energy": 32768, - "ingredient": { - "tag": "c:ingots/copper" - }, - "output": { - "item": "energizedpower:energized_copper_ingot" + "ingredient": "#c:ingots/copper", + "result": { + "count": 1, + "id": "energizedpower:energized_copper_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/energizer/energized_crystal_matrix.json b/src/generated/resources/data/energizedpower/recipe/energizer/energized_crystal_matrix.json index 504492f1f..87242f8e6 100644 --- a/src/generated/resources/data/energizedpower/recipe/energizer/energized_crystal_matrix.json +++ b/src/generated/resources/data/energizedpower/recipe/energizer/energized_crystal_matrix.json @@ -1,10 +1,9 @@ { "type": "energizedpower:energizer", "energy": 524288, - "ingredient": { - "item": "energizedpower:crystal_matrix" - }, - "output": { - "item": "energizedpower:energized_crystal_matrix" + "ingredient": "energizedpower:crystal_matrix", + "result": { + "count": 1, + "id": "energizedpower:energized_crystal_matrix" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/energizer/energized_gold_ingot.json b/src/generated/resources/data/energizedpower/recipe/energizer/energized_gold_ingot.json index 46d33ed1f..dd211bf19 100644 --- a/src/generated/resources/data/energizedpower/recipe/energizer/energized_gold_ingot.json +++ b/src/generated/resources/data/energizedpower/recipe/energizer/energized_gold_ingot.json @@ -1,10 +1,9 @@ { "type": "energizedpower:energizer", "energy": 131072, - "ingredient": { - "tag": "c:ingots/gold" - }, - "output": { - "item": "energizedpower:energized_gold_ingot" + "ingredient": "#c:ingots/gold", + "result": { + "count": 1, + "id": "energizedpower:energized_gold_ingot" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/filtration_plant/copper_ore_filtration.json b/src/generated/resources/data/energizedpower/recipe/filtration_plant/copper_ore_filtration.json index f03283c64..b0e848496 100644 --- a/src/generated/resources/data/energizedpower/recipe/filtration_plant/copper_ore_filtration.json +++ b/src/generated/resources/data/energizedpower/recipe/filtration_plant/copper_ore_filtration.json @@ -1,20 +1,22 @@ { "type": "energizedpower:filtration_plant", "icon": "minecraft:raw_copper", - "output": { - "output": { - "item": "energizedpower:stone_pebble" - }, + "result": { "percentages": [ 0.33 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:stone_pebble" + } }, - "secondaryOutput": { - "output": { - "item": "minecraft:raw_copper" - }, + "secondaryResult": { "percentages": [ 0.05 - ] + ], + "result": { + "count": 1, + "id": "minecraft:raw_copper" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/filtration_plant/gold_ore_filtration.json b/src/generated/resources/data/energizedpower/recipe/filtration_plant/gold_ore_filtration.json index 3dc7e751b..65c326a19 100644 --- a/src/generated/resources/data/energizedpower/recipe/filtration_plant/gold_ore_filtration.json +++ b/src/generated/resources/data/energizedpower/recipe/filtration_plant/gold_ore_filtration.json @@ -1,20 +1,22 @@ { "type": "energizedpower:filtration_plant", "icon": "minecraft:raw_gold", - "output": { - "output": { - "item": "energizedpower:stone_pebble" - }, + "result": { "percentages": [ 0.33 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:stone_pebble" + } }, - "secondaryOutput": { - "output": { - "item": "minecraft:raw_gold" - }, + "secondaryResult": { "percentages": [ 0.005 - ] + ], + "result": { + "count": 1, + "id": "minecraft:raw_gold" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/filtration_plant/iron_ore_filtration.json b/src/generated/resources/data/energizedpower/recipe/filtration_plant/iron_ore_filtration.json index 351497744..1dac6f786 100644 --- a/src/generated/resources/data/energizedpower/recipe/filtration_plant/iron_ore_filtration.json +++ b/src/generated/resources/data/energizedpower/recipe/filtration_plant/iron_ore_filtration.json @@ -1,20 +1,22 @@ { "type": "energizedpower:filtration_plant", "icon": "minecraft:raw_iron", - "output": { - "output": { - "item": "energizedpower:stone_pebble" - }, + "result": { "percentages": [ 0.33 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:stone_pebble" + } }, - "secondaryOutput": { - "output": { - "item": "minecraft:raw_iron" - }, + "secondaryResult": { "percentages": [ 0.05 - ] + ], + "result": { + "count": 1, + "id": "minecraft:raw_iron" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/filtration_plant/tin_ore_filtration.json b/src/generated/resources/data/energizedpower/recipe/filtration_plant/tin_ore_filtration.json index c45489ef2..baa03cb4c 100644 --- a/src/generated/resources/data/energizedpower/recipe/filtration_plant/tin_ore_filtration.json +++ b/src/generated/resources/data/energizedpower/recipe/filtration_plant/tin_ore_filtration.json @@ -1,20 +1,22 @@ { "type": "energizedpower:filtration_plant", "icon": "energizedpower:raw_tin", - "output": { - "output": { - "item": "energizedpower:stone_pebble" - }, + "result": { "percentages": [ 0.33 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:stone_pebble" + } }, - "secondaryOutput": { - "output": { - "item": "energizedpower:raw_tin" - }, + "secondaryResult": { "percentages": [ 0.05 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:raw_tin" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/black_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/black_concrete.json index 120a62f60..9bb04d77f 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/black_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/black_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:black_concrete_powder" - }, + "ingredient": "minecraft:black_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:black_concrete" + "result": { + "count": 1, + "id": "minecraft:black_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/blue_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/blue_concrete.json index e9cf68bf3..6863d17ba 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/blue_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/blue_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:blue_concrete_powder" - }, + "ingredient": "minecraft:blue_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:blue_concrete" + "result": { + "count": 1, + "id": "minecraft:blue_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/brown_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/brown_concrete.json index 00df2a853..e516be34b 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/brown_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/brown_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:brown_concrete_powder" - }, + "ingredient": "minecraft:brown_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:brown_concrete" + "result": { + "count": 1, + "id": "minecraft:brown_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/cyan_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/cyan_concrete.json index 15b2017b9..179e4aef4 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/cyan_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/cyan_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:cyan_concrete_powder" - }, + "ingredient": "minecraft:cyan_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:cyan_concrete" + "result": { + "count": 1, + "id": "minecraft:cyan_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/gray_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/gray_concrete.json index 18c7d2308..21b3e1df0 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/gray_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/gray_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:gray_concrete_powder" - }, + "ingredient": "minecraft:gray_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:gray_concrete" + "result": { + "count": 1, + "id": "minecraft:gray_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/green_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/green_concrete.json index daaf3c8bb..01151b25b 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/green_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/green_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:green_concrete_powder" - }, + "ingredient": "minecraft:green_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:green_concrete" + "result": { + "count": 1, + "id": "minecraft:green_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/light_blue_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/light_blue_concrete.json index 6232d7e9f..8d3c89bae 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/light_blue_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/light_blue_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:light_blue_concrete_powder" - }, + "ingredient": "minecraft:light_blue_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:light_blue_concrete" + "result": { + "count": 1, + "id": "minecraft:light_blue_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/light_gray_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/light_gray_concrete.json index cb9b31ad7..8a5c760ab 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/light_gray_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/light_gray_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:light_gray_concrete_powder" - }, + "ingredient": "minecraft:light_gray_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:light_gray_concrete" + "result": { + "count": 1, + "id": "minecraft:light_gray_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/lime_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/lime_concrete.json index f008f632b..d4d08ca15 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/lime_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/lime_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:lime_concrete_powder" - }, + "ingredient": "minecraft:lime_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:lime_concrete" + "result": { + "count": 1, + "id": "minecraft:lime_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/magenta_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/magenta_concrete.json index 073a86fed..3c19483db 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/magenta_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/magenta_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:magenta_concrete_powder" - }, + "ingredient": "minecraft:magenta_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:magenta_concrete" + "result": { + "count": 1, + "id": "minecraft:magenta_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/mud.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/mud.json index 5a82861f5..5b4d2fcd3 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/mud.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/mud.json @@ -4,11 +4,10 @@ "amount": 250, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:dirt" - }, + "ingredient": "minecraft:dirt", "mode": "FILLING", - "output": { - "item": "minecraft:mud" + "result": { + "count": 1, + "id": "minecraft:mud" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/orange_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/orange_concrete.json index 5b51279dc..bc8eb7b63 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/orange_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/orange_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:orange_concrete_powder" - }, + "ingredient": "minecraft:orange_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:orange_concrete" + "result": { + "count": 1, + "id": "minecraft:orange_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/pink_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/pink_concrete.json index 5d15bd81d..55dd4648c 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/pink_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/pink_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:pink_concrete_powder" - }, + "ingredient": "minecraft:pink_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:pink_concrete" + "result": { + "count": 1, + "id": "minecraft:pink_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/purple_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/purple_concrete.json index 417cb3e34..98a472d0f 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/purple_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/purple_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:purple_concrete_powder" - }, + "ingredient": "minecraft:purple_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:purple_concrete" + "result": { + "count": 1, + "id": "minecraft:purple_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/red_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/red_concrete.json index c30922f68..bd7d40443 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/red_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/red_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:red_concrete_powder" - }, + "ingredient": "minecraft:red_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:red_concrete" + "result": { + "count": 1, + "id": "minecraft:red_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/sponge.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/sponge.json index e76b83e77..c6dc0972b 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/sponge.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/sponge.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:wet_sponge" - }, + "ingredient": "minecraft:wet_sponge", "mode": "EMPTYING", - "output": { - "item": "minecraft:sponge" + "result": { + "count": 1, + "id": "minecraft:sponge" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/wet_sponge.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/wet_sponge.json index 73e9bfee1..0efb6275a 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/wet_sponge.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/wet_sponge.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:sponge" - }, + "ingredient": "minecraft:sponge", "mode": "FILLING", - "output": { - "item": "minecraft:wet_sponge" + "result": { + "count": 1, + "id": "minecraft:wet_sponge" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/white_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/white_concrete.json index 81a6ba07f..c63d4b324 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/white_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/white_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:white_concrete_powder" - }, + "ingredient": "minecraft:white_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:white_concrete" + "result": { + "count": 1, + "id": "minecraft:white_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/yellow_concrete.json b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/yellow_concrete.json index 64c127860..618173892 100644 --- a/src/generated/resources/data/energizedpower/recipe/fluid_transposer/yellow_concrete.json +++ b/src/generated/resources/data/energizedpower/recipe/fluid_transposer/yellow_concrete.json @@ -4,11 +4,10 @@ "amount": 1000, "id": "minecraft:water" }, - "ingredient": { - "item": "minecraft:yellow_concrete_powder" - }, + "ingredient": "minecraft:yellow_concrete_powder", "mode": "FILLING", - "output": { - "item": "minecraft:yellow_concrete" + "result": { + "count": 1, + "id": "minecraft:yellow_concrete" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/growing/alliums_from_growing_allium.json b/src/generated/resources/data/energizedpower/recipe/growing/alliums_from_growing_allium.json index 3fe3c1b2b..2bf1d4462 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/alliums_from_growing_allium.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/alliums_from_growing_allium.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:allium" - }, - "outputs": [ + "ingredient": "minecraft:allium", + "results": [ { - "output": { - "item": "minecraft:allium" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:allium" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/azure_bluets_from_growing_azure_bluet.json b/src/generated/resources/data/energizedpower/recipe/growing/azure_bluets_from_growing_azure_bluet.json index 09e358ca6..45afd2658 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/azure_bluets_from_growing_azure_bluet.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/azure_bluets_from_growing_azure_bluet.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:azure_bluet" - }, - "outputs": [ + "ingredient": "minecraft:azure_bluet", + "results": [ { - "output": { - "item": "minecraft:azure_bluet" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:azure_bluet" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/bamboo_from_growing_bamboo.json b/src/generated/resources/data/energizedpower/recipe/growing/bamboo_from_growing_bamboo.json index a5f0817bd..b18c12704 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/bamboo_from_growing_bamboo.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/bamboo_from_growing_bamboo.json @@ -1,19 +1,18 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:bamboo" - }, - "outputs": [ + "ingredient": "minecraft:bamboo", + "results": [ { - "output": { - "item": "minecraft:bamboo" - }, "percentages": [ 1.0, 1.0, 0.67, 0.17 - ] + ], + "result": { + "count": 1, + "id": "minecraft:bamboo" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/beetroots_from_growing_beetroot_seeds.json b/src/generated/resources/data/energizedpower/recipe/growing/beetroots_from_growing_beetroot_seeds.json index 7b116f928..9216c7957 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/beetroots_from_growing_beetroot_seeds.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/beetroots_from_growing_beetroot_seeds.json @@ -1,29 +1,29 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:beetroot_seeds" - }, - "outputs": [ + "ingredient": "minecraft:beetroot_seeds", + "results": [ { - "output": { - "item": "minecraft:beetroot_seeds" - }, "percentages": [ 1.0, 0.33, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:beetroot_seeds" + } }, { - "output": { - "item": "minecraft:beetroot" - }, "percentages": [ 1.0, 0.75, 0.25, 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:beetroot" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/blue_orchids_from_growing_blue_orchid.json b/src/generated/resources/data/energizedpower/recipe/growing/blue_orchids_from_growing_blue_orchid.json index 58e0ebe38..f83d3253b 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/blue_orchids_from_growing_blue_orchid.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/blue_orchids_from_growing_blue_orchid.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:blue_orchid" - }, - "outputs": [ + "ingredient": "minecraft:blue_orchid", + "results": [ { - "output": { - "item": "minecraft:blue_orchid" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:blue_orchid" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/brown_mushrooms_from_growing_brown_mushroom.json b/src/generated/resources/data/energizedpower/recipe/growing/brown_mushrooms_from_growing_brown_mushroom.json index beeb13d60..372ce5120 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/brown_mushrooms_from_growing_brown_mushroom.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/brown_mushrooms_from_growing_brown_mushroom.json @@ -1,19 +1,18 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:brown_mushroom" - }, - "outputs": [ + "ingredient": "minecraft:brown_mushroom", + "results": [ { - "output": { - "item": "minecraft:brown_mushroom" - }, "percentages": [ 1.0, 1.0, 0.5, 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:brown_mushroom" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/carrots_from_growing_carrot.json b/src/generated/resources/data/energizedpower/recipe/growing/carrots_from_growing_carrot.json index c1f87197e..8cdfed7f6 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/carrots_from_growing_carrot.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/carrots_from_growing_carrot.json @@ -1,19 +1,18 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:carrot" - }, - "outputs": [ + "ingredient": "minecraft:carrot", + "results": [ { - "output": { - "item": "minecraft:carrot" - }, "percentages": [ 1.0, 0.75, 0.25, 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:carrot" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/cornflowers_from_growing_cornflower.json b/src/generated/resources/data/energizedpower/recipe/growing/cornflowers_from_growing_cornflower.json index 4324be32e..b98ef23ab 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/cornflowers_from_growing_cornflower.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/cornflowers_from_growing_cornflower.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:cornflower" - }, - "outputs": [ + "ingredient": "minecraft:cornflower", + "results": [ { - "output": { - "item": "minecraft:cornflower" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:cornflower" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/dandelions_from_growing_dandelion.json b/src/generated/resources/data/energizedpower/recipe/growing/dandelions_from_growing_dandelion.json index 78e542867..aea55de78 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/dandelions_from_growing_dandelion.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/dandelions_from_growing_dandelion.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:dandelion" - }, - "outputs": [ + "ingredient": "minecraft:dandelion", + "results": [ { - "output": { - "item": "minecraft:dandelion" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:dandelion" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/advanced_fertilizer.json b/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/advanced_fertilizer.json index 5373fa1c6..b82611099 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/advanced_fertilizer.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/advanced_fertilizer.json @@ -1,8 +1,6 @@ { "type": "energizedpower:plant_growth_chamber_fertilizer", "energyConsumptionMultiplier": 6.5, - "ingredient": { - "item": "energizedpower:advanced_fertilizer" - }, + "ingredient": "energizedpower:advanced_fertilizer", "speedMultiplier": 5.0 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/basic_fertilizer.json b/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/basic_fertilizer.json index 8250f869b..b59c4abc2 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/basic_fertilizer.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/basic_fertilizer.json @@ -1,8 +1,6 @@ { "type": "energizedpower:plant_growth_chamber_fertilizer", "energyConsumptionMultiplier": 3.5, - "ingredient": { - "item": "energizedpower:basic_fertilizer" - }, + "ingredient": "energizedpower:basic_fertilizer", "speedMultiplier": 2.5 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/bone_meal.json b/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/bone_meal.json index eda99abc6..7a8becc6e 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/bone_meal.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/bone_meal.json @@ -1,8 +1,6 @@ { "type": "energizedpower:plant_growth_chamber_fertilizer", "energyConsumptionMultiplier": 3.0, - "ingredient": { - "item": "minecraft:bone_meal" - }, + "ingredient": "minecraft:bone_meal", "speedMultiplier": 1.5 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/good_fertilizer.json b/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/good_fertilizer.json index 25c0da457..d2aeb2fd6 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/good_fertilizer.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/fertilizer/good_fertilizer.json @@ -1,8 +1,6 @@ { "type": "energizedpower:plant_growth_chamber_fertilizer", "energyConsumptionMultiplier": 5.0, - "ingredient": { - "item": "energizedpower:good_fertilizer" - }, + "ingredient": "energizedpower:good_fertilizer", "speedMultiplier": 3.5 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/growing/glow_berries_from_growing_glow_berries.json b/src/generated/resources/data/energizedpower/recipe/growing/glow_berries_from_growing_glow_berries.json index f81878ed3..408cf71a1 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/glow_berries_from_growing_glow_berries.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/glow_berries_from_growing_glow_berries.json @@ -1,13 +1,8 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:glow_berries" - }, - "outputs": [ + "ingredient": "minecraft:glow_berries", + "results": [ { - "output": { - "item": "minecraft:glow_berries" - }, "percentages": [ 1.0, 1.0, @@ -15,7 +10,11 @@ 0.33, 0.17, 0.17 - ] + ], + "result": { + "count": 1, + "id": "minecraft:glow_berries" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/lilacs_from_growing_lilac.json b/src/generated/resources/data/energizedpower/recipe/growing/lilacs_from_growing_lilac.json index c8a74c448..645da9517 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/lilacs_from_growing_lilac.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/lilacs_from_growing_lilac.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:lilac" - }, - "outputs": [ + "ingredient": "minecraft:lilac", + "results": [ { - "output": { - "item": "minecraft:lilac" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:lilac" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/lily_of_the_valley_from_growing_lily_of_the_valley.json b/src/generated/resources/data/energizedpower/recipe/growing/lily_of_the_valley_from_growing_lily_of_the_valley.json index 3bcceb56e..59a82bee9 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/lily_of_the_valley_from_growing_lily_of_the_valley.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/lily_of_the_valley_from_growing_lily_of_the_valley.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:lily_of_the_valley" - }, - "outputs": [ + "ingredient": "minecraft:lily_of_the_valley", + "results": [ { - "output": { - "item": "minecraft:lily_of_the_valley" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:lily_of_the_valley" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/melon_slices_from_growing_melon_seeds.json b/src/generated/resources/data/energizedpower/recipe/growing/melon_slices_from_growing_melon_seeds.json index a9c4f6f3d..26b025239 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/melon_slices_from_growing_melon_seeds.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/melon_slices_from_growing_melon_seeds.json @@ -1,20 +1,19 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:melon_seeds" - }, - "outputs": [ + "ingredient": "minecraft:melon_seeds", + "results": [ { - "output": { - "item": "minecraft:melon_slice" - }, "percentages": [ 1.0, 1.0, 0.75, 0.25, 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:melon_slice" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/orange_tulips_from_growing_orange_tulip.json b/src/generated/resources/data/energizedpower/recipe/growing/orange_tulips_from_growing_orange_tulip.json index 77a527286..2aedc6bdb 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/orange_tulips_from_growing_orange_tulip.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/orange_tulips_from_growing_orange_tulip.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:orange_tulip" - }, - "outputs": [ + "ingredient": "minecraft:orange_tulip", + "results": [ { - "output": { - "item": "minecraft:orange_tulip" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:orange_tulip" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/oxeye_daisies_from_growing_oxeye_daisy.json b/src/generated/resources/data/energizedpower/recipe/growing/oxeye_daisies_from_growing_oxeye_daisy.json index 90dee7d05..f17901724 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/oxeye_daisies_from_growing_oxeye_daisy.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/oxeye_daisies_from_growing_oxeye_daisy.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:oxeye_daisy" - }, - "outputs": [ + "ingredient": "minecraft:oxeye_daisy", + "results": [ { - "output": { - "item": "minecraft:oxeye_daisy" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:oxeye_daisy" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/peonies_from_growing_peony.json b/src/generated/resources/data/energizedpower/recipe/growing/peonies_from_growing_peony.json index f6945c52d..a25867b02 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/peonies_from_growing_peony.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/peonies_from_growing_peony.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:peony" - }, - "outputs": [ + "ingredient": "minecraft:peony", + "results": [ { - "output": { - "item": "minecraft:peony" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:peony" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/pink_petals_from_growing_pink_petals.json b/src/generated/resources/data/energizedpower/recipe/growing/pink_petals_from_growing_pink_petals.json index 9c4e1ab23..c49f7d340 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/pink_petals_from_growing_pink_petals.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/pink_petals_from_growing_pink_petals.json @@ -1,13 +1,8 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:pink_petals" - }, - "outputs": [ + "ingredient": "minecraft:pink_petals", + "results": [ { - "output": { - "item": "minecraft:pink_petals" - }, "percentages": [ 1.0, 1.0, @@ -16,7 +11,11 @@ 0.33, 0.33, 0.15 - ] + ], + "result": { + "count": 1, + "id": "minecraft:pink_petals" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/pink_tulips_from_growing_pink_tulip.json b/src/generated/resources/data/energizedpower/recipe/growing/pink_tulips_from_growing_pink_tulip.json index 597103322..0bc9f24ee 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/pink_tulips_from_growing_pink_tulip.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/pink_tulips_from_growing_pink_tulip.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:pink_tulip" - }, - "outputs": [ + "ingredient": "minecraft:pink_tulip", + "results": [ { - "output": { - "item": "minecraft:pink_tulip" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:pink_tulip" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/pitcher_plants_from_growing_pitcher_pod.json b/src/generated/resources/data/energizedpower/recipe/growing/pitcher_plants_from_growing_pitcher_pod.json index 9683f610e..85d83f641 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/pitcher_plants_from_growing_pitcher_pod.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/pitcher_plants_from_growing_pitcher_pod.json @@ -1,27 +1,27 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:pitcher_pod" - }, - "outputs": [ + "ingredient": "minecraft:pitcher_pod", + "results": [ { - "output": { - "item": "minecraft:pitcher_pod" - }, "percentages": [ 1.0, 0.33, 0.15 - ] + ], + "result": { + "count": 1, + "id": "minecraft:pitcher_pod" + } }, { - "output": { - "item": "minecraft:pitcher_plant" - }, "percentages": [ 1.0, 0.15 - ] + ], + "result": { + "count": 1, + "id": "minecraft:pitcher_plant" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/poppies_from_growing_poppy.json b/src/generated/resources/data/energizedpower/recipe/growing/poppies_from_growing_poppy.json index 2cb045a41..5a6e5cfc5 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/poppies_from_growing_poppy.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/poppies_from_growing_poppy.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:poppy" - }, - "outputs": [ + "ingredient": "minecraft:poppy", + "results": [ { - "output": { - "item": "minecraft:poppy" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:poppy" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/potatoes_from_growing_potato.json b/src/generated/resources/data/energizedpower/recipe/growing/potatoes_from_growing_potato.json index 3612588f0..5b9a11447 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/potatoes_from_growing_potato.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/potatoes_from_growing_potato.json @@ -1,27 +1,27 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:potato" - }, - "outputs": [ + "ingredient": "minecraft:potato", + "results": [ { - "output": { - "item": "minecraft:potato" - }, "percentages": [ 1.0, 0.75, 0.25, 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:potato" + } }, { - "output": { - "item": "minecraft:poisonous_potato" - }, "percentages": [ 0.125 - ] + ], + "result": { + "count": 1, + "id": "minecraft:poisonous_potato" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/pumpkin_from_growing_pumpkin_seeds.json b/src/generated/resources/data/energizedpower/recipe/growing/pumpkin_from_growing_pumpkin_seeds.json index cfa2f4e88..40c283471 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/pumpkin_from_growing_pumpkin_seeds.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/pumpkin_from_growing_pumpkin_seeds.json @@ -1,16 +1,15 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:pumpkin_seeds" - }, - "outputs": [ + "ingredient": "minecraft:pumpkin_seeds", + "results": [ { - "output": { - "item": "minecraft:pumpkin" - }, "percentages": [ 1.0 - ] + ], + "result": { + "count": 1, + "id": "minecraft:pumpkin" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/red_mushrooms_from_growing_red_mushroom.json b/src/generated/resources/data/energizedpower/recipe/growing/red_mushrooms_from_growing_red_mushroom.json index 84965e5be..7840763ef 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/red_mushrooms_from_growing_red_mushroom.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/red_mushrooms_from_growing_red_mushroom.json @@ -1,19 +1,18 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:red_mushroom" - }, - "outputs": [ + "ingredient": "minecraft:red_mushroom", + "results": [ { - "output": { - "item": "minecraft:red_mushroom" - }, "percentages": [ 1.0, 1.0, 0.5, 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:red_mushroom" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/red_tulips_from_growing_red_tulip.json b/src/generated/resources/data/energizedpower/recipe/growing/red_tulips_from_growing_red_tulip.json index 7b40bd8f6..5991c2c2d 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/red_tulips_from_growing_red_tulip.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/red_tulips_from_growing_red_tulip.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:red_tulip" - }, - "outputs": [ + "ingredient": "minecraft:red_tulip", + "results": [ { - "output": { - "item": "minecraft:red_tulip" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:red_tulip" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/rose_bushes_from_growing_rose_bush.json b/src/generated/resources/data/energizedpower/recipe/growing/rose_bushes_from_growing_rose_bush.json index 5265cd93e..fab7de089 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/rose_bushes_from_growing_rose_bush.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/rose_bushes_from_growing_rose_bush.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:rose_bush" - }, - "outputs": [ + "ingredient": "minecraft:rose_bush", + "results": [ { - "output": { - "item": "minecraft:rose_bush" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:rose_bush" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/sugar_canes_from_growing_sugar_cane.json b/src/generated/resources/data/energizedpower/recipe/growing/sugar_canes_from_growing_sugar_cane.json index d068dd757..07ee2ecd9 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/sugar_canes_from_growing_sugar_cane.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/sugar_canes_from_growing_sugar_cane.json @@ -1,13 +1,8 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:sugar_cane" - }, - "outputs": [ + "ingredient": "minecraft:sugar_cane", + "results": [ { - "output": { - "item": "minecraft:sugar_cane" - }, "percentages": [ 1.0, 1.0, @@ -16,7 +11,11 @@ 0.33, 0.17, 0.17 - ] + ], + "result": { + "count": 1, + "id": "minecraft:sugar_cane" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/sunflowers_from_growing_sunflower.json b/src/generated/resources/data/energizedpower/recipe/growing/sunflowers_from_growing_sunflower.json index 962dc3aa1..de68510a5 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/sunflowers_from_growing_sunflower.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/sunflowers_from_growing_sunflower.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:sunflower" - }, - "outputs": [ + "ingredient": "minecraft:sunflower", + "results": [ { - "output": { - "item": "minecraft:sunflower" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:sunflower" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/sweet_berries_from_growing_sweet_berries.json b/src/generated/resources/data/energizedpower/recipe/growing/sweet_berries_from_growing_sweet_berries.json index f6c54fefa..646fec982 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/sweet_berries_from_growing_sweet_berries.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/sweet_berries_from_growing_sweet_berries.json @@ -1,19 +1,18 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:sweet_berries" - }, - "outputs": [ + "ingredient": "minecraft:sweet_berries", + "results": [ { - "output": { - "item": "minecraft:sweet_berries" - }, "percentages": [ 1.0, 1.0, 0.33, 0.17 - ] + ], + "result": { + "count": 1, + "id": "minecraft:sweet_berries" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/torchflowers_from_growing_torchflower_seeds.json b/src/generated/resources/data/energizedpower/recipe/growing/torchflowers_from_growing_torchflower_seeds.json index 699d9145b..5e9fa3847 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/torchflowers_from_growing_torchflower_seeds.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/torchflowers_from_growing_torchflower_seeds.json @@ -1,27 +1,27 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:torchflower_seeds" - }, - "outputs": [ + "ingredient": "minecraft:torchflower_seeds", + "results": [ { - "output": { - "item": "minecraft:torchflower_seeds" - }, "percentages": [ 1.0, 0.33, 0.15 - ] + ], + "result": { + "count": 1, + "id": "minecraft:torchflower_seeds" + } }, { - "output": { - "item": "minecraft:torchflower" - }, "percentages": [ 1.0, 0.15 - ] + ], + "result": { + "count": 1, + "id": "minecraft:torchflower" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/wheat_from_growing_wheat_seeds.json b/src/generated/resources/data/energizedpower/recipe/growing/wheat_from_growing_wheat_seeds.json index 9585ba024..324630552 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/wheat_from_growing_wheat_seeds.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/wheat_from_growing_wheat_seeds.json @@ -1,28 +1,28 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:wheat_seeds" - }, - "outputs": [ + "ingredient": "minecraft:wheat_seeds", + "results": [ { - "output": { - "item": "minecraft:wheat_seeds" - }, "percentages": [ 1.0, 0.33, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:wheat_seeds" + } }, { - "output": { - "item": "minecraft:wheat" - }, "percentages": [ 1.0, 0.75, 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:wheat" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/growing/white_tulips_from_growing_white_tulip.json b/src/generated/resources/data/energizedpower/recipe/growing/white_tulips_from_growing_white_tulip.json index 0a591a9da..b0b18a2d7 100644 --- a/src/generated/resources/data/energizedpower/recipe/growing/white_tulips_from_growing_white_tulip.json +++ b/src/generated/resources/data/energizedpower/recipe/growing/white_tulips_from_growing_white_tulip.json @@ -1,18 +1,17 @@ { "type": "energizedpower:plant_growth_chamber", - "ingredient": { - "item": "minecraft:white_tulip" - }, - "outputs": [ + "ingredient": "minecraft:white_tulip", + "results": [ { - "output": { - "item": "minecraft:white_tulip" - }, "percentages": [ 1.0, 1.0, 0.33 - ] + ], + "result": { + "count": 1, + "id": "minecraft:white_tulip" + } } ], "ticks": 16000 diff --git a/src/generated/resources/data/energizedpower/recipe/heat_generator/energy_production_from_flowing_lava.json b/src/generated/resources/data/energizedpower/recipe/heat_generator/energy_production_from_flowing_lava.json index 95555a127..b1c727e6b 100644 --- a/src/generated/resources/data/energizedpower/recipe/heat_generator/energy_production_from_flowing_lava.json +++ b/src/generated/resources/data/energizedpower/recipe/heat_generator/energy_production_from_flowing_lava.json @@ -1,5 +1,5 @@ { "type": "energizedpower:heat_generator", "energy": 15, - "input": "minecraft:flowing_lava" + "ingredient": "minecraft:flowing_lava" } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/heat_generator/energy_production_from_still_lava.json b/src/generated/resources/data/energizedpower/recipe/heat_generator/energy_production_from_still_lava.json index f368ed1c9..df27c2855 100644 --- a/src/generated/resources/data/energizedpower/recipe/heat_generator/energy_production_from_still_lava.json +++ b/src/generated/resources/data/energizedpower/recipe/heat_generator/energy_production_from_still_lava.json @@ -1,5 +1,5 @@ { "type": "energizedpower:heat_generator", "energy": 25, - "input": "minecraft:lava" + "ingredient": "minecraft:lava" } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/metal_press/copper_wire.json b/src/generated/resources/data/energizedpower/recipe/metal_press/copper_wire.json index b599590b4..ea3882c76 100644 --- a/src/generated/resources/data/energizedpower/recipe/metal_press/copper_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/metal_press/copper_wire.json @@ -1,13 +1,14 @@ { "type": "energizedpower:metal_press", "ingredient": { - "tag": "c:plates/copper" - }, - "output": { - "count": 3, - "item": "energizedpower:copper_wire" + "ingredient": "#c:plates/copper" }, "pressMold": { - "item": "energizedpower:wire_press_mold" + "count": 1, + "id": "energizedpower:wire_press_mold" + }, + "result": { + "count": 3, + "id": "energizedpower:copper_wire" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/metal_press/energized_copper_wire.json b/src/generated/resources/data/energizedpower/recipe/metal_press/energized_copper_wire.json index 917796ab7..2e518df63 100644 --- a/src/generated/resources/data/energizedpower/recipe/metal_press/energized_copper_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/metal_press/energized_copper_wire.json @@ -1,13 +1,14 @@ { "type": "energizedpower:metal_press", "ingredient": { - "tag": "c:plates/energized_copper" - }, - "output": { - "count": 3, - "item": "energizedpower:energized_copper_wire" + "ingredient": "#c:plates/energized_copper" }, "pressMold": { - "item": "energizedpower:wire_press_mold" + "count": 1, + "id": "energizedpower:wire_press_mold" + }, + "result": { + "count": 3, + "id": "energizedpower:energized_copper_wire" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/metal_press/energized_gold_wire.json b/src/generated/resources/data/energizedpower/recipe/metal_press/energized_gold_wire.json index 15f902126..0e95cd45c 100644 --- a/src/generated/resources/data/energizedpower/recipe/metal_press/energized_gold_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/metal_press/energized_gold_wire.json @@ -1,13 +1,14 @@ { "type": "energizedpower:metal_press", "ingredient": { - "tag": "c:plates/energized_gold" - }, - "output": { - "count": 3, - "item": "energizedpower:energized_gold_wire" + "ingredient": "#c:plates/energized_gold" }, "pressMold": { - "item": "energizedpower:wire_press_mold" + "count": 1, + "id": "energizedpower:wire_press_mold" + }, + "result": { + "count": 3, + "id": "energizedpower:energized_gold_wire" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/metal_press/gold_wire.json b/src/generated/resources/data/energizedpower/recipe/metal_press/gold_wire.json index 0324e9e9f..283eabe1e 100644 --- a/src/generated/resources/data/energizedpower/recipe/metal_press/gold_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/metal_press/gold_wire.json @@ -1,13 +1,14 @@ { "type": "energizedpower:metal_press", "ingredient": { - "tag": "c:plates/gold" - }, - "output": { - "count": 3, - "item": "energizedpower:gold_wire" + "ingredient": "#c:plates/gold" }, "pressMold": { - "item": "energizedpower:wire_press_mold" + "count": 1, + "id": "energizedpower:wire_press_mold" + }, + "result": { + "count": 3, + "id": "energizedpower:gold_wire" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/metal_press/iron_gear.json b/src/generated/resources/data/energizedpower/recipe/metal_press/iron_gear.json index 1e516961b..fe850382a 100644 --- a/src/generated/resources/data/energizedpower/recipe/metal_press/iron_gear.json +++ b/src/generated/resources/data/energizedpower/recipe/metal_press/iron_gear.json @@ -1,13 +1,15 @@ { "type": "energizedpower:metal_press", "ingredient": { - "tag": "c:plates/iron" - }, - "inputCount": 2, - "output": { - "item": "energizedpower:iron_gear" + "count": 2, + "ingredient": "#c:plates/iron" }, "pressMold": { - "item": "energizedpower:gear_press_mold" + "count": 1, + "id": "energizedpower:gear_press_mold" + }, + "result": { + "count": 1, + "id": "energizedpower:iron_gear" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/metal_press/iron_rod.json b/src/generated/resources/data/energizedpower/recipe/metal_press/iron_rod.json index a40bf487e..e93b5ae18 100644 --- a/src/generated/resources/data/energizedpower/recipe/metal_press/iron_rod.json +++ b/src/generated/resources/data/energizedpower/recipe/metal_press/iron_rod.json @@ -1,13 +1,14 @@ { "type": "energizedpower:metal_press", "ingredient": { - "tag": "c:plates/iron" - }, - "output": { - "count": 2, - "item": "energizedpower:iron_rod" + "ingredient": "#c:plates/iron" }, "pressMold": { - "item": "energizedpower:rod_press_mold" + "count": 1, + "id": "energizedpower:rod_press_mold" + }, + "result": { + "count": 2, + "id": "energizedpower:iron_rod" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/metal_press/tin_wire.json b/src/generated/resources/data/energizedpower/recipe/metal_press/tin_wire.json index cefbb2a0f..544015711 100644 --- a/src/generated/resources/data/energizedpower/recipe/metal_press/tin_wire.json +++ b/src/generated/resources/data/energizedpower/recipe/metal_press/tin_wire.json @@ -1,13 +1,14 @@ { "type": "energizedpower:metal_press", "ingredient": { - "tag": "c:plates/tin" - }, - "output": { - "count": 3, - "item": "energizedpower:tin_wire" + "ingredient": "#c:plates/tin" }, "pressMold": { - "item": "energizedpower:wire_press_mold" + "count": 1, + "id": "energizedpower:wire_press_mold" + }, + "result": { + "count": 3, + "id": "energizedpower:tin_wire" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_gear_press_mold.json b/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_gear_press_mold.json index 3204b2f10..41724a842 100644 --- a/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_gear_press_mold.json +++ b/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_gear_press_mold.json @@ -1,7 +1,8 @@ { "type": "energizedpower:press_mold_maker", "clayCount": 4, - "output": { - "item": "energizedpower:raw_gear_press_mold" + "result": { + "count": 1, + "id": "energizedpower:raw_gear_press_mold" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_rod_press_mold.json b/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_rod_press_mold.json index 15511d15e..1be2158d2 100644 --- a/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_rod_press_mold.json +++ b/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_rod_press_mold.json @@ -1,7 +1,8 @@ { "type": "energizedpower:press_mold_maker", "clayCount": 9, - "output": { - "item": "energizedpower:raw_rod_press_mold" + "result": { + "count": 1, + "id": "energizedpower:raw_rod_press_mold" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_wire_press_mold.json b/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_wire_press_mold.json index 8f37d4a44..df17b99a7 100644 --- a/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_wire_press_mold.json +++ b/src/generated/resources/data/energizedpower/recipe/press_mold_maker/raw_wire_press_mold.json @@ -1,7 +1,8 @@ { "type": "energizedpower:press_mold_maker", "clayCount": 6, - "output": { - "item": "energizedpower:raw_wire_press_mold" + "result": { + "count": 1, + "id": "energizedpower:raw_wire_press_mold" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/charcoal_dust_from_pulverizer_charcoal.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/charcoal_dust_from_pulverizer_charcoal.json index 25e53f02e..21932f243 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/charcoal_dust_from_pulverizer_charcoal.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/charcoal_dust_from_pulverizer_charcoal.json @@ -1,17 +1,16 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "item": "minecraft:charcoal" - }, - "output": { - "output": { - "item": "energizedpower:charcoal_dust" - }, + "ingredient": "minecraft:charcoal", + "result": { "percentages": [ 1.0 ], "percentagesAdvanced": [ 1.0 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:charcoal_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/coal_from_pulverizer_coal_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/coal_from_pulverizer_coal_ores.json index 0a9885889..3746a7678 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/coal_from_pulverizer_coal_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/coal_from_pulverizer_coal_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/coal" - }, - "output": { - "output": { - "item": "minecraft:coal" - }, + "ingredient": "#c:ores/coal", + "result": { "percentages": [ 1.0, 1.0, @@ -17,6 +12,10 @@ 1.0, 0.5, 0.25 - ] + ], + "result": { + "count": 1, + "id": "minecraft:coal" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ingots.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ingots.json index 0547100a4..df0d7431b 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ingots.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ingots.json @@ -1,17 +1,16 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ingots/copper" - }, - "output": { - "output": { - "item": "energizedpower:copper_dust" - }, + "ingredient": "#c:ingots/copper", + "result": { "percentages": [ 1.0 ], "percentagesAdvanced": [ 1.0 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:copper_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ores.json index 8c852f5e9..1165bebbd 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/copper" - }, - "output": { - "output": { - "item": "energizedpower:copper_dust" - }, + "ingredient": "#c:ores/copper", + "result": { "percentages": [ 1.0, 1.0, @@ -23,17 +18,22 @@ 0.75, 0.5, 0.25 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:copper_dust" + } }, - "secondaryOutput": { - "output": { - "item": "energizedpower:gold_dust" - }, + "secondaryResult": { "percentages": [ 0.1 ], "percentagesAdvanced": [ 0.2 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:gold_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper.json index 68a73780c..d1a8b125d 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:raw_materials/copper" - }, - "output": { - "output": { - "item": "energizedpower:copper_dust" - }, + "ingredient": "#c:raw_materials/copper", + "result": { "percentages": [ 1.0, 0.25 @@ -14,6 +9,10 @@ "percentagesAdvanced": [ 1.0, 0.5 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:copper_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper_blocks.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper_blocks.json index bc0196b3b..15a93a801 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper_blocks.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper_blocks.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:storage_blocks/raw_copper" - }, - "output": { - "output": { - "item": "energizedpower:copper_dust" - }, + "ingredient": "#c:storage_blocks/raw_copper", + "result": { "percentages": [ 1.0, 1.0, @@ -35,6 +30,10 @@ 0.5, 0.25, 0.25 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:copper_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/diamond_from_pulverizer_diamond_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/diamond_from_pulverizer_diamond_ores.json index 95feab1bc..3facd867b 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/diamond_from_pulverizer_diamond_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/diamond_from_pulverizer_diamond_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/diamond" - }, - "output": { - "output": { - "item": "minecraft:diamond" - }, + "ingredient": "#c:ores/diamond", + "result": { "percentages": [ 1.0, 0.67, @@ -17,6 +12,10 @@ 0.67, 0.33, 0.17 - ] + ], + "result": { + "count": 1, + "id": "minecraft:diamond" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/emerald_from_pulverizer_emerald_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/emerald_from_pulverizer_emerald_ores.json index 418553c09..078a28658 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/emerald_from_pulverizer_emerald_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/emerald_from_pulverizer_emerald_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/emerald" - }, - "output": { - "output": { - "item": "minecraft:emerald" - }, + "ingredient": "#c:ores/emerald", + "result": { "percentages": [ 1.0, 0.67, @@ -17,6 +12,10 @@ 0.67, 0.33, 0.17 - ] + ], + "result": { + "count": 1, + "id": "minecraft:emerald" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ingots.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ingots.json index aca5ce7b8..ed5f33683 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ingots.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ingots.json @@ -1,17 +1,16 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ingots/gold" - }, - "output": { - "output": { - "item": "energizedpower:gold_dust" - }, + "ingredient": "#c:ingots/gold", + "result": { "percentages": [ 1.0 ], "percentagesAdvanced": [ 1.0 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:gold_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ores.json index ceb15bdd8..dfd940dd5 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/gold" - }, - "output": { - "output": { - "item": "energizedpower:gold_dust" - }, + "ingredient": "#c:ores/gold", + "result": { "percentages": [ 1.0, 1.0, @@ -17,6 +12,10 @@ 1.0, 0.5, 0.25 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:gold_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold.json index 745666158..6fd68337a 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:raw_materials/gold" - }, - "output": { - "output": { - "item": "energizedpower:gold_dust" - }, + "ingredient": "#c:raw_materials/gold", + "result": { "percentages": [ 1.0, 0.25 @@ -14,6 +9,10 @@ "percentagesAdvanced": [ 1.0, 0.5 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:gold_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold_blocks.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold_blocks.json index 70e521eaa..1db356f52 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold_blocks.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold_blocks.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:storage_blocks/raw_gold" - }, - "output": { - "output": { - "item": "energizedpower:gold_dust" - }, + "ingredient": "#c:storage_blocks/raw_gold", + "result": { "percentages": [ 1.0, 1.0, @@ -35,6 +30,10 @@ 0.5, 0.25, 0.25 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:gold_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ingots.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ingots.json index 1fdd7e2e0..c0f674ae6 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ingots.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ingots.json @@ -1,17 +1,16 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ingots/iron" - }, - "output": { - "output": { - "item": "energizedpower:iron_dust" - }, + "ingredient": "#c:ingots/iron", + "result": { "percentages": [ 1.0 ], "percentagesAdvanced": [ 1.0 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:iron_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ores.json index e427d0deb..6971b08e6 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/iron" - }, - "output": { - "output": { - "item": "energizedpower:iron_dust" - }, + "ingredient": "#c:ores/iron", + "result": { "percentages": [ 1.0, 1.0, @@ -17,6 +12,10 @@ 1.0, 0.5, 0.25 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:iron_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron.json index 3e1cbdd42..b44884cb3 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:raw_materials/iron" - }, - "output": { - "output": { - "item": "energizedpower:iron_dust" - }, + "ingredient": "#c:raw_materials/iron", + "result": { "percentages": [ 1.0, 0.25 @@ -14,6 +9,10 @@ "percentagesAdvanced": [ 1.0, 0.5 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:iron_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron_blocks.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron_blocks.json index 0ab1afe32..822cf2d71 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron_blocks.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron_blocks.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:storage_blocks/raw_iron" - }, - "output": { - "output": { - "item": "energizedpower:iron_dust" - }, + "ingredient": "#c:storage_blocks/raw_iron", + "result": { "percentages": [ 1.0, 1.0, @@ -35,6 +30,10 @@ 0.5, 0.25, 0.25 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:iron_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/lapis_lazuli_from_pulverizer_lapis_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/lapis_lazuli_from_pulverizer_lapis_ores.json index 90c8d7ae7..b000df2b4 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/lapis_lazuli_from_pulverizer_lapis_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/lapis_lazuli_from_pulverizer_lapis_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/lapis" - }, - "output": { - "output": { - "item": "minecraft:lapis_lazuli" - }, + "ingredient": "#c:ores/lapis", + "result": { "percentages": [ 1.0, 1.0, @@ -35,6 +30,10 @@ 0.5, 0.25, 0.125 - ] + ], + "result": { + "count": 1, + "id": "minecraft:lapis_lazuli" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/netherite_scrap_from_pulverizer_ancient_debris.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/netherite_scrap_from_pulverizer_ancient_debris.json index c85eb75d5..1d7a0ea83 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/netherite_scrap_from_pulverizer_ancient_debris.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/netherite_scrap_from_pulverizer_ancient_debris.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/netherite_scrap" - }, - "output": { - "output": { - "item": "minecraft:netherite_scrap" - }, + "ingredient": "#c:ores/netherite_scrap", + "result": { "percentages": [ 1.0, 0.125, @@ -17,6 +12,10 @@ 0.25, 0.25, 0.125 - ] + ], + "result": { + "count": 1, + "id": "minecraft:netherite_scrap" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/quartz_from_pulverizer_nether_quartz_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/quartz_from_pulverizer_nether_quartz_ores.json index d1e27fa8b..4486a5c7d 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/quartz_from_pulverizer_nether_quartz_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/quartz_from_pulverizer_nether_quartz_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/quartz" - }, - "output": { - "output": { - "item": "minecraft:quartz" - }, + "ingredient": "#c:ores/quartz", + "result": { "percentages": [ 1.0, 0.67, @@ -17,6 +12,10 @@ 0.67, 0.33, 0.17 - ] + ], + "result": { + "count": 1, + "id": "minecraft:quartz" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/redstone_from_pulverizer_redstone_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/redstone_from_pulverizer_redstone_ores.json index 7c2204e1c..2caa763f2 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/redstone_from_pulverizer_redstone_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/redstone_from_pulverizer_redstone_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/redstone" - }, - "output": { - "output": { - "item": "minecraft:redstone" - }, + "ingredient": "#c:ores/redstone", + "result": { "percentages": [ 1.0, 1.0, @@ -29,6 +24,10 @@ 0.33, 0.33, 0.17 - ] + ], + "result": { + "count": 1, + "id": "minecraft:redstone" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin.json index 03fbdce0f..d34c1126a 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:raw_materials/tin" - }, - "output": { - "output": { - "item": "energizedpower:tin_dust" - }, + "ingredient": "#c:raw_materials/tin", + "result": { "percentages": [ 1.0, 0.25 @@ -14,6 +9,10 @@ "percentagesAdvanced": [ 1.0, 0.5 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:tin_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin_blocks.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin_blocks.json index 637204b01..cd2304c83 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin_blocks.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin_blocks.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:storage_blocks/raw_tin" - }, - "output": { - "output": { - "item": "energizedpower:tin_dust" - }, + "ingredient": "#c:storage_blocks/raw_tin", + "result": { "percentages": [ 1.0, 1.0, @@ -35,6 +30,10 @@ 0.5, 0.25, 0.25 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:tin_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ingots.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ingots.json index c105a8c09..6bddd6964 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ingots.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ingots.json @@ -1,17 +1,16 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ingots/tin" - }, - "output": { - "output": { - "item": "energizedpower:tin_dust" - }, + "ingredient": "#c:ingots/tin", + "result": { "percentages": [ 1.0 ], "percentagesAdvanced": [ 1.0 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:tin_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ores.json b/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ores.json index cd0d153aa..5f67bfcf4 100644 --- a/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ores.json @@ -1,12 +1,7 @@ { "type": "energizedpower:pulverizer", - "ingredient": { - "tag": "c:ores/tin" - }, - "output": { - "output": { - "item": "energizedpower:tin_dust" - }, + "ingredient": "#c:ores/tin", + "result": { "percentages": [ 1.0, 1.0, @@ -17,6 +12,10 @@ 1.0, 0.5, 0.25 - ] + ], + "result": { + "count": 1, + "id": "energizedpower:tin_dust" + } } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_boat.json index a3121b268..b6acdfd3f 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:acacia_boat" - }, - "output": { + "ingredient": "minecraft:acacia_boat", + "result": { "count": 4, - "item": "minecraft:acacia_planks" + "id": "minecraft:acacia_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_chest_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_chest_boat.json index 4ab9814ab..ef3d91f51 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_chest_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_chest_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:acacia_chest_boat" - }, - "output": { + "ingredient": "minecraft:acacia_chest_boat", + "result": { "count": 5, - "item": "minecraft:acacia_planks" + "id": "minecraft:acacia_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_door.json index f63796d0d..d0194a914 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:acacia_door" - }, - "output": { - "item": "minecraft:acacia_planks" + "ingredient": "minecraft:acacia_door", + "result": { + "count": 1, + "id": "minecraft:acacia_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence.json index 24e577474..c88d82737 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:acacia_fence" - }, - "output": { - "item": "minecraft:acacia_planks" + "ingredient": "minecraft:acacia_fence", + "result": { + "count": 1, + "id": "minecraft:acacia_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence_gate.json index 8cd1e157b..2e5fe79b3 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:acacia_fence_gate" - }, - "output": { + "ingredient": "minecraft:acacia_fence_gate", + "result": { "count": 2, - "item": "minecraft:acacia_planks" + "id": "minecraft:acacia_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_logs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_logs.json index 9ace4de83..1d82ec404 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_logs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_logs.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:acacia_logs" - }, - "output": { + "ingredient": "#minecraft:acacia_logs", + "result": { "count": 6, - "item": "minecraft:acacia_planks" + "id": "minecraft:acacia_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_pressure_plate.json index c65641624..370376c27 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:acacia_pressure_plate" - }, - "output": { - "item": "minecraft:acacia_planks" + "ingredient": "minecraft:acacia_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:acacia_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_sign.json index b35369ea7..8924358a3 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:acacia_sign" - }, - "output": { + "ingredient": "minecraft:acacia_sign", + "result": { "count": 2, - "item": "minecraft:acacia_planks" + "id": "minecraft:acacia_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_trapdoor.json index db09c1157..09f6d13b9 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:acacia_trapdoor" - }, - "output": { + "ingredient": "minecraft:acacia_trapdoor", + "result": { "count": 2, - "item": "minecraft:acacia_planks" + "id": "minecraft:acacia_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_blocks.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_blocks.json index 6895dde83..2a5aa9b2c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_blocks.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_blocks.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:bamboo_blocks" - }, - "output": { + "ingredient": "#minecraft:bamboo_blocks", + "result": { "count": 3, - "item": "minecraft:bamboo_planks" + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_chest_raft.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_chest_raft.json index cc19ec50b..4ebd0ccdc 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_chest_raft.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_chest_raft.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_chest_raft" - }, - "output": { + "ingredient": "minecraft:bamboo_chest_raft", + "result": { "count": 5, - "item": "minecraft:bamboo_planks" + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_door.json index 6813db940..7c23ed994 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_door" - }, - "output": { - "item": "minecraft:bamboo_planks" + "ingredient": "minecraft:bamboo_door", + "result": { + "count": 1, + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence.json index bfada0f0b..7c2cdd25c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_fence" - }, - "output": { - "item": "minecraft:bamboo_planks" + "ingredient": "minecraft:bamboo_fence", + "result": { + "count": 1, + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence_gate.json index 9d1c441c0..ea9e9e7c6 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_fence_gate" - }, - "output": { + "ingredient": "minecraft:bamboo_fence_gate", + "result": { "count": 2, - "item": "minecraft:bamboo_planks" + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_pressure_plate.json index fe4a86c81..d2527c0f7 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_pressure_plate" - }, - "output": { - "item": "minecraft:bamboo_planks" + "ingredient": "minecraft:bamboo_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_raft.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_raft.json index 29067e0af..624943de6 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_raft.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_raft.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_raft" - }, - "output": { + "ingredient": "minecraft:bamboo_raft", + "result": { "count": 4, - "item": "minecraft:bamboo_planks" + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_sign.json index 9044c2b18..af6154aa8 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_sign" - }, - "output": { + "ingredient": "minecraft:bamboo_sign", + "result": { "count": 2, - "item": "minecraft:bamboo_planks" + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_trapdoor.json index a19d6a574..5de56d752 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_trapdoor" - }, - "output": { + "ingredient": "minecraft:bamboo_trapdoor", + "result": { "count": 2, - "item": "minecraft:bamboo_planks" + "id": "minecraft:bamboo_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_boat.json index 927c101d8..66698fd70 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:birch_boat" - }, - "output": { + "ingredient": "minecraft:birch_boat", + "result": { "count": 4, - "item": "minecraft:birch_planks" + "id": "minecraft:birch_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_chest_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_chest_boat.json index f6f87c367..4475be9fd 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_chest_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_chest_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:birch_chest_boat" - }, - "output": { + "ingredient": "minecraft:birch_chest_boat", + "result": { "count": 5, - "item": "minecraft:birch_planks" + "id": "minecraft:birch_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_door.json index 461bb0068..e720f380c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:birch_door" - }, - "output": { - "item": "minecraft:birch_planks" + "ingredient": "minecraft:birch_door", + "result": { + "count": 1, + "id": "minecraft:birch_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence.json index 8c8d2db7b..c3c21091a 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:birch_fence" - }, - "output": { - "item": "minecraft:birch_planks" + "ingredient": "minecraft:birch_fence", + "result": { + "count": 1, + "id": "minecraft:birch_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence_gate.json index a7ac97ae5..63110e1c5 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:birch_fence_gate" - }, - "output": { + "ingredient": "minecraft:birch_fence_gate", + "result": { "count": 2, - "item": "minecraft:birch_planks" + "id": "minecraft:birch_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_logs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_logs.json index 356754fb4..c6fc0f25a 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_logs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_logs.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:birch_logs" - }, - "output": { + "ingredient": "#minecraft:birch_logs", + "result": { "count": 6, - "item": "minecraft:birch_planks" + "id": "minecraft:birch_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_pressure_plate.json index bcf0208f3..fa20de93c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:birch_pressure_plate" - }, - "output": { - "item": "minecraft:birch_planks" + "ingredient": "minecraft:birch_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:birch_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_sign.json index 92f6597f0..c1be84a39 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:birch_sign" - }, - "output": { + "ingredient": "minecraft:birch_sign", + "result": { "count": 2, - "item": "minecraft:birch_planks" + "id": "minecraft:birch_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_trapdoor.json index 98ba1366e..579163d1d 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:birch_trapdoor" - }, - "output": { + "ingredient": "minecraft:birch_trapdoor", + "result": { "count": 2, - "item": "minecraft:birch_planks" + "id": "minecraft:birch_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_boat.json index b321e51cf..fe25f9c27 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cherry_boat" - }, - "output": { + "ingredient": "minecraft:cherry_boat", + "result": { "count": 4, - "item": "minecraft:cherry_planks" + "id": "minecraft:cherry_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_chest_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_chest_boat.json index c7b2d3837..efbbb96d1 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_chest_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_chest_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cherry_chest_boat" - }, - "output": { + "ingredient": "minecraft:cherry_chest_boat", + "result": { "count": 5, - "item": "minecraft:cherry_planks" + "id": "minecraft:cherry_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_door.json index 660186ffa..54c4cd11e 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cherry_door" - }, - "output": { - "item": "minecraft:cherry_planks" + "ingredient": "minecraft:cherry_door", + "result": { + "count": 1, + "id": "minecraft:cherry_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence.json index 5651f8c34..ce95534ab 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cherry_fence" - }, - "output": { - "item": "minecraft:cherry_planks" + "ingredient": "minecraft:cherry_fence", + "result": { + "count": 1, + "id": "minecraft:cherry_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence_gate.json index 7e7408446..8a08ce075 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cherry_fence_gate" - }, - "output": { + "ingredient": "minecraft:cherry_fence_gate", + "result": { "count": 2, - "item": "minecraft:cherry_planks" + "id": "minecraft:cherry_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_logs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_logs.json index 79e6254f0..3107fb62e 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_logs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_logs.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:cherry_logs" - }, - "output": { + "ingredient": "#minecraft:cherry_logs", + "result": { "count": 6, - "item": "minecraft:cherry_planks" + "id": "minecraft:cherry_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_pressure_plate.json index e0f780387..f06dcbc2e 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cherry_pressure_plate" - }, - "output": { - "item": "minecraft:cherry_planks" + "ingredient": "minecraft:cherry_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:cherry_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_sign.json index 150b9fe18..ce6fe389c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cherry_sign" - }, - "output": { + "ingredient": "minecraft:cherry_sign", + "result": { "count": 2, - "item": "minecraft:cherry_planks" + "id": "minecraft:cherry_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_trapdoor.json index a4b0f31fb..415be64d6 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cherry_trapdoor" - }, - "output": { + "ingredient": "minecraft:cherry_trapdoor", + "result": { "count": 2, - "item": "minecraft:cherry_planks" + "id": "minecraft:cherry_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_door.json index e0d341ea6..d352cc86b 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:crimson_door" - }, - "output": { - "item": "minecraft:crimson_planks" + "ingredient": "minecraft:crimson_door", + "result": { + "count": 1, + "id": "minecraft:crimson_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence.json index 3bd541c17..4934c7a3d 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:crimson_fence" - }, - "output": { - "item": "minecraft:crimson_planks" + "ingredient": "minecraft:crimson_fence", + "result": { + "count": 1, + "id": "minecraft:crimson_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence_gate.json index f25822ec6..393a3b536 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:crimson_fence_gate" - }, - "output": { + "ingredient": "minecraft:crimson_fence_gate", + "result": { "count": 2, - "item": "minecraft:crimson_planks" + "id": "minecraft:crimson_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_pressure_plate.json index 0596af788..1eeb294fc 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:crimson_pressure_plate" - }, - "output": { - "item": "minecraft:crimson_planks" + "ingredient": "minecraft:crimson_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:crimson_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_sign.json index 46a5888a7..a620859c9 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:crimson_sign" - }, - "output": { + "ingredient": "minecraft:crimson_sign", + "result": { "count": 2, - "item": "minecraft:crimson_planks" + "id": "minecraft:crimson_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_stems.json b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_stems.json index 4064e3f8b..99b778a56 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_stems.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_stems.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:crimson_stems" - }, - "output": { + "ingredient": "#minecraft:crimson_stems", + "result": { "count": 6, - "item": "minecraft:crimson_planks" + "id": "minecraft:crimson_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_trapdoor.json index 34ea461dc..43a64c631 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:crimson_trapdoor" - }, - "output": { + "ingredient": "minecraft:crimson_trapdoor", + "result": { "count": 2, - "item": "minecraft:crimson_planks" + "id": "minecraft:crimson_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_boat.json index ad9f28cfb..5acebb9a0 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:dark_oak_boat" - }, - "output": { + "ingredient": "minecraft:dark_oak_boat", + "result": { "count": 4, - "item": "minecraft:dark_oak_planks" + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_chest_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_chest_boat.json index f4a5b67aa..b31d53f08 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_chest_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_chest_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:dark_oak_chest_boat" - }, - "output": { + "ingredient": "minecraft:dark_oak_chest_boat", + "result": { "count": 5, - "item": "minecraft:dark_oak_planks" + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_door.json index 598794136..6d1f712c5 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:dark_oak_door" - }, - "output": { - "item": "minecraft:dark_oak_planks" + "ingredient": "minecraft:dark_oak_door", + "result": { + "count": 1, + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence.json index 3f775ebc5..ed33c2b32 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:dark_oak_fence" - }, - "output": { - "item": "minecraft:dark_oak_planks" + "ingredient": "minecraft:dark_oak_fence", + "result": { + "count": 1, + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence_gate.json index f8dee5232..7f8856257 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:dark_oak_fence_gate" - }, - "output": { + "ingredient": "minecraft:dark_oak_fence_gate", + "result": { "count": 2, - "item": "minecraft:dark_oak_planks" + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_logs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_logs.json index 9a331b016..28130333a 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_logs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_logs.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:dark_oak_logs" - }, - "output": { + "ingredient": "#minecraft:dark_oak_logs", + "result": { "count": 6, - "item": "minecraft:dark_oak_planks" + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_pressure_plate.json index 599c88f18..c170956f4 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:dark_oak_pressure_plate" - }, - "output": { - "item": "minecraft:dark_oak_planks" + "ingredient": "minecraft:dark_oak_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_sign.json index 9d6b0e711..09e45393a 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:dark_oak_sign" - }, - "output": { + "ingredient": "minecraft:dark_oak_sign", + "result": { "count": 2, - "item": "minecraft:dark_oak_planks" + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_trapdoor.json index 3b70dd23e..c62900ce8 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:dark_oak_trapdoor" - }, - "output": { + "ingredient": "minecraft:dark_oak_trapdoor", + "result": { "count": 2, - "item": "minecraft:dark_oak_planks" + "id": "minecraft:dark_oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_boat.json index 5a903e9a5..37d57a718 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jungle_boat" - }, - "output": { + "ingredient": "minecraft:jungle_boat", + "result": { "count": 4, - "item": "minecraft:jungle_planks" + "id": "minecraft:jungle_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_chest_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_chest_boat.json index 78733c061..7c1261ddc 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_chest_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_chest_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jungle_chest_boat" - }, - "output": { + "ingredient": "minecraft:jungle_chest_boat", + "result": { "count": 5, - "item": "minecraft:jungle_planks" + "id": "minecraft:jungle_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_door.json index 9b34d1720..d87939146 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jungle_door" - }, - "output": { - "item": "minecraft:jungle_planks" + "ingredient": "minecraft:jungle_door", + "result": { + "count": 1, + "id": "minecraft:jungle_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence.json index 4a0acee98..5d2492fbd 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jungle_fence" - }, - "output": { - "item": "minecraft:jungle_planks" + "ingredient": "minecraft:jungle_fence", + "result": { + "count": 1, + "id": "minecraft:jungle_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence_gate.json index 6b3c81d8f..aae32a577 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jungle_fence_gate" - }, - "output": { + "ingredient": "minecraft:jungle_fence_gate", + "result": { "count": 2, - "item": "minecraft:jungle_planks" + "id": "minecraft:jungle_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_logs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_logs.json index a11d2e341..653600c63 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_logs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_logs.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:jungle_logs" - }, - "output": { + "ingredient": "#minecraft:jungle_logs", + "result": { "count": 6, - "item": "minecraft:jungle_planks" + "id": "minecraft:jungle_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_pressure_plate.json index bf3cf4a08..b574d9a9e 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jungle_pressure_plate" - }, - "output": { - "item": "minecraft:jungle_planks" + "ingredient": "minecraft:jungle_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:jungle_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_sign.json index c09e30b14..7bfb344e5 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jungle_sign" - }, - "output": { + "ingredient": "minecraft:jungle_sign", + "result": { "count": 2, - "item": "minecraft:jungle_planks" + "id": "minecraft:jungle_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_trapdoor.json index 72e7752be..2df649927 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jungle_trapdoor" - }, - "output": { + "ingredient": "minecraft:jungle_trapdoor", + "result": { "count": 2, - "item": "minecraft:jungle_planks" + "id": "minecraft:jungle_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_boat.json index e97b30a70..30e70dddf 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:mangrove_boat" - }, - "output": { + "ingredient": "minecraft:mangrove_boat", + "result": { "count": 4, - "item": "minecraft:mangrove_planks" + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_chest_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_chest_boat.json index df15705c1..44c0983c8 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_chest_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_chest_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:mangrove_chest_boat" - }, - "output": { + "ingredient": "minecraft:mangrove_chest_boat", + "result": { "count": 5, - "item": "minecraft:mangrove_planks" + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_door.json index 296bd9ef3..7c30b3e31 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:mangrove_door" - }, - "output": { - "item": "minecraft:mangrove_planks" + "ingredient": "minecraft:mangrove_door", + "result": { + "count": 1, + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence.json index cc4ab75fb..868fd6467 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:mangrove_fence" - }, - "output": { - "item": "minecraft:mangrove_planks" + "ingredient": "minecraft:mangrove_fence", + "result": { + "count": 1, + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence_gate.json index 8002f4a38..a1c81a8f0 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:mangrove_fence_gate" - }, - "output": { + "ingredient": "minecraft:mangrove_fence_gate", + "result": { "count": 2, - "item": "minecraft:mangrove_planks" + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_logs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_logs.json index 99f1be7b7..07eb22bb4 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_logs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_logs.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:mangrove_logs" - }, - "output": { + "ingredient": "#minecraft:mangrove_logs", + "result": { "count": 6, - "item": "minecraft:mangrove_planks" + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_pressure_plate.json index 0a5e9a24b..435f41182 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:mangrove_pressure_plate" - }, - "output": { - "item": "minecraft:mangrove_planks" + "ingredient": "minecraft:mangrove_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_sign.json index df45a0d95..278ef1031 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:mangrove_sign" - }, - "output": { + "ingredient": "minecraft:mangrove_sign", + "result": { "count": 2, - "item": "minecraft:mangrove_planks" + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_trapdoor.json index 994739b64..8773fc981 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:mangrove_trapdoor" - }, - "output": { + "ingredient": "minecraft:mangrove_trapdoor", + "result": { "count": 2, - "item": "minecraft:mangrove_planks" + "id": "minecraft:mangrove_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_barrel.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_barrel.json index 9436b1d24..9bcf62f24 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_barrel.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_barrel.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:barrel" - }, - "output": { + "ingredient": "minecraft:barrel", + "result": { "count": 6, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 5 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_bookshelf.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_bookshelf.json index fc6e9e69b..c85eea5c6 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_bookshelf.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_bookshelf.json @@ -1,14 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bookshelf" - }, - "output": { + "ingredient": "minecraft:bookshelf", + "result": { "count": 6, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, - "secondaryOutput": { + "secondaryResult": { "count": 3, - "item": "minecraft:book" + "id": "minecraft:book" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_cartography_table.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_cartography_table.json index 7074d4814..aa1e02e6c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_cartography_table.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_cartography_table.json @@ -1,14 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:cartography_table" - }, - "output": { + "ingredient": "minecraft:cartography_table", + "result": { "count": 4, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, - "secondaryOutput": { + "secondaryResult": { "count": 2, - "item": "minecraft:paper" + "id": "minecraft:paper" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chest.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chest.json index 7a6c7377c..304d78c96 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chest.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chest.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:chest" - }, - "output": { + "ingredient": "minecraft:chest", + "result": { "count": 7, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chiseled_bookshelf.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chiseled_bookshelf.json index 29491c182..26dda54c8 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chiseled_bookshelf.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chiseled_bookshelf.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:chiseled_bookshelf" - }, - "output": { + "ingredient": "minecraft:chiseled_bookshelf", + "result": { "count": 6, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 5 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_composter.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_composter.json index 09ad66765..50aa77c7c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_composter.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_composter.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:composter" - }, - "output": { + "ingredient": "minecraft:composter", + "result": { "count": 3, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_crafting_table.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_crafting_table.json index 65bcb8aa7..5be36c6d0 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_crafting_table.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_crafting_table.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:crafting_table" - }, - "output": { + "ingredient": "minecraft:crafting_table", + "result": { "count": 3, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_fletching_table.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_fletching_table.json index 92019712d..a36e243d9 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_fletching_table.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_fletching_table.json @@ -1,14 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:fletching_table" - }, - "output": { + "ingredient": "minecraft:fletching_table", + "result": { "count": 4, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, - "secondaryOutput": { + "secondaryResult": { "count": 2, - "item": "minecraft:flint" + "id": "minecraft:flint" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_jukebox.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_jukebox.json index e257af757..1435b7923 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_jukebox.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_jukebox.json @@ -1,13 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:jukebox" - }, - "output": { + "ingredient": "minecraft:jukebox", + "result": { "count": 8, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, - "secondaryOutput": { - "item": "minecraft:diamond" + "secondaryResult": { + "count": 1, + "id": "minecraft:diamond" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_lectern.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_lectern.json index 4ab182e35..c2cda30b6 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_lectern.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_lectern.json @@ -1,14 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:lectern" - }, - "output": { + "ingredient": "minecraft:lectern", + "result": { "count": 8, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, - "secondaryOutput": { + "secondaryResult": { "count": 3, - "item": "minecraft:book" + "id": "minecraft:book" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_loom.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_loom.json index 2492c707e..2f8f8921d 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_loom.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_loom.json @@ -1,14 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:loom" - }, - "output": { + "ingredient": "minecraft:loom", + "result": { "count": 2, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, - "secondaryOutput": { + "secondaryResult": { "count": 2, - "item": "minecraft:string" + "id": "minecraft:string" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_note_block.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_note_block.json index 21ef15e52..6e04f94ae 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_note_block.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_note_block.json @@ -1,13 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:note_block" - }, - "output": { + "ingredient": "minecraft:note_block", + "result": { "count": 8, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, - "secondaryOutput": { - "item": "minecraft:redstone" + "secondaryResult": { + "count": 1, + "id": "minecraft:redstone" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_boat.json index 68ba9341d..d0bf56eda 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:oak_boat" - }, - "output": { + "ingredient": "minecraft:oak_boat", + "result": { "count": 4, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_chest_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_chest_boat.json index d1ad6297e..4c595d5a0 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_chest_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_chest_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:oak_chest_boat" - }, - "output": { + "ingredient": "minecraft:oak_chest_boat", + "result": { "count": 5, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_door.json index d6d3b5156..c7d5a272b 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:oak_door" - }, - "output": { - "item": "minecraft:oak_planks" + "ingredient": "minecraft:oak_door", + "result": { + "count": 1, + "id": "minecraft:oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence.json index 2604ed3d5..b7ea8571b 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:oak_fence" - }, - "output": { - "item": "minecraft:oak_planks" + "ingredient": "minecraft:oak_fence", + "result": { + "count": 1, + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence_gate.json index 30825ff3b..6b908e938 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:oak_fence_gate" - }, - "output": { + "ingredient": "minecraft:oak_fence_gate", + "result": { "count": 2, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_logs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_logs.json index 98d0fe4c3..8e522f2ba 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_logs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_logs.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:oak_logs" - }, - "output": { + "ingredient": "#minecraft:oak_logs", + "result": { "count": 6, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_pressure_plate.json index cc43a78aa..d8142c620 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:oak_pressure_plate" - }, - "output": { - "item": "minecraft:oak_planks" + "ingredient": "minecraft:oak_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_sign.json index 617e68543..78fadb289 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:oak_sign" - }, - "output": { + "ingredient": "minecraft:oak_sign", + "result": { "count": 2, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_trapdoor.json index 99a4d0599..61592b1a1 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:oak_trapdoor" - }, - "output": { + "ingredient": "minecraft:oak_trapdoor", + "result": { "count": 2, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_axe.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_axe.json index 6f2ca6e8a..e2814c0a2 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_axe.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_axe.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:wooden_axe" - }, - "output": { + "ingredient": "minecraft:wooden_axe", + "result": { "count": 3, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hammer.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hammer.json index 1f1b6285c..115c375ca 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hammer.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "energizedpower:wooden_hammer" - }, - "output": { + "ingredient": "energizedpower:wooden_hammer", + "result": { "count": 2, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hoe.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hoe.json index 6d502aa20..dae0c4e29 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hoe.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hoe.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:wooden_hoe" - }, - "output": { + "ingredient": "minecraft:wooden_hoe", + "result": { "count": 2, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_pickaxe.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_pickaxe.json index 86ac683c2..395feaac4 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_pickaxe.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_pickaxe.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:wooden_pickaxe" - }, - "output": { + "ingredient": "minecraft:wooden_pickaxe", + "result": { "count": 3, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_shovel.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_shovel.json index 17c5280e6..432644905 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_shovel.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_shovel.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:wooden_shovel" - }, - "output": { - "item": "minecraft:oak_planks" + "ingredient": "minecraft:wooden_shovel", + "result": { + "count": 1, + "id": "minecraft:oak_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_sword.json b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_sword.json index 4bfc70f56..a1ced21d0 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_sword.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_sword.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:wooden_sword" - }, - "output": { + "ingredient": "minecraft:wooden_sword", + "result": { "count": 2, - "item": "minecraft:oak_planks" + "id": "minecraft:oak_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sawdust_from_sawing_sticks.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sawdust_from_sawing_sticks.json index 56f2854df..47b818bae 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sawdust_from_sawing_sticks.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sawdust_from_sawing_sticks.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "c:rods/wooden" - }, - "output": { - "item": "energizedpower:sawdust" + "ingredient": "#c:rods/wooden", + "result": { + "count": 1, + "id": "energizedpower:sawdust" }, "sawdustAmount": 0 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_boat.json index 3fb290bd5..e39406dd7 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:spruce_boat" - }, - "output": { + "ingredient": "minecraft:spruce_boat", + "result": { "count": 4, - "item": "minecraft:spruce_planks" + "id": "minecraft:spruce_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_chest_boat.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_chest_boat.json index 399bf05ae..835dcdb5c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_chest_boat.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_chest_boat.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:spruce_chest_boat" - }, - "output": { + "ingredient": "minecraft:spruce_chest_boat", + "result": { "count": 5, - "item": "minecraft:spruce_planks" + "id": "minecraft:spruce_planks" }, "sawdustAmount": 7 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_door.json index 128c2c20a..356db18ca 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:spruce_door" - }, - "output": { - "item": "minecraft:spruce_planks" + "ingredient": "minecraft:spruce_door", + "result": { + "count": 1, + "id": "minecraft:spruce_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence.json index d985f7a8d..4cbea06d7 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:spruce_fence" - }, - "output": { - "item": "minecraft:spruce_planks" + "ingredient": "minecraft:spruce_fence", + "result": { + "count": 1, + "id": "minecraft:spruce_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence_gate.json index 17f782892..a87827ead 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:spruce_fence_gate" - }, - "output": { + "ingredient": "minecraft:spruce_fence_gate", + "result": { "count": 2, - "item": "minecraft:spruce_planks" + "id": "minecraft:spruce_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_logs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_logs.json index d67c33aec..5d049c95d 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_logs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_logs.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:spruce_logs" - }, - "output": { + "ingredient": "#minecraft:spruce_logs", + "result": { "count": 6, - "item": "minecraft:spruce_planks" + "id": "minecraft:spruce_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_pressure_plate.json index 3e5472499..c21fe04a8 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:spruce_pressure_plate" - }, - "output": { - "item": "minecraft:spruce_planks" + "ingredient": "minecraft:spruce_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:spruce_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_sign.json index 444686204..0876a1771 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:spruce_sign" - }, - "output": { + "ingredient": "minecraft:spruce_sign", + "result": { "count": 2, - "item": "minecraft:spruce_planks" + "id": "minecraft:spruce_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_trapdoor.json index 4c4f6978b..ccf3b4c62 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:spruce_trapdoor" - }, - "output": { + "ingredient": "minecraft:spruce_trapdoor", + "result": { "count": 2, - "item": "minecraft:spruce_planks" + "id": "minecraft:spruce_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic.json index 7ec6162d2..1ccb91595 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bamboo_mosaic" - }, - "output": { + "ingredient": "minecraft:bamboo_mosaic", + "result": { "count": 3, - "item": "minecraft:stick" + "id": "minecraft:stick" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_slabs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_slabs.json new file mode 100644 index 000000000..30231b255 --- /dev/null +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_slabs.json @@ -0,0 +1,9 @@ +{ + "type": "energizedpower:sawmill", + "ingredient": "minecraft:bamboo_mosaic_slab", + "result": { + "count": 1, + "id": "minecraft:stick" + }, + "sawdustAmount": 1 +} \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_stairs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_stairs.json new file mode 100644 index 000000000..071ed0d51 --- /dev/null +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_stairs.json @@ -0,0 +1,9 @@ +{ + "type": "energizedpower:sawmill", + "ingredient": "minecraft:bamboo_mosaic_stairs", + "result": { + "count": 3, + "id": "minecraft:stick" + }, + "sawdustAmount": 1 +} \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bow.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bow.json index 92d8eb1e3..8ec48e57d 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bow.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bow.json @@ -1,14 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bow" - }, - "output": { + "ingredient": "minecraft:bow", + "result": { "count": 3, - "item": "minecraft:stick" + "id": "minecraft:stick" }, - "secondaryOutput": { + "secondaryResult": { "count": 3, - "item": "minecraft:string" + "id": "minecraft:string" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bowl.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bowl.json index de8ab868b..ba336a642 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bowl.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_bowl.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:bowl" - }, - "output": { - "item": "minecraft:stick" + "ingredient": "minecraft:bowl", + "result": { + "count": 1, + "id": "minecraft:stick" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_buttons.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_buttons.json index 419838b02..eaaa55bde 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_buttons.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_buttons.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:wooden_buttons" - }, - "output": { + "ingredient": "#minecraft:wooden_buttons", + "result": { "count": 3, - "item": "minecraft:stick" + "id": "minecraft:stick" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_fishing_rod.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_fishing_rod.json index c450a5a2b..742bd3ce1 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_fishing_rod.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_fishing_rod.json @@ -1,14 +1,12 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:fishing_rod" - }, - "output": { + "ingredient": "minecraft:fishing_rod", + "result": { "count": 3, - "item": "minecraft:stick" + "id": "minecraft:stick" }, - "secondaryOutput": { + "secondaryResult": { "count": 2, - "item": "minecraft:string" + "id": "minecraft:string" } } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_ladder.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_ladder.json index 57899892c..714702fb9 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_ladder.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_ladder.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:ladder" - }, - "output": { + "ingredient": "minecraft:ladder", + "result": { "count": 2, - "item": "minecraft:stick" + "id": "minecraft:stick" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_planks.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_planks.json index ed1c3db4f..1fbc9ac37 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_planks.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_planks.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:planks" - }, - "output": { + "ingredient": "#minecraft:planks", + "result": { "count": 3, - "item": "minecraft:stick" + "id": "minecraft:stick" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_slabs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_slabs.json index c4677f919..7a7dbbe3c 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_slabs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_slabs.json @@ -1,15 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": [ - { - "tag": "minecraft:wooden_slabs" - }, - { - "item": "minecraft:bamboo_mosaic_slab" - } - ], - "output": { - "item": "minecraft:stick" + "ingredient": "#minecraft:wooden_slabs", + "result": { + "count": 1, + "id": "minecraft:stick" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_stairs.json b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_stairs.json index 8ba5b2de1..78690b95b 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_stairs.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/sticks_from_sawing_stairs.json @@ -1,16 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": [ - { - "tag": "minecraft:wooden_stairs" - }, - { - "item": "minecraft:bamboo_mosaic_stairs" - } - ], - "output": { + "ingredient": "#minecraft:wooden_stairs", + "result": { "count": 3, - "item": "minecraft:stick" + "id": "minecraft:stick" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_door.json b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_door.json index 7a4d5dce6..c809da6f9 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_door.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_door.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:warped_door" - }, - "output": { - "item": "minecraft:warped_planks" + "ingredient": "minecraft:warped_door", + "result": { + "count": 1, + "id": "minecraft:warped_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence.json b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence.json index 8112fbecf..085901492 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:warped_fence" - }, - "output": { - "item": "minecraft:warped_planks" + "ingredient": "minecraft:warped_fence", + "result": { + "count": 1, + "id": "minecraft:warped_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence_gate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence_gate.json index 226fe38dc..bd01c985f 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence_gate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence_gate.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:warped_fence_gate" - }, - "output": { + "ingredient": "minecraft:warped_fence_gate", + "result": { "count": 2, - "item": "minecraft:warped_planks" + "id": "minecraft:warped_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_pressure_plate.json b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_pressure_plate.json index 63f9338c3..dbf655e36 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_pressure_plate.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_pressure_plate.json @@ -1,10 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:warped_pressure_plate" - }, - "output": { - "item": "minecraft:warped_planks" + "ingredient": "minecraft:warped_pressure_plate", + "result": { + "count": 1, + "id": "minecraft:warped_planks" }, "sawdustAmount": 2 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_sign.json b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_sign.json index 917122bc4..88667b80b 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_sign.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_sign.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:warped_sign" - }, - "output": { + "ingredient": "minecraft:warped_sign", + "result": { "count": 2, - "item": "minecraft:warped_planks" + "id": "minecraft:warped_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_stems.json b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_stems.json index 4984a493c..ce0b27018 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_stems.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_stems.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "tag": "minecraft:warped_stems" - }, - "output": { + "ingredient": "#minecraft:warped_stems", + "result": { "count": 6, - "item": "minecraft:warped_planks" + "id": "minecraft:warped_planks" }, "sawdustAmount": 1 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_trapdoor.json b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_trapdoor.json index 9a879b966..caba43886 100644 --- a/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_trapdoor.json +++ b/src/generated/resources/data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_trapdoor.json @@ -1,11 +1,9 @@ { "type": "energizedpower:sawmill", - "ingredient": { - "item": "minecraft:warped_trapdoor" - }, - "output": { + "ingredient": "minecraft:warped_trapdoor", + "result": { "count": 2, - "item": "minecraft:warped_planks" + "id": "minecraft:warped_planks" }, "sawdustAmount": 3 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/charcoal_from_smelting_sawdust_block.json b/src/generated/resources/data/energizedpower/recipe/smelting/charcoal_from_smelting_sawdust_block.json index 6d1ac6fda..7423c81c0 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/charcoal_from_smelting_sawdust_block.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/charcoal_from_smelting_sawdust_block.json @@ -3,9 +3,7 @@ "category": "misc", "cookingtime": 200, "experience": 0.15, - "ingredient": { - "item": "energizedpower:sawdust_block" - }, + "ingredient": "energizedpower:sawdust_block", "result": { "id": "minecraft:charcoal" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/copper_ingot_from_smelting_copper_dust.json b/src/generated/resources/data/energizedpower/recipe/smelting/copper_ingot_from_smelting_copper_dust.json index a206b9ae5..b3d6ad9e0 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/copper_ingot_from_smelting_copper_dust.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/copper_ingot_from_smelting_copper_dust.json @@ -4,9 +4,7 @@ "cookingtime": 200, "experience": 0.7, "group": "copper_ingot", - "ingredient": { - "tag": "c:dusts/copper" - }, + "ingredient": "#c:dusts/copper", "result": { "id": "minecraft:copper_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/gear_press_mold.json b/src/generated/resources/data/energizedpower/recipe/smelting/gear_press_mold.json index 5e992da30..9f7fa024d 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/gear_press_mold.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/gear_press_mold.json @@ -3,9 +3,7 @@ "category": "misc", "cookingtime": 200, "experience": 0.3, - "ingredient": { - "item": "energizedpower:raw_gear_press_mold" - }, + "ingredient": "energizedpower:raw_gear_press_mold", "result": { "id": "energizedpower:gear_press_mold" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/gold_ingot_from_smelting_gold_dust.json b/src/generated/resources/data/energizedpower/recipe/smelting/gold_ingot_from_smelting_gold_dust.json index 51bb0fd88..e526b6caa 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/gold_ingot_from_smelting_gold_dust.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/gold_ingot_from_smelting_gold_dust.json @@ -4,9 +4,7 @@ "cookingtime": 200, "experience": 0.7, "group": "gold_ingot", - "ingredient": { - "tag": "c:dusts/gold" - }, + "ingredient": "#c:dusts/gold", "result": { "id": "minecraft:gold_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/gold_nugget_from_smelting_golden_hammer.json b/src/generated/resources/data/energizedpower/recipe/smelting/gold_nugget_from_smelting_golden_hammer.json index fa3deddb2..c664bf51f 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/gold_nugget_from_smelting_golden_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/gold_nugget_from_smelting_golden_hammer.json @@ -4,9 +4,7 @@ "cookingtime": 200, "experience": 0.1, "group": "gold_nugget", - "ingredient": { - "item": "energizedpower:golden_hammer" - }, + "ingredient": "energizedpower:golden_hammer", "result": { "id": "minecraft:gold_nugget" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/iron_ingot_from_smelting_iron_dust.json b/src/generated/resources/data/energizedpower/recipe/smelting/iron_ingot_from_smelting_iron_dust.json index 9923aa440..0c641b950 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/iron_ingot_from_smelting_iron_dust.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/iron_ingot_from_smelting_iron_dust.json @@ -4,9 +4,7 @@ "cookingtime": 200, "experience": 0.7, "group": "iron_ingot", - "ingredient": { - "tag": "c:dusts/iron" - }, + "ingredient": "#c:dusts/iron", "result": { "id": "minecraft:iron_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/iron_nugget_from_smelting_iron_hammer.json b/src/generated/resources/data/energizedpower/recipe/smelting/iron_nugget_from_smelting_iron_hammer.json index c78a7f550..5065296a3 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/iron_nugget_from_smelting_iron_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/iron_nugget_from_smelting_iron_hammer.json @@ -4,9 +4,7 @@ "cookingtime": 200, "experience": 0.1, "group": "iron_nugget", - "ingredient": { - "item": "energizedpower:iron_hammer" - }, + "ingredient": "energizedpower:iron_hammer", "result": { "id": "minecraft:iron_nugget" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/rod_press_mold.json b/src/generated/resources/data/energizedpower/recipe/smelting/rod_press_mold.json index a05eee108..a188ee546 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/rod_press_mold.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/rod_press_mold.json @@ -3,9 +3,7 @@ "category": "misc", "cookingtime": 200, "experience": 0.3, - "ingredient": { - "item": "energizedpower:raw_rod_press_mold" - }, + "ingredient": "energizedpower:raw_rod_press_mold", "result": { "id": "energizedpower:rod_press_mold" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/silicon_from_smelting_nether_quartz.json b/src/generated/resources/data/energizedpower/recipe/smelting/silicon_from_smelting_nether_quartz.json index fb4190b68..39fcf3f35 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/silicon_from_smelting_nether_quartz.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/silicon_from_smelting_nether_quartz.json @@ -4,9 +4,7 @@ "cookingtime": 500, "experience": 4.1, "group": "silicon", - "ingredient": { - "tag": "c:gems/quartz" - }, + "ingredient": "#c:gems/quartz", "result": { "id": "energizedpower:silicon" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_raw_tin.json b/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_raw_tin.json index c7d0efbc2..0507e0413 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_raw_tin.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_raw_tin.json @@ -4,9 +4,7 @@ "cookingtime": 200, "experience": 0.7, "group": "tin_ingot", - "ingredient": { - "tag": "c:raw_materials/tin" - }, + "ingredient": "#c:raw_materials/tin", "result": { "id": "energizedpower:tin_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_dust.json b/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_dust.json index ad1bb851a..d676f0a0f 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_dust.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_dust.json @@ -4,9 +4,7 @@ "cookingtime": 200, "experience": 0.7, "group": "tin_ingot", - "ingredient": { - "tag": "c:dusts/tin" - }, + "ingredient": "#c:dusts/tin", "result": { "id": "energizedpower:tin_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_ores.json b/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_ores.json index 10a37639b..f546d98fa 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_ores.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_ores.json @@ -4,9 +4,7 @@ "cookingtime": 200, "experience": 0.7, "group": "tin_ingot", - "ingredient": { - "tag": "c:ores/tin" - }, + "ingredient": "#c:ores/tin", "result": { "id": "energizedpower:tin_ingot" } diff --git a/src/generated/resources/data/energizedpower/recipe/smelting/wire_press_mold.json b/src/generated/resources/data/energizedpower/recipe/smelting/wire_press_mold.json index 0b10fd9d1..ea32ba896 100644 --- a/src/generated/resources/data/energizedpower/recipe/smelting/wire_press_mold.json +++ b/src/generated/resources/data/energizedpower/recipe/smelting/wire_press_mold.json @@ -3,9 +3,7 @@ "category": "misc", "cookingtime": 200, "experience": 0.3, - "ingredient": { - "item": "energizedpower:raw_wire_press_mold" - }, + "ingredient": "energizedpower:raw_wire_press_mold", "result": { "id": "energizedpower:wire_press_mold" } diff --git a/src/generated/resources/data/energizedpower/recipe/smithing/netherite_hammer.json b/src/generated/resources/data/energizedpower/recipe/smithing/netherite_hammer.json index 1318cf30e..bc1b73bb7 100644 --- a/src/generated/resources/data/energizedpower/recipe/smithing/netherite_hammer.json +++ b/src/generated/resources/data/energizedpower/recipe/smithing/netherite_hammer.json @@ -1,16 +1,10 @@ { "type": "minecraft:smithing_transform", - "addition": { - "tag": "c:ingots/netherite" - }, - "base": { - "item": "energizedpower:diamond_hammer" - }, + "addition": "#c:ingots/netherite", + "base": "energizedpower:diamond_hammer", "result": { "count": 1, "id": "energizedpower:netherite_hammer" }, - "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/energizedpower/recipe/stone_solidifier/andesite.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/andesite.json index 88af5161b..f55b2f87b 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/andesite.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/andesite.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 50, - "output": { - "item": "minecraft:andesite" + "result": { + "count": 1, + "id": "minecraft:andesite" }, "waterAmount": 1000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/blackstone.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/blackstone.json index c6444ef95..1f319deb1 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/blackstone.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/blackstone.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 250, - "output": { - "item": "minecraft:blackstone" + "result": { + "count": 1, + "id": "minecraft:blackstone" }, "waterAmount": 1000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/cobbled_deepslate.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/cobbled_deepslate.json index 94bcd40c1..7c85dea7f 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/cobbled_deepslate.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/cobbled_deepslate.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 150, - "output": { - "item": "minecraft:cobbled_deepslate" + "result": { + "count": 1, + "id": "minecraft:cobbled_deepslate" }, "waterAmount": 150 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/cobblestone.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/cobblestone.json index f8298dd2d..b09a2238e 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/cobblestone.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/cobblestone.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 50, - "output": { - "item": "minecraft:cobblestone" + "result": { + "count": 1, + "id": "minecraft:cobblestone" }, "waterAmount": 50 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/deepslate.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/deepslate.json index fd5d0cae9..f13b90de2 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/deepslate.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/deepslate.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 150, - "output": { - "item": "minecraft:deepslate" + "result": { + "count": 1, + "id": "minecraft:deepslate" }, "waterAmount": 1000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/diorite.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/diorite.json index 9b0f4adc3..e371ecd05 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/diorite.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/diorite.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 50, - "output": { - "item": "minecraft:diorite" + "result": { + "count": 1, + "id": "minecraft:diorite" }, "waterAmount": 1000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/granite.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/granite.json index 105fc0549..5a2c10d90 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/granite.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/granite.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 50, - "output": { - "item": "minecraft:granite" + "result": { + "count": 1, + "id": "minecraft:granite" }, "waterAmount": 1000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/obsidian.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/obsidian.json index 4705c0d32..597b5ff28 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/obsidian.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/obsidian.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 1000, - "output": { - "item": "minecraft:obsidian" + "result": { + "count": 1, + "id": "minecraft:obsidian" }, "waterAmount": 1000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/stone.json b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/stone.json index ceb19107f..eb708bce4 100644 --- a/src/generated/resources/data/energizedpower/recipe/stone_solidifier/stone.json +++ b/src/generated/resources/data/energizedpower/recipe/stone_solidifier/stone.json @@ -1,8 +1,9 @@ { "type": "energizedpower:stone_solidifier", "lavaAmount": 50, - "output": { - "item": "minecraft:stone" + "result": { + "count": 1, + "id": "minecraft:stone" }, "waterAmount": 1000 } \ No newline at end of file diff --git a/src/generated/resources/data/energizedpower/recipe/thermal_generator/energy_production_from_lava.json b/src/generated/resources/data/energizedpower/recipe/thermal_generator/energy_production_from_lava.json index 7c1519194..ae06a07ae 100644 --- a/src/generated/resources/data/energizedpower/recipe/thermal_generator/energy_production_from_lava.json +++ b/src/generated/resources/data/energizedpower/recipe/thermal_generator/energy_production_from_lava.json @@ -1,5 +1,5 @@ { "type": "energizedpower:thermal_generator", "energy": 20000, - "input": "minecraft:lava" + "ingredient": "minecraft:lava" } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/EnergizedPowerModClient.java b/src/main/java/me/jddev0/ep/EnergizedPowerModClient.java index bf179c458..441610c12 100644 --- a/src/main/java/me/jddev0/ep/EnergizedPowerModClient.java +++ b/src/main/java/me/jddev0/ep/EnergizedPowerModClient.java @@ -116,10 +116,10 @@ public void onInitializeClient() { ModKeyBindings.register(); EntityRendererRegistry.register(EPEntityTypes.BATTERY_BOX_MINECART, - entity -> new MinecartEntityRenderer<>(entity, new EntityModelLayer( + entity -> new MinecartEntityRenderer(entity, new EntityModelLayer( Identifier.of("minecraft", "chest_minecart"), "main"))); EntityRendererRegistry.register(EPEntityTypes.ADVANCED_BATTERY_BOX_MINECART, - entity -> new MinecartEntityRenderer<>(entity, new EntityModelLayer( + entity -> new MinecartEntityRenderer(entity, new EntityModelLayer( Identifier.of("minecraft", "chest_minecart"), "main"))); FluidRenderHandlerRegistry.INSTANCE.register(EPFluids.DIRTY_WATER, EPFluids.FLOWING_DIRTY_WATER, diff --git a/src/main/java/me/jddev0/ep/block/AdvancedAutoCrafterBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedAutoCrafterBlock.java index 327bd9c5d..8967314ab 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedAutoCrafterBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedAutoCrafterBlock.java @@ -23,6 +23,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -97,8 +98,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedChargerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedChargerBlock.java index 17c9576a1..d18046c91 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedChargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedChargerBlock.java @@ -22,6 +22,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -96,8 +97,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedCrusherBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedCrusherBlock.java index f445dae28..0bd89ff71 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedCrusherBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedCrusherBlock.java @@ -22,6 +22,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -96,8 +97,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedMinecartChargerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedMinecartChargerBlock.java index f81bce373..a76b3a179 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedMinecartChargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedMinecartChargerBlock.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; import net.minecraft.util.*; @@ -30,7 +30,7 @@ public class AdvancedMinecartChargerBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(AdvancedMinecartChargerBlock::new); - public static final DirectionProperty FACING = Properties.FACING; + public static final EnumProperty FACING = Properties.FACING; protected AdvancedMinecartChargerBlock(AbstractBlock.Settings props) { super(props); diff --git a/src/main/java/me/jddev0/ep/block/AdvancedMinecartUnchargerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedMinecartUnchargerBlock.java index 60d667908..7a40346d2 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedMinecartUnchargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedMinecartUnchargerBlock.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; import net.minecraft.util.*; @@ -30,7 +30,7 @@ public class AdvancedMinecartUnchargerBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(AdvancedMinecartUnchargerBlock::new); - public static final DirectionProperty FACING = Properties.FACING; + public static final EnumProperty FACING = Properties.FACING; protected AdvancedMinecartUnchargerBlock(AbstractBlock.Settings props) { super(props); diff --git a/src/main/java/me/jddev0/ep/block/AdvancedPoweredFurnaceBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedPoweredFurnaceBlock.java index e0bab1472..7bda4c295 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedPoweredFurnaceBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedPoweredFurnaceBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,6 +20,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.function.ToIntFunction; @@ -29,7 +30,7 @@ public class AdvancedPoweredFurnaceBlock extends BlockWithEntity { public static final BooleanProperty POWERED = Properties.POWERED; public static final BooleanProperty LIT = Properties.LIT; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.get(LIT) ? 5 : 0; @@ -99,8 +100,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedPulverizerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedPulverizerBlock.java index 3a55382cd..995126dfa 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedPulverizerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedPulverizerBlock.java @@ -22,6 +22,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -96,8 +97,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedUnchargerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedUnchargerBlock.java index 9e830992e..57ebd1a9c 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedUnchargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedUnchargerBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class AdvancedUnchargerBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AlloyFurnaceBlock.java b/src/main/java/me/jddev0/ep/block/AlloyFurnaceBlock.java index d00fa854c..8794c5861 100644 --- a/src/main/java/me/jddev0/ep/block/AlloyFurnaceBlock.java +++ b/src/main/java/me/jddev0/ep/block/AlloyFurnaceBlock.java @@ -17,7 +17,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -35,7 +35,7 @@ public class AlloyFurnaceBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(AlloyFurnaceBlock::new); public static final BooleanProperty LIT = Properties.LIT; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.get(LIT) ? 13 : 0; diff --git a/src/main/java/me/jddev0/ep/block/AssemblingMachineBlock.java b/src/main/java/me/jddev0/ep/block/AssemblingMachineBlock.java index 5ce603245..0accdedfb 100644 --- a/src/main/java/me/jddev0/ep/block/AssemblingMachineBlock.java +++ b/src/main/java/me/jddev0/ep/block/AssemblingMachineBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,13 +20,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class AssemblingMachineBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(AssemblingMachineBlock::new); public static final BooleanProperty POWERED = Properties.POWERED; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected AssemblingMachineBlock(AbstractBlock.Settings props) { super(props); @@ -94,8 +95,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AutoCrafterBlock.java b/src/main/java/me/jddev0/ep/block/AutoCrafterBlock.java index ff73c5ed3..766cfe2ef 100644 --- a/src/main/java/me/jddev0/ep/block/AutoCrafterBlock.java +++ b/src/main/java/me/jddev0/ep/block/AutoCrafterBlock.java @@ -23,6 +23,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -97,8 +98,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AutoPressMoldMakerBlock.java b/src/main/java/me/jddev0/ep/block/AutoPressMoldMakerBlock.java index dae800d71..2b6daaa5b 100644 --- a/src/main/java/me/jddev0/ep/block/AutoPressMoldMakerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AutoPressMoldMakerBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class AutoPressMoldMakerBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/AutoStonecutterBlock.java b/src/main/java/me/jddev0/ep/block/AutoStonecutterBlock.java index ac29a0f24..2ba629bcb 100644 --- a/src/main/java/me/jddev0/ep/block/AutoStonecutterBlock.java +++ b/src/main/java/me/jddev0/ep/block/AutoStonecutterBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class AutoStonecutterBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/BlockPlacerBlock.java b/src/main/java/me/jddev0/ep/block/BlockPlacerBlock.java index 5e46a32d6..3cff65a66 100644 --- a/src/main/java/me/jddev0/ep/block/BlockPlacerBlock.java +++ b/src/main/java/me/jddev0/ep/block/BlockPlacerBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,13 +20,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class BlockPlacerBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(BlockPlacerBlock::new); public static final BooleanProperty POWERED = Properties.POWERED; - public static final DirectionProperty FACING = Properties.FACING; + public static final EnumProperty FACING = Properties.FACING; protected BlockPlacerBlock(AbstractBlock.Settings props) { super(props); @@ -93,8 +94,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/CableBlock.java b/src/main/java/me/jddev0/ep/block/CableBlock.java index 579b7f0d1..87b5fe375 100644 --- a/src/main/java/me/jddev0/ep/block/CableBlock.java +++ b/src/main/java/me/jddev0/ep/block/CableBlock.java @@ -27,11 +27,14 @@ import net.minecraft.util.dynamic.Codecs; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.math.random.Random; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.World; -import net.minecraft.world.WorldAccess; +import net.minecraft.world.WorldView; +import net.minecraft.world.block.WireOrientation; +import net.minecraft.world.tick.ScheduledTickView; import org.jetbrains.annotations.Nullable; import team.reborn.energy.api.EnergyStorage; @@ -40,7 +43,9 @@ public class CableBlock extends BlockWithEntity implements Waterloggable { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> { return instance.group(Codecs.NON_EMPTY_STRING.xmap(Tier::valueOf, Tier::toString).fieldOf("tier"). - forGetter(CableBlock::getTier)).apply(instance, CableBlock::new); + forGetter(CableBlock::getTier), + Settings.CODEC.fieldOf("properties").forGetter(AbstractBlock::getSettings)). + apply(instance, CableBlock::new); }); public static final BooleanProperty UP = Properties.UP; @@ -61,8 +66,8 @@ public class CableBlock extends BlockWithEntity implements Waterloggable { private final Tier tier; - public CableBlock(Tier tier) { - super(tier.getProperties()); + public CableBlock(Tier tier, Settings props) { + super(props); this.setDefaultState(this.getStateManager().getDefaultState().with(UP, false).with(DOWN, false). with(NORTH, false).with(SOUTH, false).with(EAST, false).with(WEST, false). @@ -170,11 +175,12 @@ public FluidState getFluidState(BlockState state) { } @Override - public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState facingState, WorldAccess level, BlockPos selfPos, BlockPos facingPos) { + protected BlockState getStateForNeighborUpdate(BlockState state, WorldView level, ScheduledTickView tickView, BlockPos selfPos, Direction facing, + BlockPos facingPos, BlockState facingState, Random random) { if(state.get(WATERLOGGED)) - level.scheduleFluidTick(selfPos, Fluids.WATER, Fluids.WATER.getTickRate(level)); + tickView.scheduleFluidTick(selfPos, Fluids.WATER, Fluids.WATER.getTickRate(level)); - return super.getStateForNeighborUpdate(state, facing, facingState, level, selfPos, facingPos); + return super.getStateForNeighborUpdate(state, level, tickView, selfPos, facing, facingPos, facingState, random); } @Override @@ -183,8 +189,8 @@ protected void appendProperties(StateManager.Builder stateBui } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; @@ -204,7 +210,7 @@ public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, BlockEntity blockEntity = level.getBlockEntity(selfPos); - if(blockEntity == null || !(blockEntity instanceof CableBlockEntity)) + if(!(blockEntity instanceof CableBlockEntity)) return; CableBlockEntity.updateConnections(level, selfPos, newState, (CableBlockEntity)blockEntity); diff --git a/src/main/java/me/jddev0/ep/block/ChargerBlock.java b/src/main/java/me/jddev0/ep/block/ChargerBlock.java index d3cec805a..c963c1403 100644 --- a/src/main/java/me/jddev0/ep/block/ChargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/ChargerBlock.java @@ -22,6 +22,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -96,8 +97,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/CoalEngineBlock.java b/src/main/java/me/jddev0/ep/block/CoalEngineBlock.java index 8bbb5ae39..8e0d346d9 100644 --- a/src/main/java/me/jddev0/ep/block/CoalEngineBlock.java +++ b/src/main/java/me/jddev0/ep/block/CoalEngineBlock.java @@ -14,7 +14,7 @@ import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -24,6 +24,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.random.Random; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.function.ToIntFunction; @@ -33,7 +34,7 @@ public class CoalEngineBlock extends BlockWithEntity { public static final BooleanProperty POWERED = Properties.POWERED; public static final BooleanProperty LIT = Properties.LIT; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.get(LIT) ? 13 : 0; @@ -103,8 +104,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/CompressorBlock.java b/src/main/java/me/jddev0/ep/block/CompressorBlock.java index 8ec30c4c0..c905155c5 100644 --- a/src/main/java/me/jddev0/ep/block/CompressorBlock.java +++ b/src/main/java/me/jddev0/ep/block/CompressorBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class CompressorBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/CreativeFluidTankBlock.java b/src/main/java/me/jddev0/ep/block/CreativeFluidTankBlock.java index b21e6b33d..5d647e079 100644 --- a/src/main/java/me/jddev0/ep/block/CreativeFluidTankBlock.java +++ b/src/main/java/me/jddev0/ep/block/CreativeFluidTankBlock.java @@ -17,7 +17,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; import net.minecraft.util.ActionResult; @@ -35,7 +35,7 @@ public class CreativeFluidTankBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(CreativeFluidTankBlock::new); - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; public CreativeFluidTankBlock(Settings props) { super(props); diff --git a/src/main/java/me/jddev0/ep/block/CrusherBlock.java b/src/main/java/me/jddev0/ep/block/CrusherBlock.java index f86f14ef1..1dabd222a 100644 --- a/src/main/java/me/jddev0/ep/block/CrusherBlock.java +++ b/src/main/java/me/jddev0/ep/block/CrusherBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class CrusherBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/CrystalGrowthChamberBlock.java b/src/main/java/me/jddev0/ep/block/CrystalGrowthChamberBlock.java index 6a038f9ae..a12ea14a8 100644 --- a/src/main/java/me/jddev0/ep/block/CrystalGrowthChamberBlock.java +++ b/src/main/java/me/jddev0/ep/block/CrystalGrowthChamberBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class CrystalGrowthChamberBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/EPBlocks.java b/src/main/java/me/jddev0/ep/block/EPBlocks.java index b008017f8..9d8498059 100644 --- a/src/main/java/me/jddev0/ep/block/EPBlocks.java +++ b/src/main/java/me/jddev0/ep/block/EPBlocks.java @@ -1,6 +1,7 @@ package me.jddev0.ep.block; import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.item.EPItems; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.ExperienceDroppingBlock; @@ -10,558 +11,558 @@ import net.minecraft.item.Item; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.sound.BlockSoundGroup; +import net.minecraft.util.Identifier; import net.minecraft.util.math.intprovider.ConstantIntProvider; +import java.util.function.BiFunction; +import java.util.function.Function; + public final class EPBlocks { private EPBlocks() {} + public static Block registerBlock(String name, AbstractBlock.Settings props) { + return registerBlock(name, Block::new, props); + } + + public static T registerBlock(String name, Function factory, AbstractBlock.Settings props) { + Identifier blockId = EPAPI.id(name); + return Registry.register(Registries.BLOCK, blockId, factory.apply(props. + registryKey(RegistryKey.of(RegistryKeys.BLOCK, blockId)))); + } + + public static Item createBlockItem(String name, Block block) { + return createBlockItem(name, BlockItem::new, block, new Item.Settings()); + } + + public static Item createBlockItem(String name, BiFunction factory, Block block) { + return createBlockItem(name, props -> factory.apply(block, props), new Item.Settings()); + } + + public static Item createBlockItem(String name, BiFunction factory, Block block, Item.Settings props) { + return createBlockItem(name, p -> factory.apply(block, p), props); + } + + public static Item createBlockItem(String name, Function factory) { + return createBlockItem(name, factory, new Item.Settings()); + } + + public static Item createBlockItem(String name, Function factory, Item.Settings props) { + return EPItems.registerItem(name, factory, props); + } + public static final Block SILICON_BLOCK = registerBlock("silicon_block", - new Block(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item SILICON_BLOCK_ITEM = createBlockItem("silicon_block", SILICON_BLOCK); public static final Block TIN_BLOCK = registerBlock("tin_block", - new Block(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item TIN_BLOCK_ITEM = createBlockItem("tin_block", TIN_BLOCK); public static final Block SAWDUST_BLOCK = registerBlock("sawdust_block", - new Block(AbstractBlock.Settings.create().mapColor(MapColor.OAK_TAN). - requiresTool().strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD))); + AbstractBlock.Settings.create().mapColor(MapColor.OAK_TAN).requiresTool(). + strength(2.0f, 3.0f).sounds(BlockSoundGroup.WOOD)); public static final Item SAWDUST_BLOCK_ITEM = createBlockItem("sawdust_block", SAWDUST_BLOCK); public static final Block TIN_ORE = registerBlock("tin_ore", - new ExperienceDroppingBlock(ConstantIntProvider.create(0), AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY) - .instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.0f, 3.0f))); + props -> new ExperienceDroppingBlock(ConstantIntProvider.create(0), props), + AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). + instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.0f, 3.0f)); public static final Item TIN_ORE_ITEM = createBlockItem("tin_ore", TIN_ORE); public static final Block DEEPSLATE_TIN_ORE = registerBlock("deepslate_tin_ore", - new ExperienceDroppingBlock(ConstantIntProvider.create(0), AbstractBlock.Settings.create().mapColor(MapColor.DEEPSLATE_GRAY) - .requiresTool().strength(4.5f, 3.0f).sounds(BlockSoundGroup.DEEPSLATE))); + props -> new ExperienceDroppingBlock(ConstantIntProvider.create(0), props), + AbstractBlock.Settings.create().mapColor(MapColor.DEEPSLATE_GRAY) + .requiresTool().strength(4.5f, 3.0f).sounds(BlockSoundGroup.DEEPSLATE)); public static final Item DEEPSLATE_TIN_ORE_ITEM = createBlockItem("deepslate_tin_ore", DEEPSLATE_TIN_ORE); public static final Block RAW_TIN_BLOCK = registerBlock("raw_tin_block", - new Block(AbstractBlock.Settings.create().mapColor(MapColor.RAW_IRON_PINK) - .instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(5.0f, 6.0f))); + AbstractBlock.Settings.create().mapColor(MapColor.RAW_IRON_PINK) + .instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(5.0f, 6.0f)); public static final Item RAW_TIN_BLOCK_ITEM = createBlockItem("raw_tin_block", RAW_TIN_BLOCK); public static final ItemConveyorBeltBlock ITEM_CONVEYOR_BELT = registerBlock("item_conveyor_belt", - new ItemConveyorBeltBlock(AbstractBlock.Settings.create().noCollision(). - strength(2.5f, 3.0f).sounds(BlockSoundGroup.METAL))); + ItemConveyorBeltBlock::new, AbstractBlock.Settings.create().noCollision(). + strength(2.5f, 3.0f).sounds(BlockSoundGroup.METAL)); public static final Item ITEM_CONVEYOR_BELT_ITEM = createBlockItem("item_conveyor_belt", - new ItemConveyorBeltBlock.Item(ITEM_CONVEYOR_BELT, new Item.Settings())); + ItemConveyorBeltBlock.Item::new, ITEM_CONVEYOR_BELT); public static final Block ITEM_CONVEYOR_BELT_LOADER = registerBlock("item_conveyor_belt_loader", - new ItemConveyorBeltLoaderBlock(AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). - instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE))); + ItemConveyorBeltLoaderBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). + instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE)); public static final Item ITEM_CONVEYOR_BELT_LOADER_ITEM = createBlockItem("item_conveyor_belt_loader", ITEM_CONVEYOR_BELT_LOADER); public static final Block ITEM_CONVEYOR_BELT_SORTER = registerBlock("item_conveyor_belt_sorter", - new ItemConveyorBeltSorterBlock(AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). - instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE))); + ItemConveyorBeltSorterBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). + instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE)); public static final Item ITEM_CONVEYOR_BELT_SORTER_ITEM = createBlockItem("item_conveyor_belt_sorter", ITEM_CONVEYOR_BELT_SORTER); public static final Block ITEM_CONVEYOR_BELT_SWITCH = registerBlock("item_conveyor_belt_switch", - new ItemConveyorBeltSwitchBlock(AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). - instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE))); + ItemConveyorBeltSwitchBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). + instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE)); public static final Item ITEM_CONVEYOR_BELT_SWITCH_ITEM = createBlockItem("item_conveyor_belt_switch", ITEM_CONVEYOR_BELT_SWITCH); public static final Block ITEM_CONVEYOR_BELT_SPLITTER = registerBlock("item_conveyor_belt_splitter", - new ItemConveyorBeltSplitterBlock(AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). - instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE))); + ItemConveyorBeltSplitterBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). + instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE)); public static final Item ITEM_CONVEYOR_BELT_SPLITTER_ITEM = createBlockItem("item_conveyor_belt_splitter", ITEM_CONVEYOR_BELT_SPLITTER); public static final Block ITEM_CONVEYOR_BELT_MERGER = registerBlock("item_conveyor_belt_merger", - new ItemConveyorBeltMergerBlock(AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). - instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE))); + ItemConveyorBeltMergerBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.STONE_GRAY). + instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(3.5f).sounds(BlockSoundGroup.STONE)); public static final Item ITEM_CONVEYOR_BELT_MERGER_ITEM = createBlockItem("item_conveyor_belt_merger", ITEM_CONVEYOR_BELT_MERGER); public static final FluidPipeBlock IRON_FLUID_PIPE = registerBlock("fluid_pipe", - new FluidPipeBlock(FluidPipeBlock.Tier.IRON)); + props -> new FluidPipeBlock(FluidPipeBlock.Tier.IRON, props), FluidPipeBlock.Tier.IRON.getProperties()); public static final Item IRON_FLUID_PIPE_ITEM = createBlockItem("fluid_pipe", - new FluidPipeBlock.Item(IRON_FLUID_PIPE, new Item.Settings(), FluidPipeBlock.Tier.IRON)); + props -> new FluidPipeBlock.Item(IRON_FLUID_PIPE, props, FluidPipeBlock.Tier.IRON)); public static final FluidPipeBlock GOLDEN_FLUID_PIPE = registerBlock("golden_fluid_pipe", - new FluidPipeBlock(FluidPipeBlock.Tier.GOLDEN)); + props -> new FluidPipeBlock(FluidPipeBlock.Tier.GOLDEN, props), FluidPipeBlock.Tier.GOLDEN.getProperties()); public static final Item GOLDEN_FLUID_PIPE_ITEM = createBlockItem("golden_fluid_pipe", - new FluidPipeBlock.Item(GOLDEN_FLUID_PIPE, new Item.Settings(), FluidPipeBlock.Tier.GOLDEN)); + props -> new FluidPipeBlock.Item(GOLDEN_FLUID_PIPE, props, FluidPipeBlock.Tier.GOLDEN)); public static final FluidTankBlock FLUID_TANK_SMALL = registerBlock("fluid_tank_small", - new FluidTankBlock(FluidTankBlock.Tier.SMALL)); + props -> new FluidTankBlock(FluidTankBlock.Tier.SMALL, props), FluidTankBlock.Tier.SMALL.getProperties()); public static final Item FLUID_TANK_SMALL_ITEM = createBlockItem("fluid_tank_small", - new FluidTankBlock.Item(FLUID_TANK_SMALL, new Item.Settings(), FluidTankBlock.Tier.SMALL)); + props -> new FluidTankBlock.Item(FLUID_TANK_SMALL, props, FluidTankBlock.Tier.SMALL)); public static final FluidTankBlock FLUID_TANK_MEDIUM = registerBlock("fluid_tank_medium", - new FluidTankBlock(FluidTankBlock.Tier.MEDIUM)); + props -> new FluidTankBlock(FluidTankBlock.Tier.MEDIUM, props), FluidTankBlock.Tier.MEDIUM.getProperties()); public static final Item FLUID_TANK_MEDIUM_ITEM = createBlockItem("fluid_tank_medium", - new FluidTankBlock.Item(FLUID_TANK_MEDIUM, new Item.Settings(), FluidTankBlock.Tier.MEDIUM)); + props -> new FluidTankBlock.Item(FLUID_TANK_MEDIUM, props, FluidTankBlock.Tier.MEDIUM)); public static final FluidTankBlock FLUID_TANK_LARGE = registerBlock("fluid_tank_large", - new FluidTankBlock(FluidTankBlock.Tier.LARGE)); + props -> new FluidTankBlock(FluidTankBlock.Tier.LARGE, props), FluidTankBlock.Tier.LARGE.getProperties()); public static final Item FLUID_TANK_LARGE_ITEM = createBlockItem("fluid_tank_large", - new FluidTankBlock.Item(FLUID_TANK_LARGE, new Item.Settings(), FluidTankBlock.Tier.LARGE)); + props -> new FluidTankBlock.Item(FLUID_TANK_LARGE, props, FluidTankBlock.Tier.LARGE)); public static final CreativeFluidTankBlock CREATIVE_FLUID_TANK = registerBlock("creative_fluid_tank", - new CreativeFluidTankBlock(AbstractBlock.Settings.create().mapColor(MapColor.PURPLE). - requiresTool().strength(-1.f, 3600000.f).dropsNothing())); + CreativeFluidTankBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.PURPLE). + requiresTool().strength(-1.f, 3600000.f).dropsNothing()); public static final Item CREATIVE_FLUID_TANK_ITEM = createBlockItem("creative_fluid_tank", - new CreativeFluidTankBlock.Item(CREATIVE_FLUID_TANK, new Item.Settings())); + CreativeFluidTankBlock.Item::new, CREATIVE_FLUID_TANK); private static Item createCableBlockItem(String name, CableBlock block) { - return Registry.register(Registries.ITEM, EPAPI.id(name), - new CableBlock.Item(block, new Item.Settings(), block.getTier())); + return createBlockItem(name, props -> new CableBlock.Item(block, props, block.getTier())); } public static final CableBlock TIN_CABLE = registerBlock("tin_cable", - new CableBlock(CableBlock.Tier.TIER_TIN)); + props -> new CableBlock(CableBlock.Tier.TIER_TIN, props), CableBlock.Tier.TIER_TIN.getProperties()); public static final Item TIN_CABLE_ITEM = createCableBlockItem("tin_cable", TIN_CABLE); public static final CableBlock COPPER_CABLE = registerBlock("copper_cable", - new CableBlock(CableBlock.Tier.TIER_COPPER)); + props -> new CableBlock(CableBlock.Tier.TIER_COPPER, props), CableBlock.Tier.TIER_COPPER.getProperties()); public static final Item COPPER_CABLE_ITEM = createCableBlockItem("copper_cable", COPPER_CABLE); public static final CableBlock GOLD_CABLE = registerBlock("gold_cable", - new CableBlock(CableBlock.Tier.TIER_GOLD)); + props -> new CableBlock(CableBlock.Tier.TIER_GOLD, props), CableBlock.Tier.TIER_GOLD.getProperties()); public static final Item GOLD_CABLE_ITEM = createCableBlockItem("gold_cable", GOLD_CABLE); public static final CableBlock ENERGIZED_COPPER_CABLE = registerBlock("energized_copper_cable", - new CableBlock(CableBlock.Tier.TIER_ENERGIZED_COPPER)); + props -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_COPPER, props), CableBlock.Tier.TIER_ENERGIZED_COPPER.getProperties()); public static final Item ENERGIZED_COPPER_CABLE_ITEM = createCableBlockItem("energized_copper_cable", ENERGIZED_COPPER_CABLE); public static final CableBlock ENERGIZED_GOLD_CABLE = registerBlock("energized_gold_cable", - new CableBlock(CableBlock.Tier.TIER_ENERGIZED_GOLD)); + props -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_GOLD, props), CableBlock.Tier.TIER_ENERGIZED_GOLD.getProperties()); public static final Item ENERGIZED_GOLD_CABLE_ITEM = createCableBlockItem("energized_gold_cable", ENERGIZED_GOLD_CABLE); public static final CableBlock ENERGIZED_CRYSTAL_MATRIX_CABLE = registerBlock("energized_crystal_matrix_cable", - new CableBlock(CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX)); + props -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX, props), CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX.getProperties()); public static final Item ENERGIZED_CRYSTAL_MATRIX_CABLE_ITEM = createCableBlockItem("energized_crystal_matrix_cable", ENERGIZED_CRYSTAL_MATRIX_CABLE); private static Item createTransformerBlockItem(String name, TransformerBlock block) { - return Registry.register(Registries.ITEM, EPAPI.id(name), - new TransformerBlock.Item(block, new Item.Settings(), block.getTier(), block.getTransformerType())); + return createBlockItem(name, props -> new TransformerBlock.Item(block, props, block.getTier(), block.getTransformerType())); } public static final TransformerBlock LV_TRANSFORMER_1_TO_N = registerBlock("lv_transformer_1_to_n", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_1_TO_N)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_1_TO_N), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item LV_TRANSFORMER_1_TO_N_ITEM = createTransformerBlockItem("lv_transformer_1_to_n", LV_TRANSFORMER_1_TO_N); public static final TransformerBlock LV_TRANSFORMER_3_TO_3 = registerBlock("lv_transformer_3_to_3", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_3_TO_3)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_3_TO_3), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item LV_TRANSFORMER_3_TO_3_ITEM = createTransformerBlockItem("lv_transformer_3_to_3", LV_TRANSFORMER_3_TO_3); public static final TransformerBlock LV_TRANSFORMER_N_TO_1 = registerBlock("lv_transformer_n_to_1", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_N_TO_1)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_N_TO_1), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item LV_TRANSFORMER_N_TO_1_ITEM = createTransformerBlockItem("lv_transformer_n_to_1", LV_TRANSFORMER_N_TO_1); public static final TransformerBlock MV_TRANSFORMER_1_TO_N = registerBlock("transformer_1_to_n", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_1_TO_N)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_1_TO_N), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item MV_TRANSFORMER_1_TO_N_ITEM = createTransformerBlockItem("transformer_1_to_n", MV_TRANSFORMER_1_TO_N); public static final TransformerBlock MV_TRANSFORMER_3_TO_3 = registerBlock("transformer_3_to_3", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_3_TO_3)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_3_TO_3), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item MV_TRANSFORMER_3_TO_3_ITEM = createTransformerBlockItem("transformer_3_to_3", MV_TRANSFORMER_3_TO_3); public static final TransformerBlock MV_TRANSFORMER_N_TO_1 = registerBlock("transformer_n_to_1", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_N_TO_1)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_N_TO_1), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item MV_TRANSFORMER_N_TO_1_ITEM = createTransformerBlockItem("transformer_n_to_1", MV_TRANSFORMER_N_TO_1); public static final TransformerBlock HV_TRANSFORMER_1_TO_N = registerBlock("hv_transformer_1_to_n", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_1_TO_N)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_1_TO_N), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item HV_TRANSFORMER_1_TO_N_ITEM = createTransformerBlockItem("hv_transformer_1_to_n", HV_TRANSFORMER_1_TO_N); public static final TransformerBlock HV_TRANSFORMER_3_TO_3 = registerBlock("hv_transformer_3_to_3", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_3_TO_3)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_3_TO_3), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item HV_TRANSFORMER_3_TO_3_ITEM = createTransformerBlockItem("hv_transformer_3_to_3", HV_TRANSFORMER_3_TO_3); public static final TransformerBlock HV_TRANSFORMER_N_TO_1 = registerBlock("hv_transformer_n_to_1", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_N_TO_1)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_N_TO_1), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item HV_TRANSFORMER_N_TO_1_ITEM = createTransformerBlockItem("hv_transformer_n_to_1", HV_TRANSFORMER_N_TO_1); public static final TransformerBlock EHV_TRANSFORMER_1_TO_N = registerBlock("ehv_transformer_1_to_n", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_1_TO_N)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_1_TO_N), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item EHV_TRANSFORMER_1_TO_N_ITEM = createTransformerBlockItem("ehv_transformer_1_to_n", EHV_TRANSFORMER_1_TO_N); public static final TransformerBlock EHV_TRANSFORMER_3_TO_3 = registerBlock("ehv_transformer_3_to_3", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_3_TO_3)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_3_TO_3), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item EHV_TRANSFORMER_3_TO_3_ITEM = createTransformerBlockItem("ehv_transformer_3_to_3", EHV_TRANSFORMER_3_TO_3); public static final TransformerBlock EHV_TRANSFORMER_N_TO_1 = registerBlock("ehv_transformer_n_to_1", - new TransformerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_N_TO_1)); + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_N_TO_1), + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item EHV_TRANSFORMER_N_TO_1_ITEM = createTransformerBlockItem("ehv_transformer_n_to_1", EHV_TRANSFORMER_N_TO_1); public static final Block PRESS_MOLD_MAKER = registerBlock("press_mold_maker", - new PressMoldMakerBlock(AbstractBlock.Settings.create().mapColor(MapColor.RED). - instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(2.0f, 6.0f).sounds(BlockSoundGroup.STONE))); + PressMoldMakerBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.RED). + instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(2.0f, 6.0f).sounds(BlockSoundGroup.STONE)); public static final Item PRESS_MOLD_MAKER_ITEM = createBlockItem("press_mold_maker", PRESS_MOLD_MAKER); public static final Block ALLOY_FURNACE = registerBlock("alloy_furnace", - new AlloyFurnaceBlock(AbstractBlock.Settings.create().mapColor(MapColor.RED). + AlloyFurnaceBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.RED). instrument(NoteBlockInstrument.BASEDRUM).requiresTool().strength(2.0f, 6.0f).sounds(BlockSoundGroup.STONE). - luminance(AlloyFurnaceBlock.LIGHT_EMISSION))); + luminance(AlloyFurnaceBlock.LIGHT_EMISSION)); public static final Item ALLOY_FURNACE_ITEM = createBlockItem("alloy_furnace", ALLOY_FURNACE); public static final Block AUTO_CRAFTER = registerBlock("auto_crafter", - new AutoCrafterBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AutoCrafterBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item AUTO_CRAFTER_ITEM = createBlockItem("auto_crafter", - new AutoCrafterBlock.Item(AUTO_CRAFTER, new Item.Settings())); + AutoCrafterBlock.Item::new, AUTO_CRAFTER); public static final Block ADVANCED_AUTO_CRAFTER = registerBlock("advanced_auto_crafter", - new AdvancedAutoCrafterBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AdvancedAutoCrafterBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_AUTO_CRAFTER_ITEM = createBlockItem("advanced_auto_crafter", - new AdvancedAutoCrafterBlock.Item(ADVANCED_AUTO_CRAFTER, new Item.Settings())); + AdvancedAutoCrafterBlock.Item::new, ADVANCED_AUTO_CRAFTER); public static final Block BATTERY_BOX = registerBlock("battery_box", - new BatteryBoxBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + BatteryBoxBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item BATTERY_BOX_ITEM = createBlockItem("battery_box", - new BatteryBoxBlock.Item(BATTERY_BOX, new Item.Settings())); + BatteryBoxBlock.Item::new, BATTERY_BOX); public static final Block ADVANCED_BATTERY_BOX = registerBlock("advanced_battery_box", - new AdvancedBatteryBoxBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AdvancedBatteryBoxBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_BATTERY_BOX_ITEM = createBlockItem("advanced_battery_box", - new AdvancedBatteryBoxBlock.Item(ADVANCED_BATTERY_BOX, new Item.Settings())); + AdvancedBatteryBoxBlock.Item::new, ADVANCED_BATTERY_BOX); public static final Block CREATIVE_BATTERY_BOX = registerBlock("creative_battery_box", - new CreativeBatteryBoxBlock(AbstractBlock.Settings.create().mapColor(MapColor.PURPLE). - requiresTool().strength(-1.f, 3600000.f).dropsNothing())); + CreativeBatteryBoxBlock::new, AbstractBlock.Settings.create().mapColor(MapColor.PURPLE). + requiresTool().strength(-1.f, 3600000.f).dropsNothing()); public static final Item CREATIVE_BATTERY_BOX_ITEM = createBlockItem("creative_battery_box", - new CreativeBatteryBoxBlock.Item(CREATIVE_BATTERY_BOX, new Item.Settings())); + CreativeBatteryBoxBlock.Item::new, CREATIVE_BATTERY_BOX); public static final Block CRUSHER = registerBlock("crusher", - new CrusherBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + CrusherBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item CRUSHER_ITEM = createBlockItem("crusher", CRUSHER); public static final Block ADVANCED_CRUSHER = registerBlock("advanced_crusher", - new AdvancedCrusherBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AdvancedCrusherBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_CRUSHER_ITEM = createBlockItem("advanced_crusher", - new AdvancedCrusherBlock.Item(ADVANCED_CRUSHER, new Item.Settings())); + AdvancedCrusherBlock.Item::new, ADVANCED_CRUSHER); public static final Block PULVERIZER = registerBlock("pulverizer", - new PulverizerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + PulverizerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item PULVERIZER_ITEM = createBlockItem("pulverizer", PULVERIZER); public static final Block ADVANCED_PULVERIZER = registerBlock("advanced_pulverizer", - new AdvancedPulverizerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AdvancedPulverizerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_PULVERIZER_ITEM = createBlockItem("advanced_pulverizer", - new AdvancedPulverizerBlock.Item(ADVANCED_PULVERIZER, new Item.Settings())); + AdvancedPulverizerBlock.Item::new, ADVANCED_PULVERIZER); public static final Block SAWMILL = registerBlock("sawmill", - new SawmillBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + SawmillBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item SAWMILL_ITEM = createBlockItem("sawmill", SAWMILL); public static final Block COMPRESSOR = registerBlock("compressor", - new CompressorBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + CompressorBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item COMPRESSOR_ITEM = createBlockItem("compressor", COMPRESSOR); public static final Block METAL_PRESS = registerBlock("metal_press", - new MetalPressBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + MetalPressBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item METAL_PRESS_ITEM = createBlockItem("metal_press", - new MetalPressBlock.Item(METAL_PRESS, new Item.Settings())); + MetalPressBlock.Item::new, METAL_PRESS); public static final Block AUTO_PRESS_MOLD_MAKER = registerBlock("auto_press_mold_maker", - new AutoPressMoldMakerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AutoPressMoldMakerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item AUTO_PRESS_MOLD_MAKER_ITEM = createBlockItem("auto_press_mold_maker", AUTO_PRESS_MOLD_MAKER); public static final Block AUTO_STONECUTTER = registerBlock("auto_stonecutter", - new AutoStonecutterBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AutoStonecutterBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item AUTO_STONECUTTER_ITEM = createBlockItem("auto_stonecutter", AUTO_STONECUTTER); public static final Block PLANT_GROWTH_CHAMBER = registerBlock("plant_growth_chamber", - new PlantGrowthChamberBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + PlantGrowthChamberBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item PLANT_GROWTH_CHAMBER_ITEM = createBlockItem("plant_growth_chamber", PLANT_GROWTH_CHAMBER); public static final Block BLOCK_PLACER = registerBlock("block_placer", - new BlockPlacerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + BlockPlacerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item BLOCK_PLACER_ITEM = createBlockItem("block_placer", BLOCK_PLACER); public static final Block ASSEMBLING_MACHINE = registerBlock("assembling_machine", - new AssemblingMachineBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AssemblingMachineBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ASSEMBLING_MACHINE_ITEM = createBlockItem("assembling_machine", ASSEMBLING_MACHINE); public static final Block INDUCTION_SMELTER = registerBlock("induction_smelter", - new InductionSmelterBlock(AbstractBlock.Settings.create(). + InductionSmelterBlock::new, AbstractBlock.Settings.create(). requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL). - luminance(InductionSmelterBlock.LIGHT_EMISSION))); + luminance(InductionSmelterBlock.LIGHT_EMISSION)); public static final Item INDUCTION_SMELTER_ITEM = createBlockItem("induction_smelter", INDUCTION_SMELTER); public static final Block FLUID_FILLER = registerBlock("fluid_filler", - new FluidFillerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + FluidFillerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item FLUID_FILLER_ITEM = createBlockItem("fluid_filler", FLUID_FILLER); public static final Block STONE_SOLIDIFIER = registerBlock("stone_solidifier", - new StoneSolidifierBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + StoneSolidifierBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item STONE_SOLIDIFIER_ITEM = createBlockItem("stone_solidifier", STONE_SOLIDIFIER); public static final Block FILTRATION_PLANT = registerBlock("filtration_plant", - new FiltrationPlantBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + FiltrationPlantBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item FILTRATION_PLANT_ITEM = createBlockItem("filtration_plant", - new FiltrationPlantBlock.Item(FILTRATION_PLANT, new Item.Settings())); + FiltrationPlantBlock.Item::new, FILTRATION_PLANT); public static final Block FLUID_TRANSPOSER = registerBlock("fluid_transposer", - new FluidTransposerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + FluidTransposerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item FLUID_TRANSPOSER_ITEM = createBlockItem("fluid_transposer", FLUID_TRANSPOSER); public static final Block FLUID_DRAINER = registerBlock("fluid_drainer", - new FluidDrainerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + FluidDrainerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item FLUID_DRAINER_ITEM = createBlockItem("fluid_drainer", FLUID_DRAINER); public static final Block FLUID_PUMP = registerBlock("fluid_pump", - new FluidPumpBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + FluidPumpBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item FLUID_PUMP_ITEM = createBlockItem("fluid_pump", FLUID_PUMP); public static final Block DRAIN = registerBlock("drain", - new DrainBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + DrainBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item DRAIN_ITEM = createBlockItem("drain", - new DrainBlock.Item(DRAIN, new Item.Settings())); + DrainBlock.Item::new, DRAIN); public static final Block CHARGER = registerBlock("charger", - new ChargerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + ChargerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item CHARGER_ITEM = createBlockItem("charger", - new ChargerBlock.Item(CHARGER, new Item.Settings())); + ChargerBlock.Item::new, CHARGER); public static final Block ADVANCED_CHARGER = registerBlock("advanced_charger", - new AdvancedChargerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AdvancedChargerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_CHARGER_ITEM = createBlockItem("advanced_charger", - new AdvancedChargerBlock.Item(ADVANCED_CHARGER, new Item.Settings())); + AdvancedChargerBlock.Item::new, ADVANCED_CHARGER); public static final Block UNCHARGER = registerBlock("uncharger", - new UnchargerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + UnchargerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item UNCHARGER_ITEM = createBlockItem("uncharger", UNCHARGER); public static final Block ADVANCED_UNCHARGER = registerBlock("advanced_uncharger", - new AdvancedUnchargerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AdvancedUnchargerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_UNCHARGER_ITEM = createBlockItem("advanced_uncharger", ADVANCED_UNCHARGER); public static final Block MINECART_CHARGER = registerBlock("minecart_charger", - new MinecartChargerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + MinecartChargerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item MINECART_CHARGER_ITEM = createBlockItem("minecart_charger", - new MinecartChargerBlock.Item(MINECART_CHARGER, new Item.Settings())); + MinecartChargerBlock.Item::new, MINECART_CHARGER); public static final Block ADVANCED_MINECART_CHARGER = registerBlock("advanced_minecart_charger", - new AdvancedMinecartChargerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AdvancedMinecartChargerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_MINECART_CHARGER_ITEM = createBlockItem("advanced_minecart_charger", - new AdvancedMinecartChargerBlock.Item(ADVANCED_MINECART_CHARGER, new Item.Settings())); + AdvancedMinecartChargerBlock.Item::new, ADVANCED_MINECART_CHARGER); public static final Block MINECART_UNCHARGER = registerBlock("minecart_uncharger", - new MinecartUnchargerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + MinecartUnchargerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item MINECART_UNCHARGER_ITEM = createBlockItem("minecart_uncharger", - new MinecartUnchargerBlock.Item(MINECART_UNCHARGER, new Item.Settings())); + MinecartUnchargerBlock.Item::new, MINECART_UNCHARGER); public static final Block ADVANCED_MINECART_UNCHARGER = registerBlock("advanced_minecart_uncharger", - new AdvancedMinecartUnchargerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AdvancedMinecartUnchargerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_MINECART_UNCHARGER_ITEM = createBlockItem("advanced_minecart_uncharger", - new AdvancedMinecartUnchargerBlock.Item(ADVANCED_MINECART_UNCHARGER, new Item.Settings())); + AdvancedMinecartUnchargerBlock.Item::new, ADVANCED_MINECART_UNCHARGER); private static Item createSolarPanelBlockItem(String name, SolarPanelBlock block) { - return Registry.register(Registries.ITEM, EPAPI.id(name), - new SolarPanelBlock.Item(block, new Item.Settings(), block.getTier())); + return createBlockItem(name, props -> new SolarPanelBlock.Item(block, props, block.getTier())); } public static final SolarPanelBlock SOLAR_PANEL_1 = registerBlock("solar_panel_1", - new SolarPanelBlock(SolarPanelBlock.Tier.TIER_1)); + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_1, props), SolarPanelBlock.Tier.TIER_1.getProperties()); public static final Item SOLAR_PANEL_ITEM_1 = createSolarPanelBlockItem("solar_panel_1", SOLAR_PANEL_1); public static final SolarPanelBlock SOLAR_PANEL_2 = registerBlock("solar_panel_2", - new SolarPanelBlock(SolarPanelBlock.Tier.TIER_2)); + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_2, props), SolarPanelBlock.Tier.TIER_2.getProperties()); public static final Item SOLAR_PANEL_ITEM_2 = createSolarPanelBlockItem("solar_panel_2", SOLAR_PANEL_2); public static final SolarPanelBlock SOLAR_PANEL_3 = registerBlock("solar_panel_3", - new SolarPanelBlock(SolarPanelBlock.Tier.TIER_3)); + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_3, props), SolarPanelBlock.Tier.TIER_3.getProperties()); public static final Item SOLAR_PANEL_ITEM_3 = createSolarPanelBlockItem("solar_panel_3", SOLAR_PANEL_3); public static final SolarPanelBlock SOLAR_PANEL_4 = registerBlock("solar_panel_4", - new SolarPanelBlock(SolarPanelBlock.Tier.TIER_4)); + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_4, props), SolarPanelBlock.Tier.TIER_4.getProperties()); public static final Item SOLAR_PANEL_ITEM_4 = createSolarPanelBlockItem("solar_panel_4", SOLAR_PANEL_4); public static final SolarPanelBlock SOLAR_PANEL_5 = registerBlock("solar_panel_5", - new SolarPanelBlock(SolarPanelBlock.Tier.TIER_5)); + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_5, props), SolarPanelBlock.Tier.TIER_5.getProperties()); public static final Item SOLAR_PANEL_ITEM_5 = createSolarPanelBlockItem("solar_panel_5", SOLAR_PANEL_5); public static final SolarPanelBlock SOLAR_PANEL_6 = registerBlock("solar_panel_6", - new SolarPanelBlock(SolarPanelBlock.Tier.TIER_6)); + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_6, props), SolarPanelBlock.Tier.TIER_6.getProperties()); public static final Item SOLAR_PANEL_ITEM_6 = createSolarPanelBlockItem("solar_panel_6", SOLAR_PANEL_6); public static final Block COAL_ENGINE = registerBlock("coal_engine", - new CoalEngineBlock(AbstractBlock.Settings.create(). + CoalEngineBlock::new, AbstractBlock.Settings.create(). requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL). - luminance(CoalEngineBlock.LIGHT_EMISSION))); + luminance(CoalEngineBlock.LIGHT_EMISSION)); public static final Item COAL_ENGINE_ITEM = createBlockItem("coal_engine", COAL_ENGINE); public static final Block HEAT_GENERATOR = registerBlock("heat_generator", - new HeatGeneratorBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + HeatGeneratorBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item HEAT_GENERATOR_ITEM = createBlockItem("heat_generator", HEAT_GENERATOR); public static final Block THERMAL_GENERATOR = registerBlock("thermal_generator", - new ThermalGeneratorBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + ThermalGeneratorBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item THERMAL_GENERATOR_ITEM = createBlockItem("thermal_generator", THERMAL_GENERATOR); public static final Block POWERED_LAMP = registerBlock("powered_lamp", - new PoweredLampBlock(AbstractBlock.Settings.create(). + PoweredLampBlock::new, AbstractBlock.Settings.create(). strength(.3f).sounds(BlockSoundGroup.GLASS). - luminance(PoweredLampBlock.LIGHT_EMISSION))); + luminance(PoweredLampBlock.LIGHT_EMISSION)); public static final Item POWERED_LAMP_ITEM = createBlockItem("powered_lamp", POWERED_LAMP); public static final Block POWERED_FURNACE = registerBlock("powered_furnace", - new PoweredFurnaceBlock(AbstractBlock.Settings.create(). + PoweredFurnaceBlock::new, AbstractBlock.Settings.create(). requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL). - luminance(PoweredFurnaceBlock.LIGHT_EMISSION))); + luminance(PoweredFurnaceBlock.LIGHT_EMISSION)); public static final Item POWERED_FURNACE_ITEM = createBlockItem("powered_furnace", POWERED_FURNACE); public static final Block ADVANCED_POWERED_FURNACE = registerBlock("advanced_powered_furnace", - new AdvancedPoweredFurnaceBlock(AbstractBlock.Settings.create(). + AdvancedPoweredFurnaceBlock::new, AbstractBlock.Settings.create(). requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL). - luminance(AdvancedPoweredFurnaceBlock.LIGHT_EMISSION))); + luminance(AdvancedPoweredFurnaceBlock.LIGHT_EMISSION)); public static final Item ADVANCED_POWERED_FURNACE_ITEM = createBlockItem("advanced_powered_furnace", ADVANCED_POWERED_FURNACE); public static final Block LIGHTNING_GENERATOR = registerBlock("lightning_generator", - new LightningGeneratorBlock(AbstractBlock.Settings.create(). + LightningGeneratorBlock::new, AbstractBlock.Settings.create(). requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL). - luminance(LightningGeneratorBlock.LIGHT_EMISSION))); + luminance(LightningGeneratorBlock.LIGHT_EMISSION)); public static final Item LIGHTNING_GENERATOR_ITEM = createBlockItem("lightning_generator", - new LightningGeneratorBlock.Item(LIGHTNING_GENERATOR, new Item.Settings())); + LightningGeneratorBlock.Item::new, LIGHTNING_GENERATOR); public static final Block ENERGIZER = registerBlock("energizer", - new EnergizerBlock(AbstractBlock.Settings.create(). + EnergizerBlock::new, AbstractBlock.Settings.create(). requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL). - luminance(EnergizerBlock.LIGHT_EMISSION))); + luminance(EnergizerBlock.LIGHT_EMISSION)); public static final Item ENERGIZER_ITEM = createBlockItem("energizer", ENERGIZER); public static final Block CHARGING_STATION = registerBlock("charging_station", - new ChargingStationBlock(AbstractBlock.Settings.create(). + ChargingStationBlock::new, AbstractBlock.Settings.create(). requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL). - luminance(ChargingStationBlock.LIGHT_EMISSION))); + luminance(ChargingStationBlock.LIGHT_EMISSION)); public static final Item CHARGING_STATION_ITEM = createBlockItem("charging_station", - new ChargingStationBlock.Item(CHARGING_STATION, new Item.Settings())); + ChargingStationBlock.Item::new, CHARGING_STATION); public static final Block CRYSTAL_GROWTH_CHAMBER = registerBlock("crystal_growth_chamber", - new CrystalGrowthChamberBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + CrystalGrowthChamberBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item CRYSTAL_GROWTH_CHAMBER_ITEM = createBlockItem("crystal_growth_chamber", CRYSTAL_GROWTH_CHAMBER); public static final Block WEATHER_CONTROLLER = registerBlock("weather_controller", - new WeatherControllerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + WeatherControllerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item WEATHER_CONTROLLER_ITEM = createBlockItem("weather_controller", WEATHER_CONTROLLER); public static final Block TIME_CONTROLLER = registerBlock("time_controller", - new TimeControllerBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + TimeControllerBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item TIME_CONTROLLER_ITEM = createBlockItem("time_controller", TIME_CONTROLLER); public static final Block TELEPORTER = registerBlock("teleporter", - new TeleporterBlock(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + TeleporterBlock::new, AbstractBlock.Settings.create(). + requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item TELEPORTER_ITEM = createBlockItem("teleporter", - new TeleporterBlock.Item(TELEPORTER, new Item.Settings())); + TeleporterBlock.Item::new, TELEPORTER); public static final Block BASIC_MACHINE_FRAME = registerBlock("basic_machine_frame", - new Block(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item BASIC_MACHINE_FRAME_ITEM = createBlockItem("basic_machine_frame", BASIC_MACHINE_FRAME); public static final Block HARDENED_MACHINE_FRAME = registerBlock("hardened_machine_frame", - new Block(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item HARDENED_MACHINE_FRAME_ITEM = createBlockItem("hardened_machine_frame", HARDENED_MACHINE_FRAME); public static final Block ADVANCED_MACHINE_FRAME = registerBlock("advanced_machine_frame", - new Block(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item ADVANCED_MACHINE_FRAME_ITEM = createBlockItem("advanced_machine_frame", ADVANCED_MACHINE_FRAME); public static final Block REINFORCED_ADVANCED_MACHINE_FRAME = registerBlock("reinforced_advanced_machine_frame", - new Block(AbstractBlock.Settings.create(). - requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL))); + AbstractBlock.Settings.create().requiresTool().strength(5.0f, 6.0f).sounds(BlockSoundGroup.METAL)); public static final Item REINFORCED_ADVANCED_MACHINE_FRAME_ITEM = createBlockItem("reinforced_advanced_machine_frame", REINFORCED_ADVANCED_MACHINE_FRAME); - private static T registerBlock(String name, T block) { - return Registry.register(Registries.BLOCK, EPAPI.id(name), block); - } - - private static Item createBlockItem(String name, Item item) { - return Registry.register(Registries.ITEM, EPAPI.id(name), item); - } - - private static Item createBlockItem(String name, Block block, Item.Settings props) { - return Registry.register(Registries.ITEM, EPAPI.id(name), - new BlockItem(block, props)); - } - - private static Item createBlockItem(String name, Block block) { - return createBlockItem(name, block, new Item.Settings()); - } - public static void register() { } diff --git a/src/main/java/me/jddev0/ep/block/EnergizerBlock.java b/src/main/java/me/jddev0/ep/block/EnergizerBlock.java index 31d4191c9..3a781a047 100644 --- a/src/main/java/me/jddev0/ep/block/EnergizerBlock.java +++ b/src/main/java/me/jddev0/ep/block/EnergizerBlock.java @@ -12,7 +12,7 @@ import net.minecraft.particle.ParticleTypes; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -22,6 +22,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.random.Random; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.function.ToIntFunction; @@ -32,7 +33,7 @@ public class EnergizerBlock extends BlockWithEntity { public static final BooleanProperty POWERED = Properties.POWERED; public static final BooleanProperty LIT = Properties.LIT; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.get(LIT) ? 8 : 0; @@ -102,8 +103,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/FiltrationPlantBlock.java b/src/main/java/me/jddev0/ep/block/FiltrationPlantBlock.java index d1e7b7ba6..848ce166d 100644 --- a/src/main/java/me/jddev0/ep/block/FiltrationPlantBlock.java +++ b/src/main/java/me/jddev0/ep/block/FiltrationPlantBlock.java @@ -22,6 +22,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -96,8 +97,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/FluidDrainerBlock.java b/src/main/java/me/jddev0/ep/block/FluidDrainerBlock.java index f78dbc561..bd3f717d8 100644 --- a/src/main/java/me/jddev0/ep/block/FluidDrainerBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidDrainerBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class FluidDrainerBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/FluidFillerBlock.java b/src/main/java/me/jddev0/ep/block/FluidFillerBlock.java index b1e81b8cb..77967e2ef 100644 --- a/src/main/java/me/jddev0/ep/block/FluidFillerBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidFillerBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class FluidFillerBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/FluidPipeBlock.java b/src/main/java/me/jddev0/ep/block/FluidPipeBlock.java index f0106a9a6..289364921 100644 --- a/src/main/java/me/jddev0/ep/block/FluidPipeBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidPipeBlock.java @@ -35,12 +35,15 @@ import net.minecraft.util.dynamic.Codecs; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; +import net.minecraft.util.math.random.Random; import net.minecraft.util.shape.VoxelShape; import net.minecraft.util.shape.VoxelShapes; import net.minecraft.world.BlockView; import net.minecraft.world.World; -import net.minecraft.world.WorldAccess; import me.jddev0.ep.config.ModConfigs; +import net.minecraft.world.WorldView; +import net.minecraft.world.block.WireOrientation; +import net.minecraft.world.tick.ScheduledTickView; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -49,7 +52,9 @@ public class FluidPipeBlock extends BlockWithEntity implements Waterloggable, WrenchConfigurable { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> { return instance.group(Codecs.NON_EMPTY_STRING.xmap(Tier::valueOf, Tier::toString).fieldOf("tier"). - forGetter(FluidPipeBlock::getTier)).apply(instance, FluidPipeBlock::new); + forGetter(FluidPipeBlock::getTier), + Settings.CODEC.fieldOf("properties").forGetter(AbstractBlock::getSettings)). + apply(instance, FluidPipeBlock::new); }); public static final EnumProperty UP = EPBlockStateProperties.PIPE_CONNECTION_UP; @@ -89,8 +94,8 @@ public static Block getBlockFromTier(Tier tier) { }; } - public FluidPipeBlock(Tier tier) { - super(tier.getProperties()); + public FluidPipeBlock(Tier tier, Settings props) { + super(props); this.tier = tier; @@ -298,11 +303,12 @@ public FluidState getFluidState(BlockState state) { } @Override - public BlockState getStateForNeighborUpdate(BlockState state, Direction facing, BlockState facingState, WorldAccess level, BlockPos selfPos, BlockPos facingPos) { + protected BlockState getStateForNeighborUpdate(BlockState state, WorldView level, ScheduledTickView tickView, BlockPos selfPos, Direction facing, + BlockPos facingPos, BlockState facingState, Random random) { if(state.get(WATERLOGGED)) - level.scheduleFluidTick(selfPos, Fluids.WATER, Fluids.WATER.getTickRate(level)); + tickView.scheduleFluidTick(selfPos, Fluids.WATER, Fluids.WATER.getTickRate(level)); - return super.getStateForNeighborUpdate(state, facing, facingState, level, selfPos, facingPos); + return super.getStateForNeighborUpdate(state, level, tickView, selfPos, facing, facingPos, facingState, random); } @Override @@ -311,47 +317,32 @@ protected void appendProperties(StateManager.Builder stateBui } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; FluidState fluidState = level.getFluidState(selfPos); - int dx = fromPos.getX() - selfPos.getX(); - int dy = fromPos.getY() - selfPos.getY(); - int dz = fromPos.getZ() - selfPos.getZ(); - Direction dir = Direction.fromVector(dx, dy, dz); - - BlockState newState; - if(dir == null) { - newState = getDefaultState(). - with(UP, selfState.get(UP)). - with(DOWN, selfState.get(DOWN)). - with(NORTH, selfState.get(NORTH)). - with(SOUTH, selfState.get(SOUTH)). - with(EAST, selfState.get(EAST)). - with(WEST, selfState.get(WEST)). - with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); - }else { + BlockState newState = getDefaultState(). + with(UP, selfState.get(UP)). + with(DOWN, selfState.get(DOWN)). + with(NORTH, selfState.get(NORTH)). + with(SOUTH, selfState.get(SOUTH)). + with(EAST, selfState.get(EAST)). + with(WEST, selfState.get(WEST)). + with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + for(Direction dir:Direction.values()) { EnumProperty pipeConnectionProperty = getPipeConnectionPropertyFromDirection(dir); - newState = getDefaultState(). - with(UP, selfState.get(UP)). - with(DOWN, selfState.get(DOWN)). - with(NORTH, selfState.get(NORTH)). - with(SOUTH, selfState.get(SOUTH)). - with(EAST, selfState.get(EAST)). - with(WEST, selfState.get(WEST)). - with(pipeConnectionProperty, shouldConnectTo(level, selfPos, selfState, dir)). - with(WATERLOGGED, fluidState.getFluid() == Fluids.WATER); + newState = newState.with(pipeConnectionProperty, shouldConnectTo(level, selfPos, selfState, dir)); + level.setBlockState(selfPos, newState); } - level.setBlockState(selfPos, newState); BlockEntity blockEntity = level.getBlockEntity(selfPos); - if(blockEntity == null || !(blockEntity instanceof FluidPipeBlockEntity)) + if(!(blockEntity instanceof FluidPipeBlockEntity)) return; FluidPipeBlockEntity.updateConnections(level, selfPos, newState, (FluidPipeBlockEntity)blockEntity); diff --git a/src/main/java/me/jddev0/ep/block/FluidPumpBlock.java b/src/main/java/me/jddev0/ep/block/FluidPumpBlock.java index 34c099182..a1a4ff5e1 100644 --- a/src/main/java/me/jddev0/ep/block/FluidPumpBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidPumpBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class FluidPumpBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/FluidTankBlock.java b/src/main/java/me/jddev0/ep/block/FluidTankBlock.java index 3b2441bbe..bb4064998 100644 --- a/src/main/java/me/jddev0/ep/block/FluidTankBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidTankBlock.java @@ -17,7 +17,7 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.sound.BlockSoundGroup; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; import net.minecraft.util.*; @@ -33,10 +33,12 @@ public class FluidTankBlock extends BlockWithEntity { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> { return instance.group(Codecs.NON_EMPTY_STRING.xmap(Tier::valueOf, Tier::toString).fieldOf("tier"). - forGetter(FluidTankBlock::getTier)).apply(instance, FluidTankBlock::new); + forGetter(FluidTankBlock::getTier), + Settings.CODEC.fieldOf("properties").forGetter(AbstractBlock::getSettings)). + apply(instance, FluidTankBlock::new); }); - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; private final Tier tier; @@ -48,8 +50,8 @@ public static Block getBlockFromTier(Tier tier) { }; } - public FluidTankBlock(Tier tier) { - super(tier.getProperties()); + public FluidTankBlock(Tier tier, Settings props) { + super(props); this.tier = tier; diff --git a/src/main/java/me/jddev0/ep/block/FluidTransposerBlock.java b/src/main/java/me/jddev0/ep/block/FluidTransposerBlock.java index 1d9109e75..1c1b6d6a9 100644 --- a/src/main/java/me/jddev0/ep/block/FluidTransposerBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidTransposerBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,13 +20,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class FluidTransposerBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(FluidTransposerBlock::new); public static final BooleanProperty POWERED = Properties.POWERED; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected FluidTransposerBlock(AbstractBlock.Settings props) { super(props); @@ -93,8 +94,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/InductionSmelterBlock.java b/src/main/java/me/jddev0/ep/block/InductionSmelterBlock.java index 476af9997..81b32c517 100644 --- a/src/main/java/me/jddev0/ep/block/InductionSmelterBlock.java +++ b/src/main/java/me/jddev0/ep/block/InductionSmelterBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,6 +20,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.function.ToIntFunction; @@ -29,7 +30,7 @@ public class InductionSmelterBlock extends BlockWithEntity { public static final BooleanProperty POWERED = Properties.POWERED; public static final BooleanProperty LIT = Properties.LIT; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.get(LIT) ? 5 : 0; @@ -99,8 +100,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltLoaderBlock.java b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltLoaderBlock.java index 11e950cba..112a7a822 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltLoaderBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltLoaderBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,13 +20,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class ItemConveyorBeltLoaderBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(ItemConveyorBeltLoaderBlock::new); public static final BooleanProperty ENABLED = Properties.ENABLED; - public static final DirectionProperty FACING = Properties.FACING; + public static final EnumProperty FACING = Properties.FACING; protected ItemConveyorBeltLoaderBlock(AbstractBlock.Settings props) { super(props); @@ -93,8 +94,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltMergerBlock.java b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltMergerBlock.java index 77361d230..d341ba14c 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltMergerBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltMergerBlock.java @@ -9,7 +9,7 @@ import net.minecraft.block.entity.BlockEntityType; import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.BlockMirror; import net.minecraft.util.BlockRotation; @@ -21,7 +21,7 @@ public class ItemConveyorBeltMergerBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(ItemConveyorBeltMergerBlock::new); - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected ItemConveyorBeltMergerBlock(AbstractBlock.Settings props) { super(props); diff --git a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSorterBlock.java b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSorterBlock.java index 880a919e5..d09a930cc 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSorterBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSorterBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -21,13 +21,14 @@ import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class ItemConveyorBeltSorterBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(ItemConveyorBeltSorterBlock::new); public static final BooleanProperty POWERED = Properties.POWERED; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected ItemConveyorBeltSorterBlock(AbstractBlock.Settings props) { super(props); @@ -76,20 +77,18 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; - int dx = fromPos.getX() - selfPos.getX(); - int dy = fromPos.getY() - selfPos.getY(); - int dz = fromPos.getZ() - selfPos.getZ(); - Direction dir = Direction.fromVector(dx, dy, dz); - if(dir == Direction.UP || dir == Direction.DOWN || dir == selfState.get(FACING)) - return; + for(Direction dir:Direction.values()) { + if(dir == Direction.UP || dir == Direction.DOWN || dir == selfState.get(FACING)) + continue; - updateOutputBeltConnectionStateOfDirection(level, selfPos, selfState, dir); + updateOutputBeltConnectionStateOfDirection(level, selfPos, selfState, dir); + } } @Override diff --git a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSplitterBlock.java b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSplitterBlock.java index 296754a2d..a2c280197 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSplitterBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSplitterBlock.java @@ -9,7 +9,7 @@ import net.minecraft.block.entity.BlockEntityType; import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.BlockMirror; import net.minecraft.util.BlockRotation; @@ -21,7 +21,7 @@ public class ItemConveyorBeltSplitterBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(ItemConveyorBeltSplitterBlock::new); - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected ItemConveyorBeltSplitterBlock(AbstractBlock.Settings props) { super(props); diff --git a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSwitchBlock.java b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSwitchBlock.java index 36ec49159..1c57cba83 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSwitchBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSwitchBlock.java @@ -10,20 +10,21 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.BlockMirror; import net.minecraft.util.BlockRotation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class ItemConveyorBeltSwitchBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(ItemConveyorBeltSwitchBlock::new); public static final BooleanProperty POWERED = Properties.POWERED; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected ItemConveyorBeltSwitchBlock(AbstractBlock.Settings props) { super(props); @@ -48,8 +49,8 @@ public BlockRenderType getRenderType(BlockState state) { } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/LightningGeneratorBlock.java b/src/main/java/me/jddev0/ep/block/LightningGeneratorBlock.java index f3dc33249..fafcd1298 100644 --- a/src/main/java/me/jddev0/ep/block/LightningGeneratorBlock.java +++ b/src/main/java/me/jddev0/ep/block/LightningGeneratorBlock.java @@ -28,6 +28,7 @@ import net.minecraft.util.math.intprovider.UniformIntProvider; import net.minecraft.util.math.random.Random; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -87,16 +88,16 @@ protected void appendProperties(StateManager.Builder stateBui } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; - if(!selfPos.up().equals(fromPos) || !(fromBlock instanceof LightningRodBlock)) + if(!(fromBlock instanceof LightningRodBlock) || !(level.getBlockState(selfPos.up()).getBlock() instanceof LightningRodBlock)) return; - BlockState fromState = level.getBlockState(fromPos); + BlockState fromState = level.getBlockState(selfPos.up()); if(!fromState.contains(LightningRodBlock.POWERED) || !fromState.get(LightningRodBlock.POWERED) || !fromState.contains(LightningRodBlock.POWERED) || fromState.get(FacingBlock.FACING) != Direction.UP) return; diff --git a/src/main/java/me/jddev0/ep/block/MetalPressBlock.java b/src/main/java/me/jddev0/ep/block/MetalPressBlock.java index ed8799232..a1c74652b 100644 --- a/src/main/java/me/jddev0/ep/block/MetalPressBlock.java +++ b/src/main/java/me/jddev0/ep/block/MetalPressBlock.java @@ -22,6 +22,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -96,8 +97,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/MinecartChargerBlock.java b/src/main/java/me/jddev0/ep/block/MinecartChargerBlock.java index 5c5ca56fb..d5a093634 100644 --- a/src/main/java/me/jddev0/ep/block/MinecartChargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/MinecartChargerBlock.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; import net.minecraft.util.*; @@ -30,7 +30,7 @@ public class MinecartChargerBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(MinecartChargerBlock::new); - public static final DirectionProperty FACING = Properties.FACING; + public static final EnumProperty FACING = Properties.FACING; protected MinecartChargerBlock(AbstractBlock.Settings props) { super(props); diff --git a/src/main/java/me/jddev0/ep/block/MinecartUnchargerBlock.java b/src/main/java/me/jddev0/ep/block/MinecartUnchargerBlock.java index b796ed989..25084293b 100644 --- a/src/main/java/me/jddev0/ep/block/MinecartUnchargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/MinecartUnchargerBlock.java @@ -15,7 +15,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; import net.minecraft.util.*; @@ -30,7 +30,7 @@ public class MinecartUnchargerBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(MinecartUnchargerBlock::new); - public static final DirectionProperty FACING = Properties.FACING; + public static final EnumProperty FACING = Properties.FACING; protected MinecartUnchargerBlock(AbstractBlock.Settings props) { super(props); diff --git a/src/main/java/me/jddev0/ep/block/PlantGrowthChamberBlock.java b/src/main/java/me/jddev0/ep/block/PlantGrowthChamberBlock.java index b9d9afe5b..65aa1a41c 100644 --- a/src/main/java/me/jddev0/ep/block/PlantGrowthChamberBlock.java +++ b/src/main/java/me/jddev0/ep/block/PlantGrowthChamberBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,13 +20,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class PlantGrowthChamberBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(PlantGrowthChamberBlock::new); public static final BooleanProperty POWERED = Properties.POWERED; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected PlantGrowthChamberBlock(AbstractBlock.Settings props) { super(props); @@ -93,8 +94,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/PoweredFurnaceBlock.java b/src/main/java/me/jddev0/ep/block/PoweredFurnaceBlock.java index 5627a6ae9..b0c274d33 100644 --- a/src/main/java/me/jddev0/ep/block/PoweredFurnaceBlock.java +++ b/src/main/java/me/jddev0/ep/block/PoweredFurnaceBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,6 +20,7 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.function.ToIntFunction; @@ -30,7 +31,7 @@ public class PoweredFurnaceBlock extends BlockWithEntity { public static final BooleanProperty POWERED = Properties.POWERED; public static final BooleanProperty LIT = Properties.LIT; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.get(LIT) ? 5 : 0; @@ -100,8 +101,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/PulverizerBlock.java b/src/main/java/me/jddev0/ep/block/PulverizerBlock.java index ec2653025..281624d1f 100644 --- a/src/main/java/me/jddev0/ep/block/PulverizerBlock.java +++ b/src/main/java/me/jddev0/ep/block/PulverizerBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class PulverizerBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/SawmillBlock.java b/src/main/java/me/jddev0/ep/block/SawmillBlock.java index 986646eef..a0dbf7b30 100644 --- a/src/main/java/me/jddev0/ep/block/SawmillBlock.java +++ b/src/main/java/me/jddev0/ep/block/SawmillBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class SawmillBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/SolarPanelBlock.java b/src/main/java/me/jddev0/ep/block/SolarPanelBlock.java index 96a6ac02c..8e1324258 100644 --- a/src/main/java/me/jddev0/ep/block/SolarPanelBlock.java +++ b/src/main/java/me/jddev0/ep/block/SolarPanelBlock.java @@ -31,7 +31,9 @@ public class SolarPanelBlock extends BlockWithEntity { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> { return instance.group(Codecs.NON_EMPTY_STRING.xmap(Tier::valueOf, Tier::toString).fieldOf("tier"). - forGetter(SolarPanelBlock::getTier)).apply(instance, SolarPanelBlock::new); + forGetter(SolarPanelBlock::getTier), + Settings.CODEC.fieldOf("properties").forGetter(AbstractBlock::getSettings)). + apply(instance, SolarPanelBlock::new); }); private static final VoxelShape SHAPE = Block.createCuboidShape(0.d, 0.d, 0.d, 16.d, 4.d, 16.d); @@ -49,8 +51,8 @@ public static Block getBlockFromTier(SolarPanelBlock.Tier tier) { }; } - public SolarPanelBlock(Tier tier) { - super(tier.getProperties()); + public SolarPanelBlock(Tier tier, Settings props) { + super(props); this.tier = tier; } diff --git a/src/main/java/me/jddev0/ep/block/StoneSolidifierBlock.java b/src/main/java/me/jddev0/ep/block/StoneSolidifierBlock.java index 6597009ea..16aa98d50 100644 --- a/src/main/java/me/jddev0/ep/block/StoneSolidifierBlock.java +++ b/src/main/java/me/jddev0/ep/block/StoneSolidifierBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,13 +20,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class StoneSolidifierBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(StoneSolidifierBlock::new); public static final BooleanProperty POWERED = Properties.POWERED; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected StoneSolidifierBlock(AbstractBlock.Settings props) { super(props); @@ -93,8 +94,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/TeleporterBlock.java b/src/main/java/me/jddev0/ep/block/TeleporterBlock.java index a0454b2f1..ef01575cf 100644 --- a/src/main/java/me/jddev0/ep/block/TeleporterBlock.java +++ b/src/main/java/me/jddev0/ep/block/TeleporterBlock.java @@ -21,6 +21,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -106,8 +107,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/ThermalGeneratorBlock.java b/src/main/java/me/jddev0/ep/block/ThermalGeneratorBlock.java index ae987502f..f255d5a13 100644 --- a/src/main/java/me/jddev0/ep/block/ThermalGeneratorBlock.java +++ b/src/main/java/me/jddev0/ep/block/ThermalGeneratorBlock.java @@ -11,7 +11,7 @@ import net.minecraft.item.ItemPlacementContext; import net.minecraft.state.StateManager; import net.minecraft.state.property.BooleanProperty; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.util.ActionResult; import net.minecraft.util.BlockMirror; @@ -20,13 +20,14 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class ThermalGeneratorBlock extends BlockWithEntity { public static final MapCodec CODEC = createCodec(ThermalGeneratorBlock::new); public static final BooleanProperty POWERED = Properties.POWERED; - public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING; + public static final EnumProperty FACING = Properties.HORIZONTAL_FACING; protected ThermalGeneratorBlock(AbstractBlock.Settings props) { super(props); @@ -93,8 +94,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/TransformerBlock.java b/src/main/java/me/jddev0/ep/block/TransformerBlock.java index f8c008302..fbdff8622 100644 --- a/src/main/java/me/jddev0/ep/block/TransformerBlock.java +++ b/src/main/java/me/jddev0/ep/block/TransformerBlock.java @@ -14,7 +14,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.state.StateManager; -import net.minecraft.state.property.DirectionProperty; +import net.minecraft.state.property.EnumProperty; import net.minecraft.state.property.Properties; import net.minecraft.text.Text; import net.minecraft.util.BlockMirror; @@ -38,7 +38,7 @@ public class TransformerBlock extends BlockWithEntity { ).apply(instance, TransformerBlock::new); }); - public static final DirectionProperty FACING = Properties.FACING; + public static final EnumProperty FACING = Properties.FACING; private final Tier tier; private final Type type; diff --git a/src/main/java/me/jddev0/ep/block/UnchargerBlock.java b/src/main/java/me/jddev0/ep/block/UnchargerBlock.java index 21371dcd8..ff641f90b 100644 --- a/src/main/java/me/jddev0/ep/block/UnchargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/UnchargerBlock.java @@ -16,6 +16,7 @@ import net.minecraft.util.hit.BlockHitResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import net.minecraft.world.block.WireOrientation; import org.jetbrains.annotations.Nullable; public class UnchargerBlock extends BlockWithEntity { @@ -88,8 +89,8 @@ public ActionResult onUse(BlockState state, World level, BlockPos blockPos, Play } @Override - public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborUpdate(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborUpdate(BlockState selfState, World level, BlockPos selfPos, Block fromBlock, @Nullable WireOrientation wireOrientation, boolean isMoving) { + super.neighborUpdate(selfState, level, selfPos, fromBlock, wireOrientation, isMoving); if(level.isClient()) return; diff --git a/src/main/java/me/jddev0/ep/block/entity/AdvancedAutoCrafterBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AdvancedAutoCrafterBlockEntity.java index 662d03fa7..88adf9883 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedAutoCrafterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedAutoCrafterBlockEntity.java @@ -13,6 +13,7 @@ import me.jddev0.ep.screen.AdvancedAutoCrafterMenu; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.ItemStackUtils; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; @@ -20,13 +21,13 @@ import net.minecraft.inventory.*; import net.minecraft.item.ItemStack; import net.minecraft.nbt.*; -import net.minecraft.recipe.CraftingRecipe; -import net.minecraft.recipe.RecipeEntry; -import net.minecraft.recipe.RecipeType; -import net.minecraft.recipe.SpecialCraftingRecipe; +import net.minecraft.recipe.*; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryWrapper; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -83,7 +84,8 @@ public int getMaxCountPerStack() { private final boolean[] hasRecipeLoaded = new boolean[] { false, false, false }; - private final Identifier[] recipeIdForSetRecipe = new Identifier[] { + @SuppressWarnings("unchecked") + private final RegistryKey>[] recipeIdForSetRecipe = new RegistryKey[] { null, null, null }; @SuppressWarnings("unchecked") @@ -277,7 +279,7 @@ protected void writeNbt(@NotNull NbtCompound nbt, @NotNull RegistryWrapper.Wrapp for(int i = 0;i < 3;i++) { if(craftingRecipe[i] != null) - nbt.put("recipe.id." + i, NbtString.of(craftingRecipe[i].id().toString())); + nbt.put("recipe.id." + i, NbtString.of(craftingRecipe[i].id().getValue().toString())); nbt.put("recipe.progress." + i, NbtInt.of(progress[i])); nbt.put("recipe.max_progress." + i, NbtInt.of(maxProgress[i])); @@ -310,7 +312,7 @@ protected void readNbt(@NotNull NbtCompound nbt, RegistryWrapper.@NotNull Wrappe if(!(tag instanceof NbtString stringTag)) throw new IllegalArgumentException("Tag must be of type StringTag!"); - recipeIdForSetRecipe[i] = Identifier.tryParse(stringTag.asString()); + recipeIdForSetRecipe[i] = RegistryKey.of(RegistryKeys.RECIPE, Identifier.tryParse(stringTag.asString())); } progress[i] = nbt.getInt("recipe.progress." + i); @@ -455,7 +457,7 @@ public void cycleRecipe() { craftingRecipe[currentRecipeIndex].id() == null)?recipes.get(0).id():craftingRecipe[currentRecipeIndex].id(); for(int i = 0;i < recipes.size();i++) { - if(Objects.equals(recipes.get(i).id(), recipeIdForSetRecipe[currentRecipeIndex])) { + if(Objects.equals(recipes.get(i).id().getValue(), recipeIdForSetRecipe[currentRecipeIndex].getValue())) { recipeIdForSetRecipe[currentRecipeIndex] = recipes.get((i + 1) % recipes.size()).id(); break; @@ -465,7 +467,7 @@ public void cycleRecipe() { updateRecipe(currentRecipeIndex); } - public void setRecipeIdForSetRecipe(Identifier recipeIdForSetRecipe) { + public void setRecipeIdForSetRecipe(RegistryKey> recipeIdForSetRecipe) { this.recipeIdForSetRecipe[currentRecipeIndex] = recipeIdForSetRecipe; updateRecipe(currentRecipeIndex); @@ -480,9 +482,7 @@ private void updateRecipe(int index) { if(hasRecipeLoaded[index] && craftingRecipe[index] != null && oldCopyOfRecipe[index] != null) { oldRecipe = craftingRecipe[index]; - oldResult = craftingRecipe[index].value() instanceof SpecialCraftingRecipe ?craftingRecipe[index].value(). - craft(oldCopyOfRecipe[index].createRecipeInput(), world.getRegistryManager()): - craftingRecipe[index].value().getResult(world.getRegistryManager()); + oldResult = craftingRecipe[index].value().craft(oldCopyOfRecipe[index].createRecipeInput(), world.getRegistryManager()); } hasRecipeLoaded[index] = true; @@ -492,19 +492,17 @@ private void updateRecipe(int index) { for(int i = 0;i < patternSlotsForRecipe.size();i++) copyOfPatternSlots.setStack(i, patternSlotsForRecipe.getStack(i)); - Optional>> recipe = getRecipeFor(copyOfPatternSlots, world, recipeIdForSetRecipe[index]); + Optional>, RecipeEntry>> recipe = getRecipeFor(copyOfPatternSlots, world, recipeIdForSetRecipe[index]); if(recipe.isPresent()) { craftingRecipe[index] = recipe.get().getSecond(); //Recipe with saved recipe id does not exist or pattern items are not compatible with recipe - if(recipeIdForSetRecipe[index] != null && !Objects.equals(craftingRecipe[index].id(), recipeIdForSetRecipe[index])) { + if(recipeIdForSetRecipe[index] != null && !Objects.equals(craftingRecipe[index].id().getValue(), recipeIdForSetRecipe[index].getValue())) { recipeIdForSetRecipe[index] = craftingRecipe[index].id(); resetProgress(index); } - ItemStack resultItemStack = craftingRecipe[index].value() instanceof SpecialCraftingRecipe?craftingRecipe[index].value(). - craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()): - craftingRecipe[index].value().getResult(world.getRegistryManager()); + ItemStack resultItemStack = craftingRecipe[index].value().craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()); patternResultSlots[index].setStack(0, resultItemStack); @@ -564,13 +562,12 @@ private void craftItem(int index, CraftingInventory copyOfPatternSlots) { List outputItemStacks = new ArrayList<>(10); - ItemStack resultItemStack = craftingRecipe[index].value() instanceof SpecialCraftingRecipe?craftingRecipe[index].value(). - craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()): - craftingRecipe[index].value().getResult(world.getRegistryManager()); + ItemStack resultItemStack = craftingRecipe[index].value(). + craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()); outputItemStacks.add(resultItemStack); - for(ItemStack remainingItem:craftingRecipe[index].value().getRemainder(copyOfPatternSlots.createRecipeInput())) + for(ItemStack remainingItem:craftingRecipe[index].value().getRecipeRemainders(copyOfPatternSlots.createRecipeInput())) if(!remainingItem.isEmpty()) outputItemStacks.add(remainingItem); @@ -676,14 +673,13 @@ private boolean canInsertItemsIntoOutputSlots(int index) { copyOfPatternSlots.setStack(i, patternSlotsForRecipe.getStack(i)); List outputItemStacks = new ArrayList<>(10); - ItemStack resultItemStack = craftingRecipe[index].value() instanceof SpecialCraftingRecipe?craftingRecipe[index].value(). - craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()): - craftingRecipe[index].value().getResult(world.getRegistryManager()); + ItemStack resultItemStack = craftingRecipe[index].value(). + craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()); if(!resultItemStack.isEmpty()) outputItemStacks.add(resultItemStack); - for(ItemStack remainingItem:craftingRecipe[index].value().getRemainder(copyOfPatternSlots.createRecipeInput())) + for(ItemStack remainingItem:craftingRecipe[index].value().getRecipeRemainders(copyOfPatternSlots.createRecipeInput())) if(!remainingItem.isEmpty()) outputItemStacks.add(remainingItem); @@ -746,14 +742,12 @@ private boolean isOutputOrCraftingRemainderOfInput(ItemStack itemStack) { for(int j = 0;j < patternSlotsForRecipe.size();j++) copyOfPatternSlots.setStack(j, patternSlotsForRecipe.getStack(j)); - ItemStack resultItemStack = craftingRecipe[i].value() instanceof SpecialCraftingRecipe? - craftingRecipe[i].value().craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()): - craftingRecipe[i].value().getResult(world.getRegistryManager()); + ItemStack resultItemStack = craftingRecipe[i].value().craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()); if(ItemStack.areItemsEqual(itemStack, resultItemStack) && ItemStack.areItemsAndComponentsEqual(itemStack, resultItemStack)) return true; - for(ItemStack remainingItem:craftingRecipe[i].value().getRemainder(copyOfPatternSlots.createRecipeInput())) + for(ItemStack remainingItem:craftingRecipe[i].value().getRecipeRemainders(copyOfPatternSlots.createRecipeInput())) if(ItemStack.areItemsEqual(itemStack, remainingItem) && ItemStack.areItemsAndComponentsEqual(itemStack, remainingItem)) return true; } @@ -827,16 +821,19 @@ private SimpleInventory replaceCraftingPatternWithCurrentNBTItems(SimpleInventor } private List> getRecipesFor(CraftingInventory patternSlots, World level) { - return level.getRecipeManager().listAllOfType(RecipeType.CRAFTING). - stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id())). + if(!(level instanceof ServerWorld serverWorld)) + return List.of(); + + return RecipeUtils.getAllRecipesFor(serverWorld, RecipeType.CRAFTING). + stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id().getValue())). filter(recipe -> recipe.value().matches(patternSlots.createRecipeInput(), level)). - sorted(Comparator.comparing(recipe -> recipe.value().getResult(level.getRegistryManager()).getTranslationKey())). + sorted(Comparator.comparing(recipe -> recipe.id().getValue())). toList(); } - private Optional>> getRecipeFor(CraftingInventory patternSlots, World level, Identifier recipeId) { + private Optional>, RecipeEntry>> getRecipeFor(CraftingInventory patternSlots, World level, RegistryKey> recipeId) { List> recipes = getRecipesFor(patternSlots, level); - Optional> recipe = recipes.stream().filter(r -> r.id().equals(recipeId)).findFirst(); + Optional> recipe = recipes.stream().filter(r -> recipeId != null && r.id().getValue().equals(recipeId.getValue())).findFirst(); return recipe.or(() -> recipes.stream().findFirst()).map(r -> Pair.of(r.id(), r)); } diff --git a/src/main/java/me/jddev0/ep/block/entity/AdvancedChargerBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AdvancedChargerBlockEntity.java index 5221c6942..70f4c134a 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedChargerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedChargerBlockEntity.java @@ -7,8 +7,12 @@ import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; +import me.jddev0.ep.networking.ModMessages; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; import me.jddev0.ep.recipe.ChargerRecipe; import me.jddev0.ep.recipe.ContainerRecipeInputWrapper; +import me.jddev0.ep.recipe.EPRecipes; +import me.jddev0.ep.recipe.IngredientPacketUpdate; import me.jddev0.ep.screen.AdvancedChargerMenu; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.RecipeUtils; @@ -22,10 +26,13 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtLong; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeEntry; import net.minecraft.registry.RegistryWrapper; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; @@ -35,21 +42,26 @@ import me.jddev0.ep.energy.EnergizedPowerEnergyStorage; import me.jddev0.ep.energy.EnergizedPowerLimitingEnergyStorage; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; public class AdvancedChargerBlockEntity - extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity { + extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity + implements IngredientPacketUpdate { public static final float CHARGER_RECIPE_ENERGY_CONSUMPTION_MULTIPLIER = ModConfigs.COMMON_ADVANCED_CHARGER_CHARGER_RECIPE_ENERGY_CONSUMPTION_MULTIPLIER.getValue(); + protected List ingredientsOfRecipes = new ArrayList<>(); + final InputOutputItemHandler itemHandlerSided = new InputOutputItemHandler(itemHandler, (i, stack) -> true, i -> { if(i < 0 || i > 2) return false; ItemStack itemStack = itemHandler.getStack(i); - if(world != null && RecipeUtils.isResultOfAny(world, ChargerRecipe.Type.INSTANCE, itemStack)) + if(world instanceof ServerWorld serverWorld && RecipeUtils.isResultOfAny(serverWorld, ChargerRecipe.Type.INSTANCE, itemStack)) return true; - if(world == null || RecipeUtils.isIngredientOfAny(world, ChargerRecipe.Type.INSTANCE, itemStack)) + if(!(world instanceof ServerWorld serverWorld) || RecipeUtils.isIngredientOfAny(serverWorld, ChargerRecipe.Type.INSTANCE, itemStack)) return false; if(!EnergyStorageUtil.isEnergyStorage(itemStack)) @@ -123,7 +135,9 @@ public int getMaxCountPerStack() { @Override public boolean isValid(int slot, ItemStack stack) { - if(world == null || RecipeUtils.isIngredientOfAny(world, ChargerRecipe.Type.INSTANCE, stack)) + if(((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, EPRecipes.CHARGER_TYPE, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack))) return true; if(slot >= 0 && slot < 3) { @@ -198,6 +212,7 @@ public int size() { @Override public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { syncEnergyToPlayer(player); + syncIngredientListToPlayer(player); return new AdvancedChargerMenu(id, this, inventory, itemHandler, upgradeModuleInventory, this.data); } @@ -219,7 +234,7 @@ protected void readNbt(@NotNull NbtCompound nbt, RegistryWrapper.@NotNull Wrappe } public static void tick(World level, BlockPos blockPos, BlockState state, AdvancedChargerBlockEntity blockEntity) { - if(level.isClient()) + if(level.isClient() || !(level instanceof ServerWorld serverWorld)) return; if(!blockEntity.redstoneMode.isActive(state.get(AdvancedChargerBlock.POWERED))) @@ -236,7 +251,7 @@ public static void tick(World level, BlockPos blockPos, BlockState state, Advanc SimpleInventory inventory = new SimpleInventory(1); inventory.setStack(0, blockEntity.itemHandler.getStack(i)); - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverWorld.getRecipeManager(). getFirstMatch(ChargerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); if(recipe.isPresent()) { if(blockEntity.energyConsumptionLeft[i] == -1) @@ -296,7 +311,7 @@ public static void tick(World level, BlockPos blockPos, BlockState state, Advanc if(blockEntity.energyConsumptionLeft[i] <= 0) { final int index = i; recipe.ifPresent(advancedChargerRecipe -> - blockEntity.itemHandler.setStack(index, advancedChargerRecipe.value().getResult(level.getRegistryManager()).copyWithCount(1))); + blockEntity.itemHandler.setStack(index, advancedChargerRecipe.value().craft(null, level.getRegistryManager()).copyWithCount(1))); blockEntity.resetProgress(i); } @@ -313,12 +328,15 @@ private void resetProgress(int index) { } private boolean hasRecipe(int index) { + if(!(world instanceof ServerWorld serverWorld)) + return false; + ItemStack stack = itemHandler.getStack(index); SimpleInventory inventory = new SimpleInventory(1); inventory.setStack(0, itemHandler.getStack(index)); - Optional> recipe = world == null?Optional.empty():world.getRecipeManager(). + Optional> recipe = serverWorld.getRecipeManager(). getFirstMatch(ChargerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), world); if(recipe.isPresent()) @@ -334,4 +352,22 @@ protected void updateUpgradeModules() { super.updateUpgradeModules(); } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, EPRecipes.CHARGER_TYPE))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/AdvancedCrusherBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AdvancedCrusherBlockEntity.java index b27c76817..5e36556b7 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedCrusherBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedCrusherBlockEntity.java @@ -11,8 +11,6 @@ import me.jddev0.ep.recipe.CrusherRecipe; import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.screen.AdvancedCrusherMenu; -import me.jddev0.ep.util.FluidUtils; -import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.storage.base.CombinedStorage; import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction; @@ -22,6 +20,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.input.RecipeInput; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import me.jddev0.ep.util.*; @@ -63,7 +62,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || RecipeUtils.isIngredientOfAny(world, CrusherRecipe.Type.INSTANCE, stack); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 1 -> false; default -> super.isValid(slot, stack); }; @@ -156,9 +157,9 @@ protected void craftItem(RecipeEntry recipe) { } itemHandler.removeStack(0, 1); - itemHandler.setStack(1, recipe.value().getResult(world.getRegistryManager()). + itemHandler.setStack(1, recipe.value().craft(null, world.getRegistryManager()). copyWithCount(itemHandler.getStack(1).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); resetProgress(); } @@ -168,6 +169,6 @@ protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry= WATER_CONSUMPTION_PER_RECIPE && fluidStorage.parts.get(1).getCapacity() - fluidStorage.parts.get(1).getAmount() >= WATER_CONSUMPTION_PER_RECIPE && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().getResult(world.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().craft(null, world.getRegistryManager())); } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/AdvancedPoweredFurnaceBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AdvancedPoweredFurnaceBlockEntity.java index 2bdf03b65..f37d15572 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedPoweredFurnaceBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedPoweredFurnaceBlockEntity.java @@ -7,8 +7,8 @@ import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; import me.jddev0.ep.networking.ModMessages; -import me.jddev0.ep.networking.packet.SyncFurnaceRecipeTypeS2CPacket; -import me.jddev0.ep.recipe.FurnaceRecipeTypePacketUpdate; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; +import me.jddev0.ep.recipe.IngredientPacketUpdate; import me.jddev0.ep.screen.AdvancedPoweredFurnaceMenu; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.InventoryUtils; @@ -24,6 +24,7 @@ import net.minecraft.nbt.NbtInt; import net.minecraft.nbt.NbtLong; import net.minecraft.recipe.AbstractCookingRecipe; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.RecipeType; import net.minecraft.recipe.input.SingleStackRecipeInput; @@ -41,12 +42,13 @@ import me.jddev0.ep.energy.EnergizedPowerEnergyStorage; import me.jddev0.ep.energy.EnergizedPowerLimitingEnergyStorage; +import java.util.ArrayList; import java.util.List; import java.util.Optional; public class AdvancedPoweredFurnaceBlockEntity extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity - implements FurnaceRecipeTypePacketUpdate { + implements IngredientPacketUpdate { private static final List<@NotNull Identifier> RECIPE_BLACKLIST = ModConfigs.COMMON_ADVANCED_POWERED_FURNACE_RECIPE_BLACKLIST.getValue(); private static final long ENERGY_USAGE_PER_INPUT_PER_TICK = ModConfigs.COMMON_ADVANCED_POWERED_FURNACE_ENERGY_CONSUMPTION_PER_INPUT_PER_TICK.getValue(); @@ -68,7 +70,7 @@ public class AdvancedPoweredFurnaceBlockEntity false, false, false }; - private @NotNull RecipeType recipeType = RecipeType.SMELTING; + protected List ingredientsOfRecipes = new ArrayList<>(); public AdvancedPoweredFurnaceBlockEntity(BlockPos blockPos, BlockState blockState) { super( @@ -122,7 +124,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> world == null || RecipeUtils.isIngredientOfAny(world, getRecipeForFurnaceModeUpgrade(), stack); + case 0, 1, 2 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, getRecipeForFurnaceModeUpgrade(), stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 3, 4, 5 -> false; default -> super.isValid(slot, stack); }; @@ -210,8 +214,7 @@ public int size() { @Override public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { syncEnergyToPlayer(player); - ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, - new SyncFurnaceRecipeTypeS2CPacket(getRecipeForFurnaceModeUpgrade(), getPos())); + syncIngredientListToPlayer(player); return new AdvancedPoweredFurnaceMenu(id, this, inventory, itemHandler, upgradeModuleInventory, this.data); } @@ -340,8 +343,8 @@ private static void craftItem(int index, BlockPos blockPos, BlockState state, Ad return; blockEntity.itemHandler.removeStack(index, 1); - blockEntity.itemHandler.setStack(3 + index, recipe.get().value().getResult(level.getRegistryManager()).copyWithCount( - blockEntity.itemHandler.getStack(3 + index).getCount() + recipe.get().value().getResult(level.getRegistryManager()).getCount())); + blockEntity.itemHandler.setStack(3 + index, recipe.get().value().craft(null, level.getRegistryManager()).copyWithCount( + blockEntity.itemHandler.getStack(3 + index).getCount() + recipe.get().value().craft(null, level.getRegistryManager()).getCount())); blockEntity.resetProgress(index, blockPos, state); } @@ -356,20 +359,20 @@ private static boolean hasRecipe(int index, AdvancedPoweredFurnaceBlockEntity bl Optional> recipe = blockEntity.getRecipeFor(inventory, level); return recipe.isPresent() && - InventoryUtils.canInsertItemIntoSlot(blockEntity.itemHandler, 3 + index, recipe.get().value().getResult(level.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(blockEntity.itemHandler, 3 + index, recipe.get().value().craft(null, level.getRegistryManager())); } private Optional> getRecipeFor(Inventory container, World level) { - return level.getRecipeManager().listAllOfType(getRecipeForFurnaceModeUpgrade()). - stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id())). + if(!(level instanceof ServerWorld serverWorld)) + return Optional.empty(); + + return RecipeUtils.getAllRecipesFor(serverWorld, getRecipeForFurnaceModeUpgrade()). + stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id().getValue())). filter(recipe -> recipe.value().matches(new SingleStackRecipeInput(container.getStack(0)), level)). findFirst(); } public RecipeType getRecipeForFurnaceModeUpgrade() { - if(world != null && world.isClient()) - return recipeType; - double value = upgradeModuleInventory.getUpgradeModuleModifierEffect(3, UpgradeModuleModifier.FURNACE_MODE); if(value == 1) return RecipeType.BLASTING; @@ -379,11 +382,6 @@ else if(value == 2) return RecipeType.SMELTING; } - @Override - public void setRecipeType(RecipeType recipeType) { - this.recipeType = recipeType; - } - @Override protected void updateUpgradeModules() { for(int i = 0;i < 3;i++) @@ -394,8 +392,26 @@ protected void updateUpgradeModules() { if(world != null && !world.isClient()) { ModMessages.sendServerPacketToPlayersWithinXBlocks( getPos(), (ServerWorld)world, 32, - new SyncFurnaceRecipeTypeS2CPacket(getRecipeForFurnaceModeUpgrade(), getPos()) + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf((ServerWorld)world, getRecipeForFurnaceModeUpgrade())) ); } } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, getRecipeForFurnaceModeUpgrade()))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/AdvancedPulverizerBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AdvancedPulverizerBlockEntity.java index da6f7d2bc..cd0311afa 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedPulverizerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedPulverizerBlockEntity.java @@ -21,6 +21,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.input.RecipeInput; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import java.util.List; @@ -61,7 +62,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || RecipeUtils.isIngredientOfAny(world, PulverizerRecipe.Type.INSTANCE, stack); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 1, 2 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/block/entity/AlloyFurnaceBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AlloyFurnaceBlockEntity.java index ab3daa543..5584212ed 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AlloyFurnaceBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AlloyFurnaceBlockEntity.java @@ -4,14 +4,13 @@ import me.jddev0.ep.block.entity.base.MenuInventoryStorageBlockEntity; import me.jddev0.ep.config.ModConfigs; import me.jddev0.ep.inventory.InputOutputItemHandler; -import me.jddev0.ep.recipe.AlloyFurnaceRecipe; -import me.jddev0.ep.recipe.ContainerRecipeInputWrapper; -import me.jddev0.ep.recipe.IngredientWithCount; -import me.jddev0.ep.recipe.EPRecipes; +import me.jddev0.ep.networking.ModMessages; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; +import me.jddev0.ep.recipe.*; import me.jddev0.ep.screen.AlloyFurnaceMenu; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.InventoryUtils; -import net.fabricmc.fabric.api.registry.FuelRegistry; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; import net.fabricmc.fabric.api.transfer.v1.storage.Storage; import net.minecraft.block.BlockState; @@ -22,11 +21,14 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtInt; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; @@ -34,12 +36,14 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; import java.util.function.Predicate; public class AlloyFurnaceBlockEntity - extends MenuInventoryStorageBlockEntity { + extends MenuInventoryStorageBlockEntity + implements IngredientPacketUpdate { public static final float RECIPE_DURATION_MULTIPLIER = ModConfigs.COMMON_ALLOY_FURNACE_RECIPE_DURATION_MULTIPLIER.getValue(); private int progress; @@ -47,12 +51,13 @@ public class AlloyFurnaceBlockEntity private int litDuration; private int maxLitDuration; + protected List ingredientsOfRecipes = new ArrayList<>(); + private final Predicate canOutput = i -> { if(i == 3) { //Do not allow extraction of fuel items, allow for non fuel items (Bucket of Lava -> Empty Bucket) ItemStack item = itemHandler.getStack(i); - Integer burnTime = FuelRegistry.INSTANCE.get(item.getItem()); - return burnTime == null || burnTime <= 0; + return world != null && world.getFuelRegistry().getFuelTicks(item) <= 0; } return i > 3 && i < 6; @@ -80,15 +85,10 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> world == null || world.getRecipeManager(). - listAllOfType(AlloyFurnaceRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(AlloyFurnaceRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); - case 3 -> { - Integer burnTime = FuelRegistry.INSTANCE.get(stack.getItem()); - yield burnTime != null && burnTime > 0; - } + case 0, 1, 2 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, EPRecipes.ALLOY_FURNACE_TYPE, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); + case 3 -> world != null && world.getFuelRegistry().getFuelTicks(stack) > 0; case 4, 5 -> false; default -> super.isValid(slot, stack); }; @@ -156,6 +156,8 @@ public int size() { @Nullable @Override public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { + syncIngredientListToPlayer(player); + return new AlloyFurnaceMenu(id, this, inventory, itemHandler, data); } @@ -230,8 +232,7 @@ public static void tick(World level, BlockPos blockPos, BlockState state, AlloyF //Use next fuel only if recipe is present if(blockEntity.litDuration <= 0) { ItemStack item = blockEntity.itemHandler.getStack(3); - Integer burnTime = FuelRegistry.INSTANCE.get(item.getItem()); - blockEntity.litDuration = blockEntity.maxLitDuration = burnTime == null?0:burnTime; + blockEntity.litDuration = blockEntity.maxLitDuration = blockEntity.world.getFuelRegistry().getFuelTicks(item); if(blockEntity.maxLitDuration > 0) { blockEntity.onHasEnoughFuel(); hasNotEnoughFuel = false; @@ -299,7 +300,10 @@ private RecipeInput getRecipeInput(Inventory inventory) { } private Optional> getRecipeFor(SimpleInventory inventory) { - return world.getRecipeManager().getFirstMatch(EPRecipes.ALLOY_FURNACE_TYPE, getRecipeInput(inventory), world); + if(!(world instanceof ServerWorld serverWorld)) + return Optional.empty(); + + return serverWorld.getRecipeManager().getFirstMatch(EPRecipes.ALLOY_FURNACE_TYPE, getRecipeInput(inventory), world); } private Optional> getCurrentRecipe() { @@ -377,4 +381,22 @@ private void resetProgress() { progress = 0; maxProgress = 0; } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, EPRecipes.ALLOY_FURNACE_TYPE))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/AssemblingMachineBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AssemblingMachineBlockEntity.java index 748d307c9..8bd628d5e 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AssemblingMachineBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AssemblingMachineBlockEntity.java @@ -11,6 +11,7 @@ import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.screen.AssemblingMachineMenu; import me.jddev0.ep.util.InventoryUtils; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; import net.fabricmc.fabric.api.transfer.v1.storage.Storage; import net.minecraft.block.BlockState; @@ -18,11 +19,10 @@ import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.input.RecipeInput; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import java.util.Arrays; - public class AssemblingMachineBlockEntity extends SimpleRecipeMachineBlockEntity { final InputOutputItemHandler itemHandlerSidedTopBottom = new InputOutputItemHandler(itemHandler, (i, stack) -> i >= 0 && i < 4, i -> i == 4); final InputOutputItemHandler itemHandlerSidedFront = new InputOutputItemHandler(itemHandler, (i, stack) -> i == 3, i -> i == 4); @@ -54,11 +54,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0, 1, 2, 3 -> world == null || world.getRecipeManager(). - listAllOfType(AssemblingMachineRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(AssemblingMachineRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); + case 0, 1, 2, 3 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 4 -> false; default -> super.isValid(slot, stack); }; @@ -150,9 +148,9 @@ protected void craftItem(RecipeEntry recipe) { itemHandler.removeStack(indexMinCount, input.count()); } - itemHandler.setStack(4, recipe.value().getResult(world.getRegistryManager()).copyWithCount( + itemHandler.setStack(4, recipe.value().craft(null, world.getRegistryManager()).copyWithCount( itemHandler.getStack(4).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); resetProgress(); } @@ -160,6 +158,6 @@ protected void craftItem(RecipeEntry recipe) { @Override protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry recipe) { return world != null && - InventoryUtils.canInsertItemIntoSlot(inventory, 4, recipe.value().getResult(world.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(inventory, 4, recipe.value().craft(null, world.getRegistryManager())); } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/AutoCrafterBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AutoCrafterBlockEntity.java index 829ddb55b..80eb52d48 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AutoCrafterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AutoCrafterBlockEntity.java @@ -12,6 +12,7 @@ import me.jddev0.ep.screen.AutoCrafterMenu; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.ItemStackUtils; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; @@ -19,13 +20,13 @@ import net.minecraft.inventory.*; import net.minecraft.item.ItemStack; import net.minecraft.nbt.*; -import net.minecraft.recipe.CraftingRecipe; -import net.minecraft.recipe.RecipeEntry; -import net.minecraft.recipe.RecipeType; -import net.minecraft.recipe.SpecialCraftingRecipe; +import net.minecraft.recipe.*; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryWrapper; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -59,7 +60,7 @@ public int getMaxCountPerStack() { private final SimpleInventory patternResultSlots = new SimpleInventory(1); private final InventoryChangedListener updatePatternListener = container -> updateRecipe(); private boolean hasRecipeLoaded = false; - private Identifier recipeIdForSetRecipe; + private RegistryKey> recipeIdForSetRecipe; private RecipeEntry craftingRecipe; private CraftingInventory oldCopyOfRecipe; private final ScreenHandler dummyContainerMenu = new ScreenHandler(null, -1) { @@ -206,7 +207,7 @@ protected void writeNbt(@NotNull NbtCompound nbt, RegistryWrapper.@NotNull Wrapp nbt.put("pattern", Inventories.writeNbt(new NbtCompound(), patternSlots.heldStacks, registries)); if(craftingRecipe != null) - nbt.put("recipe.id", NbtString.of(craftingRecipe.id().toString())); + nbt.put("recipe.id", NbtString.of(craftingRecipe.id().getValue().toString())); nbt.put("recipe.progress", NbtInt.of(progress)); nbt.put("recipe.max_progress", NbtInt.of(maxProgress)); @@ -228,7 +229,7 @@ protected void readNbt(@NotNull NbtCompound nbt, RegistryWrapper.@NotNull Wrappe if(!(tag instanceof NbtString stringTag)) throw new IllegalArgumentException("Tag must be of type StringTag!"); - recipeIdForSetRecipe = Identifier.tryParse(stringTag.asString()); + recipeIdForSetRecipe = RegistryKey.of(RegistryKeys.RECIPE, Identifier.tryParse(stringTag.asString())); } progress = nbt.getInt("recipe.progress"); @@ -355,7 +356,7 @@ public void cycleRecipe() { craftingRecipe.id(); for(int i = 0;i < recipes.size();i++) { - if(Objects.equals(recipes.get(i).id(), recipeIdForSetRecipe)) { + if(Objects.equals(recipes.get(i).id().getValue(), recipeIdForSetRecipe.getValue())) { recipeIdForSetRecipe = recipes.get((i + 1) % recipes.size()).id(); break; @@ -365,7 +366,7 @@ public void cycleRecipe() { updateRecipe(); } - public void setRecipeIdForSetRecipe(Identifier recipeIdForSetRecipe) { + public void setRecipeIdForSetRecipe(RegistryKey> recipeIdForSetRecipe) { this.recipeIdForSetRecipe = recipeIdForSetRecipe; updateRecipe(); @@ -380,9 +381,7 @@ private void updateRecipe() { if(hasRecipeLoaded && craftingRecipe != null && oldCopyOfRecipe != null) { oldRecipe = craftingRecipe; - oldResult = craftingRecipe.value() instanceof SpecialCraftingRecipe?craftingRecipe.value(). - craft(oldCopyOfRecipe.createRecipeInput(), world.getRegistryManager()): - craftingRecipe.value().getResult(world.getRegistryManager()); + oldResult = craftingRecipe.value().craft(oldCopyOfRecipe.createRecipeInput(), world.getRegistryManager()); } hasRecipeLoaded = true; @@ -392,19 +391,17 @@ private void updateRecipe() { for(int i = 0;i < patternSlotsForRecipe.size();i++) copyOfPatternSlots.setStack(i, patternSlotsForRecipe.getStack(i)); - Optional>> recipe = getRecipeFor(copyOfPatternSlots, world, recipeIdForSetRecipe); + Optional>, RecipeEntry>> recipe = getRecipeFor(copyOfPatternSlots, world, recipeIdForSetRecipe); if(recipe.isPresent()) { craftingRecipe = recipe.get().getSecond(); //Recipe with saved recipe id does not exist or pattern items are not compatible with recipe - if(recipeIdForSetRecipe != null && !Objects.equals(craftingRecipe.id(), recipeIdForSetRecipe)) { + if(recipeIdForSetRecipe != null && !Objects.equals(craftingRecipe.id().getValue(), recipeIdForSetRecipe.getValue())) { recipeIdForSetRecipe = craftingRecipe.id(); resetProgress(); } - ItemStack resultItemStack = craftingRecipe.value() instanceof SpecialCraftingRecipe?craftingRecipe.value(). - craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()): - craftingRecipe.value().getResult(world.getRegistryManager()); + ItemStack resultItemStack = craftingRecipe.value().craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()); patternResultSlots.setStack(0, resultItemStack); @@ -462,13 +459,12 @@ private void craftItem(CraftingInventory copyOfPatternSlots) { List outputItemStacks = new ArrayList<>(10); - ItemStack resultItemStack = craftingRecipe.value() instanceof SpecialCraftingRecipe?craftingRecipe.value(). - craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()): - craftingRecipe.value().getResult(world.getRegistryManager()); + ItemStack resultItemStack = craftingRecipe.value(). + craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()); outputItemStacks.add(resultItemStack); - for(ItemStack remainingItem:craftingRecipe.value().getRemainder(copyOfPatternSlots.createRecipeInput())) + for(ItemStack remainingItem:craftingRecipe.value().getRecipeRemainders(copyOfPatternSlots.createRecipeInput())) if(!remainingItem.isEmpty()) outputItemStacks.add(remainingItem); @@ -573,14 +569,12 @@ private boolean canInsertIntoOutputSlots() { List outputItemStacks = new ArrayList<>(10); - ItemStack resultItemStack = craftingRecipe.value() instanceof SpecialCraftingRecipe?craftingRecipe.value(). - craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()): - craftingRecipe.value().getResult(world.getRegistryManager()); + ItemStack resultItemStack = craftingRecipe.value().craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()); if(!resultItemStack.isEmpty()) outputItemStacks.add(resultItemStack); - for(ItemStack remainingItem:craftingRecipe.value().getRemainder(copyOfPatternSlots.createRecipeInput())) + for(ItemStack remainingItem:craftingRecipe.value().getRecipeRemainders(copyOfPatternSlots.createRecipeInput())) if(!remainingItem.isEmpty()) outputItemStacks.add(remainingItem); @@ -641,14 +635,12 @@ private boolean isOutputOrCraftingRemainderOfInput(ItemStack itemStack) { for(int i = 0;i < patternSlotsForRecipe.size();i++) copyOfPatternSlots.setStack(i, patternSlotsForRecipe.getStack(i)); - ItemStack resultItemStack = craftingRecipe.value() instanceof SpecialCraftingRecipe?craftingRecipe.value(). - craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()): - craftingRecipe.value().getResult(world.getRegistryManager()); + ItemStack resultItemStack = craftingRecipe.value().craft(copyOfPatternSlots.createRecipeInput(), world.getRegistryManager()); if(ItemStack.areItemsEqual(itemStack, resultItemStack) && ItemStack.areItemsAndComponentsEqual(itemStack, resultItemStack)) return true; - for(ItemStack remainingItem:craftingRecipe.value().getRemainder(copyOfPatternSlots.createRecipeInput())) + for(ItemStack remainingItem:craftingRecipe.value().getRecipeRemainders(copyOfPatternSlots.createRecipeInput())) if(ItemStack.areItemsEqual(itemStack, remainingItem) && ItemStack.areItemsAndComponentsEqual(itemStack, remainingItem)) return true; @@ -718,16 +710,19 @@ private SimpleInventory replaceCraftingPatternWithCurrentNBTItems(SimpleInventor } private List> getRecipesFor(CraftingInventory patternSlots, World level) { - return level.getRecipeManager().listAllOfType(RecipeType.CRAFTING). - stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id())). + if(!(level instanceof ServerWorld serverWorld)) + return List.of(); + + return RecipeUtils.getAllRecipesFor(serverWorld, RecipeType.CRAFTING). + stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id().getValue())). filter(recipe -> recipe.value().matches(patternSlots.createRecipeInput(), level)). - sorted(Comparator.comparing(recipe -> recipe.value().getResult(level.getRegistryManager()).getTranslationKey())). + sorted(Comparator.comparing(recipe -> recipe.id().getValue())). toList(); } - private Optional>> getRecipeFor(CraftingInventory patternSlots, World level, Identifier recipeId) { + private Optional>, RecipeEntry>> getRecipeFor(CraftingInventory patternSlots, World level, RegistryKey> recipeId) { List> recipes = getRecipesFor(patternSlots, level); - Optional> recipe = recipes.stream().filter(r -> r.id().equals(recipeId)).findFirst(); + Optional> recipe = recipes.stream().filter(r -> recipeId != null && r.id().getValue().equals(recipeId.getValue())).findFirst(); return recipe.or(() -> recipes.stream().findFirst()).map(r -> Pair.of(r.id(), r)); } diff --git a/src/main/java/me/jddev0/ep/block/entity/AutoPressMoldMakerBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AutoPressMoldMakerBlockEntity.java index f8985a15b..576350eba 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AutoPressMoldMakerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AutoPressMoldMakerBlockEntity.java @@ -59,6 +59,8 @@ public boolean isValid(int slot, ItemStack stack) { @Override public void markDirty() { super.markDirty(); + + AutoPressMoldMakerBlockEntity.this.markDirty(); } }; } @@ -76,9 +78,9 @@ protected void craftItem(RecipeEntry recipe) { itemHandler.setStack(1, shovel); itemHandler.removeStack(0, recipe.value().getClayCount()); - itemHandler.setStack(2, recipe.value().getResult(world.getRegistryManager()). + itemHandler.setStack(2, recipe.value().craft(null, world.getRegistryManager()). copyWithCount(itemHandler.getStack(2).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); resetProgress(); } @@ -89,6 +91,6 @@ protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry= recipe.value().getClayCount() && itemHandler.getStack(1).isIn(ItemTags.SHOVELS) && - InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().getResult(world.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().craft(null, world.getRegistryManager())); } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/AutoStonecutterBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/AutoStonecutterBlockEntity.java index 3e02208bc..4992206f9 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AutoStonecutterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AutoStonecutterBlockEntity.java @@ -50,7 +50,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || RecipeUtils.isIngredientOfAny(world, recipeType, stack); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 1 -> stack.isIn(ItemTags.PICKAXES); case 2 -> false; default -> super.isValid(slot, stack); @@ -60,6 +62,8 @@ public boolean isValid(int slot, ItemStack stack) { @Override public void markDirty() { super.markDirty(); + + AutoStonecutterBlockEntity.this.markDirty(); } }; } @@ -77,9 +81,9 @@ protected void craftItem(RecipeEntry recipe) { itemHandler.setStack(1, pickaxe); itemHandler.removeStack(0, 1); - itemHandler.setStack(2, recipe.value().getResult(world.getRegistryManager()). + itemHandler.setStack(2, recipe.value().craft(null, world.getRegistryManager()). copyWithCount(itemHandler.getStack(2).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); resetProgress(); } @@ -89,6 +93,6 @@ protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry { + extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity + implements IngredientPacketUpdate { public static final double CHARGER_RECIPE_ENERGY_CONSUMPTION_MULTIPLIER = ModConfigs.COMMON_CHARGER_CHARGER_RECIPE_ENERGY_CONSUMPTION_MULTIPLIER.getValue(); + protected List ingredientsOfRecipes = new ArrayList<>(); + final InputOutputItemHandler itemHandlerSided = new InputOutputItemHandler(itemHandler, (i, stack) -> true, i -> { if(i != 0) return false; ItemStack itemStack = itemHandler.getStack(i); - if(world != null && RecipeUtils.isResultOfAny(world, ChargerRecipe.Type.INSTANCE, itemStack)) + if(world instanceof ServerWorld serverWorld && RecipeUtils.isResultOfAny(serverWorld, ChargerRecipe.Type.INSTANCE, itemStack)) return true; - if(world == null || RecipeUtils.isIngredientOfAny(world, ChargerRecipe.Type.INSTANCE, itemStack)) + if(!(world instanceof ServerWorld serverWorld) || RecipeUtils.isIngredientOfAny(serverWorld, ChargerRecipe.Type.INSTANCE, itemStack)) return false; if(!EnergyStorageUtil.isEnergyStorage(itemStack)) @@ -121,7 +133,9 @@ public int getMaxCountPerStack() { @Override public boolean isValid(int slot, ItemStack stack) { - if(world == null || RecipeUtils.isIngredientOfAny(world, ChargerRecipe.Type.INSTANCE, stack)) + if(((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, EPRecipes.CHARGER_TYPE, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack))) return true; if(slot == 0) { @@ -194,6 +208,7 @@ public int size() { @Override public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { syncEnergyToPlayer(player); + syncIngredientListToPlayer(player); return new ChargerMenu(id, this, inventory, itemHandler, upgradeModuleInventory, this.data); } @@ -213,7 +228,7 @@ protected void readNbt(@NotNull NbtCompound nbt, RegistryWrapper.@NotNull Wrappe } public static void tick(World level, BlockPos blockPos, BlockState state, ChargerBlockEntity blockEntity) { - if(level.isClient()) + if(!(level instanceof ServerWorld serverWorld)) return; if(!blockEntity.redstoneMode.isActive(state.get(ChargerBlock.POWERED))) @@ -221,9 +236,9 @@ public static void tick(World level, BlockPos blockPos, BlockState state, Charge if(blockEntity.hasRecipe()) { ItemStack stack = blockEntity.itemHandler.getStack(0); - long energyConsumptionPerTick = 0; + long energyConsumptionPerTick; - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverWorld.getRecipeManager(). getFirstMatch(ChargerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(blockEntity.itemHandler), level); if(recipe.isPresent()) { if(blockEntity.energyConsumptionLeft == -1) @@ -282,7 +297,7 @@ public static void tick(World level, BlockPos blockPos, BlockState state, Charge if(blockEntity.energyConsumptionLeft <= 0) { recipe.ifPresent(chargerRecipe -> - blockEntity.itemHandler.setStack(0, chargerRecipe.value().getResult(level.getRegistryManager()).copyWithCount(1))); + blockEntity.itemHandler.setStack(0, chargerRecipe.value().craft(null, level.getRegistryManager()).copyWithCount(1))); blockEntity.resetProgress(); } @@ -299,10 +314,12 @@ private void resetProgress() { } private boolean hasRecipe() { + if(!(world instanceof ServerWorld serverWorld)) + return false; + ItemStack stack = itemHandler.getStack(0); - Optional> recipe = world == null?Optional.empty(): - world.getRecipeManager().getFirstMatch(ChargerRecipe.Type.INSTANCE, + Optional> recipe = serverWorld.getRecipeManager().getFirstMatch(ChargerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(itemHandler), world); if(recipe.isPresent()) @@ -317,4 +334,22 @@ protected void updateUpgradeModules() { super.updateUpgradeModules(); } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, EPRecipes.CHARGER_TYPE))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/CoalEngineBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/CoalEngineBlockEntity.java index 2f7db4a23..3c1ff5d1e 100644 --- a/src/main/java/me/jddev0/ep/block/entity/CoalEngineBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/CoalEngineBlockEntity.java @@ -8,7 +8,6 @@ import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; import me.jddev0.ep.screen.CoalEngineMenu; import me.jddev0.ep.util.ByteUtils; -import net.fabricmc.fabric.api.registry.FuelRegistry; import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; @@ -45,8 +44,7 @@ public class CoalEngineBlockEntity //Do not allow extraction of fuel items, allow for non fuel items (Bucket of Lava -> Empty Bucket) ItemStack item = itemHandler.getStack(i); - Integer burnTime = FuelRegistry.INSTANCE.get(item.getItem()); - return burnTime == null || burnTime <= 0; + return world != null && world.getFuelRegistry().getFuelTicks(item) <= 0; }); private int progress; @@ -102,10 +100,8 @@ protected SimpleInventory initInventoryStorage() { return new SimpleInventory(slotCount) { @Override public boolean isValid(int slot, ItemStack stack) { - if(slot == 0) { - Integer burnTime = FuelRegistry.INSTANCE.get(stack.getItem()); - return burnTime != null && burnTime > 0; - } + if(slot == 0) + return world.getFuelRegistry().getFuelTicks(stack) > 0; return super.isValid(slot, stack); } @@ -201,8 +197,7 @@ private static void tickRecipe(World level, BlockPos blockPos, BlockState state, if(blockEntity.maxProgress > 0 || hasRecipe(blockEntity)) { ItemStack item = blockEntity.itemHandler.getStack(0); - Integer burnTime = FuelRegistry.INSTANCE.get(item.getItem()); - long energyProduction = burnTime == null?-1:burnTime; + long energyProduction = level.getFuelRegistry().getFuelTicks(item); energyProduction = (long)(energyProduction * ENERGY_PRODUCTION_MULTIPLIER); if(blockEntity.progress == 0) blockEntity.energyProductionLeft = energyProduction; @@ -363,8 +358,7 @@ private void resetProgress(BlockPos blockPos, BlockState state) { private static boolean hasRecipe(CoalEngineBlockEntity blockEntity) { ItemStack item = blockEntity.itemHandler.getStack(0); - Integer burnTime = FuelRegistry.INSTANCE.get(item.getItem()); - if(burnTime == null || burnTime <= 0) + if(blockEntity.world == null || blockEntity.world.getFuelRegistry().getFuelTicks(item) <= 0) return false; return item.getRecipeRemainder().isEmpty() || item.getCount() == 1; diff --git a/src/main/java/me/jddev0/ep/block/entity/CompressorBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/CompressorBlockEntity.java index d50a863d9..441e94dc6 100644 --- a/src/main/java/me/jddev0/ep/block/entity/CompressorBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/CompressorBlockEntity.java @@ -45,10 +45,10 @@ protected void craftItem(RecipeEntry recipe) { if(world == null || !hasRecipe()) return; - itemHandler.removeStack(0, recipe.value().getInputCount()); - itemHandler.setStack(1, recipe.value().getResult(world.getRegistryManager()). + itemHandler.removeStack(0, recipe.value().getInput().count()); + itemHandler.setStack(1, recipe.value().craft(null, world.getRegistryManager()). copyWithCount(itemHandler.getStack(1).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); resetProgress(); } diff --git a/src/main/java/me/jddev0/ep/block/entity/CrystalGrowthChamberBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/CrystalGrowthChamberBlockEntity.java index 6c1978838..8a69e3c45 100644 --- a/src/main/java/me/jddev0/ep/block/entity/CrystalGrowthChamberBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/CrystalGrowthChamberBlockEntity.java @@ -9,11 +9,13 @@ import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.screen.CrystalGrowthChamberMenu; import me.jddev0.ep.util.InventoryUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.BlockState; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.input.RecipeInput; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; public class CrystalGrowthChamberBlockEntity extends SimpleRecipeMachineBlockEntity { @@ -48,10 +50,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || world.getRecipeManager(). - listAllOfType(CrystalGrowthChamberRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(CrystalGrowthChamberRecipe::getInput). - anyMatch(ingredient -> ingredient.test(stack)); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 1 -> false; default -> super.isValid(slot, stack); }; @@ -93,7 +94,7 @@ protected void craftItem(RecipeEntry recipe) { if(world == null || !hasRecipe()) return; - itemHandler.removeStack(0, recipe.value().getInputCount()); + itemHandler.removeStack(0, recipe.value().getInput().count()); ItemStack output = recipe.value().generateOutput(world.random); diff --git a/src/main/java/me/jddev0/ep/block/entity/EPBlockEntities.java b/src/main/java/me/jddev0/ep/block/entity/EPBlockEntities.java index 767ce7f2e..a9b232b93 100644 --- a/src/main/java/me/jddev0/ep/block/entity/EPBlockEntities.java +++ b/src/main/java/me/jddev0/ep/block/entity/EPBlockEntities.java @@ -2,6 +2,7 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.block.*; +import net.fabricmc.fabric.api.object.builder.v1.block.entity.FabricBlockEntityTypeBuilder; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidStorage; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.item.ItemStorage; @@ -565,9 +566,9 @@ private static BlockEntityType createSolarPanelBlockEntit @SuppressWarnings("unchecked") private static BlockEntityType createBlockEntity(String name, Block block, - BlockEntityType.BlockEntityFactory factory) { + FabricBlockEntityTypeBuilder.Factory factory) { return (BlockEntityType)Registry.register(Registries.BLOCK_ENTITY_TYPE, EPAPI.id(name), - BlockEntityType.Builder.create(factory, block).build(null)); + FabricBlockEntityTypeBuilder.create(factory, block).build(null)); } private static BlockEntityType registerInventoryStorage(BlockEntityType blockEntityType, diff --git a/src/main/java/me/jddev0/ep/block/entity/EnergizerBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/EnergizerBlockEntity.java index 528a8bf17..a938b17a2 100644 --- a/src/main/java/me/jddev0/ep/block/entity/EnergizerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/EnergizerBlockEntity.java @@ -6,8 +6,12 @@ import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; +import me.jddev0.ep.networking.ModMessages; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; import me.jddev0.ep.recipe.ContainerRecipeInputWrapper; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.EnergizerRecipe; +import me.jddev0.ep.recipe.IngredientPacketUpdate; import me.jddev0.ep.screen.EnergizerMenu; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.InventoryUtils; @@ -21,10 +25,13 @@ import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtInt; import net.minecraft.nbt.NbtLong; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeEntry; import net.minecraft.registry.RegistryWrapper; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -33,10 +40,13 @@ import me.jddev0.ep.energy.EnergizedPowerEnergyStorage; import me.jddev0.ep.energy.EnergizedPowerLimitingEnergyStorage; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; public class EnergizerBlockEntity - extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity { + extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity + implements IngredientPacketUpdate { public static final double ENERGY_CONSUMPTION_MULTIPLIER = ModConfigs.COMMON_ENERGIZER_ENERGY_CONSUMPTION_MULTIPLIER.getValue(); final InputOutputItemHandler itemHandlerSided = new InputOutputItemHandler(itemHandler, (i, stack) -> i == 0, i -> i == 1); @@ -46,6 +56,8 @@ public class EnergizerBlockEntity private long energyConsumptionLeft = -1; private boolean hasEnoughEnergy; + protected List ingredientsOfRecipes = new ArrayList<>(); + public EnergizerBlockEntity(BlockPos blockPos, BlockState blockState) { super( EPBlockEntities.ENERGIZER_ENTITY, blockPos, blockState, @@ -95,7 +107,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || RecipeUtils.isIngredientOfAny(world, EnergizerRecipe.Type.INSTANCE, stack); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, EPRecipes.ENERGIZER_TYPE, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 1 -> false; default -> super.isValid(slot, stack); }; @@ -163,6 +177,7 @@ public int size() { @Override public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { syncEnergyToPlayer(player); + syncIngredientListToPlayer(player); return new EnergizerMenu(id, this, inventory, itemHandler, upgradeModuleInventory, this.data); } @@ -184,14 +199,14 @@ protected void readNbt(@NotNull NbtCompound nbt, RegistryWrapper.@NotNull Wrappe } public static void tick(World level, BlockPos blockPos, BlockState state, EnergizerBlockEntity blockEntity) { - if(level.isClient()) + if(level.isClient() || !(level instanceof ServerWorld serverWorld)) return; if(!blockEntity.redstoneMode.isActive(state.get(Properties.POWERED))) return; if(hasRecipe(blockEntity)) { - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverWorld.getRecipeManager(). getFirstMatch(EnergizerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(blockEntity.itemHandler), level); if(recipe.isEmpty()) return; @@ -260,15 +275,18 @@ private void resetProgress(BlockPos blockPos, BlockState state) { private static void craftItem(BlockPos blockPos, BlockState state, EnergizerBlockEntity blockEntity) { World level = blockEntity.world; - Optional> recipe = level.getRecipeManager(). + if(!(level instanceof ServerWorld serverWorld)) + return; + + Optional> recipe = serverWorld.getRecipeManager(). getFirstMatch(EnergizerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(blockEntity.itemHandler), level); if(!hasRecipe(blockEntity) || recipe.isEmpty()) return; blockEntity.itemHandler.removeStack(0, 1); - blockEntity.itemHandler.setStack(1, recipe.get().value().getResult(level.getRegistryManager()).copyWithCount( - blockEntity.itemHandler.getStack(1).getCount() + recipe.get().value().getResult(level.getRegistryManager()).getCount())); + blockEntity.itemHandler.setStack(1, recipe.get().value().craft(null, level.getRegistryManager()).copyWithCount( + blockEntity.itemHandler.getStack(1).getCount() + recipe.get().value().craft(null, level.getRegistryManager()).getCount())); blockEntity.resetProgress(blockPos, state); } @@ -276,11 +294,14 @@ private static void craftItem(BlockPos blockPos, BlockState state, EnergizerBloc private static boolean hasRecipe(EnergizerBlockEntity blockEntity) { World level = blockEntity.world; - Optional> recipe = level.getRecipeManager(). + if(!(level instanceof ServerWorld serverWorld)) + return false; + + Optional> recipe = serverWorld.getRecipeManager(). getFirstMatch(EnergizerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(blockEntity.itemHandler), level); return recipe.isPresent() && - InventoryUtils.canInsertItemIntoSlot(blockEntity.itemHandler, 1, recipe.get().value().getResult(level.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(blockEntity.itemHandler, 1, recipe.get().value().craft(null, level.getRegistryManager())); } @Override @@ -289,4 +310,22 @@ protected void updateUpgradeModules() { super.updateUpgradeModules(); } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, EPRecipes.ENERGIZER_TYPE))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/FluidTransposerBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/FluidTransposerBlockEntity.java index be9882270..66b286221 100644 --- a/src/main/java/me/jddev0/ep/block/entity/FluidTransposerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/FluidTransposerBlockEntity.java @@ -29,6 +29,7 @@ import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.screen.PropertyDelegate; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.StringIdentifiable; import net.minecraft.util.dynamic.Codecs; import net.minecraft.util.math.BlockPos; @@ -121,7 +122,9 @@ public void markDirty() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || RecipeUtils.isIngredientOfAny(world, recipeType, stack); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 1 -> false; default -> super.isValid(slot, stack); }; @@ -154,7 +157,8 @@ private boolean isFluidValid(FluidVariant variant) { if(world == null) return false; - return world.getRecipeManager().listAllOfType(recipeType).stream().map(RecipeEntry::value). + return !(world instanceof ServerWorld serverWorld) || //Always false on client side (Recipes are no longer synced) + RecipeUtils.getAllRecipesFor(serverWorld, recipeType).stream().map(RecipeEntry::value). map(FluidTransposerRecipe::getFluid). anyMatch(fluidStack -> variant.isOf(fluidStack.getFluid()) && variant.componentsMatch(fluidStack.getFluidVariant().getComponents())); @@ -188,7 +192,10 @@ protected void readNbt(@NotNull NbtCompound nbt, RegistryWrapper.@NotNull Wrappe @Override protected Optional> getRecipeFor(SimpleInventory inventory) { - return world.getRecipeManager().listAllOfType(recipeType). + if(!(world instanceof ServerWorld serverWorld)) + return Optional.empty(); + + return RecipeUtils.getAllRecipesFor(serverWorld, recipeType). stream().filter(recipe -> recipe.value().getMode() == mode). filter(recipe -> recipe.value().matches(getRecipeInput(inventory), world)). filter(recipe -> (mode == Mode.EMPTYING && fluidStorage.isEmpty()) || @@ -225,9 +232,9 @@ protected void craftItem(RecipeEntry recipe) { } itemHandler.removeStack(0, 1); - itemHandler.setStack(1, recipe.value().getResult(world.getRegistryManager()). + itemHandler.setStack(1, recipe.value().craft(null, world.getRegistryManager()). copyWithCount(itemHandler.getStack(1).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); resetProgress(); } @@ -239,7 +246,7 @@ protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry= fluidAmountInRecipe && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().getResult(world.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().craft(null, world.getRegistryManager())); } public void setMode(boolean isFillingMode) { diff --git a/src/main/java/me/jddev0/ep/block/entity/HeatGeneratorBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/HeatGeneratorBlockEntity.java index 4e7b0ecb0..201662cc7 100644 --- a/src/main/java/me/jddev0/ep/block/entity/HeatGeneratorBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/HeatGeneratorBlockEntity.java @@ -5,6 +5,7 @@ import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; import me.jddev0.ep.recipe.HeatGeneratorRecipe; import me.jddev0.ep.screen.HeatGeneratorMenu; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntity; @@ -14,6 +15,7 @@ import net.minecraft.fluid.FluidState; import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; @@ -22,6 +24,7 @@ import me.jddev0.ep.energy.EnergizedPowerEnergyStorage; import me.jddev0.ep.energy.EnergizedPowerLimitingEnergyStorage; +import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -78,10 +81,10 @@ public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity } public static void tick(World level, BlockPos blockPos, BlockState state, HeatGeneratorBlockEntity blockEntity) { - if(level.isClient()) + if(level.isClient() || !(level instanceof ServerWorld serverWorld)) return; - List> recipes = level.getRecipeManager().listAllOfType(HeatGeneratorRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, HeatGeneratorRecipe.Type.INSTANCE); long productionSum = 0; for(Direction direction:Direction.values()) { diff --git a/src/main/java/me/jddev0/ep/block/entity/InductionSmelterBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/InductionSmelterBlockEntity.java index 862216f7d..a1bf15d3c 100644 --- a/src/main/java/me/jddev0/ep/block/entity/InductionSmelterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/InductionSmelterBlockEntity.java @@ -11,6 +11,7 @@ import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.screen.InductionSmelterMenu; import me.jddev0.ep.util.InventoryUtils; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.item.ItemVariant; import net.fabricmc.fabric.api.transfer.v1.storage.Storage; import net.minecraft.block.BlockState; @@ -18,12 +19,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.input.RecipeInput; +import net.minecraft.server.world.ServerWorld; import net.minecraft.state.property.Properties; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; -import java.util.Arrays; - public class InductionSmelterBlockEntity extends SimpleRecipeMachineBlockEntity { public static final float RECIPE_DURATION_MULTIPLIER = ModConfigs.COMMON_INDUCTION_SMELTER_RECIPE_DURATION_MULTIPLIER.getValue(); @@ -56,11 +56,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> world == null || world.getRecipeManager(). - listAllOfType(AlloyFurnaceRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(AlloyFurnaceRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); + case 0, 1, 2 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 3, 4 -> false; default -> false; }; diff --git a/src/main/java/me/jddev0/ep/block/entity/ItemConveyorBeltBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/ItemConveyorBeltBlockEntity.java index a73020c9a..51242f5a8 100644 --- a/src/main/java/me/jddev0/ep/block/entity/ItemConveyorBeltBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/ItemConveyorBeltBlockEntity.java @@ -102,7 +102,7 @@ public static void tick(World level, BlockPos blockPos, BlockState state, ItemCo new ItemStackSyncS2CPacket(i, blockEntity.getStack(i), blockPos) ); - if(level.getTime() % blockEntity.TICKS_PER_STEP == 0) { + if(level.getTime() % ItemConveyorBeltBlockEntity.TICKS_PER_STEP == 0) { int slotCount = blockEntity.itemHandler.size(); if(!blockEntity.itemHandler.getStack(slotCount - 1).isEmpty()) diff --git a/src/main/java/me/jddev0/ep/block/entity/MetalPressBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/MetalPressBlockEntity.java index 5e03851ae..639ff98d6 100644 --- a/src/main/java/me/jddev0/ep/block/entity/MetalPressBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/MetalPressBlockEntity.java @@ -10,6 +10,7 @@ import me.jddev0.ep.registry.tags.EnergizedPowerItemTags; import me.jddev0.ep.screen.MetalPressMenu; import me.jddev0.ep.util.InventoryUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.BlockState; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; @@ -51,8 +52,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || world.getRecipeManager().listAllOfType(MetalPressRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(MetalPressRecipe::getInput).anyMatch(ingredient -> ingredient.test(stack)); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 1 -> world == null || stack.isIn(EnergizedPowerItemTags.METAL_PRESS_MOLDS) && (getStack(1).isEmpty() || stack.getCount() == 1); case 2 -> false; @@ -98,10 +100,10 @@ protected void craftItem(RecipeEntry recipe) { pressMold.damage(1, serverWorld, null, item -> pressMold.setCount(0)); itemHandler.setStack(1, pressMold); - itemHandler.removeStack(0, recipe.value().getInputCount()); - itemHandler.setStack(2, recipe.value().getResult(world.getRegistryManager()). + itemHandler.removeStack(0, recipe.value().getInput().count()); + itemHandler.setStack(2, recipe.value().craft(null, world.getRegistryManager()). copyWithCount(itemHandler.getStack(2).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); resetProgress(); } @@ -109,6 +111,6 @@ protected void craftItem(RecipeEntry recipe) { @Override protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry recipe) { return world != null && - InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().getResult(world.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().craft(null, world.getRegistryManager())); } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/PlantGrowthChamberBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/PlantGrowthChamberBlockEntity.java index 7e50461e5..f2ab58acd 100644 --- a/src/main/java/me/jddev0/ep/block/entity/PlantGrowthChamberBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/PlantGrowthChamberBlockEntity.java @@ -4,6 +4,8 @@ import me.jddev0.ep.config.ModConfigs; import me.jddev0.ep.inventory.InputOutputItemHandler; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; +import me.jddev0.ep.networking.ModMessages; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; import me.jddev0.ep.recipe.ContainerRecipeInputWrapper; import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.PlantGrowthChamberFertilizerRecipe; @@ -11,15 +13,22 @@ import me.jddev0.ep.screen.PlantGrowthChamberMenu; import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.BlockState; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtDouble; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; +import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Arrays; @@ -35,6 +44,8 @@ public class PlantGrowthChamberBlockEntity extends SimpleRecipeMachineBlockEntit private double fertilizerSpeedMultiplier = 1; private double fertilizerEnergyConsumptionMultiplier = 1; + protected List ingredientsOfFertilizerRecipes = new ArrayList<>(); + public PlantGrowthChamberBlockEntity(BlockPos blockPos, BlockState blockState) { super( EPBlockEntities.PLANT_GROWTH_CHAMBER_ENTITY, blockPos, blockState, @@ -59,8 +70,12 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || RecipeUtils.isIngredientOfAny(world, PlantGrowthChamberRecipe.Type.INSTANCE, stack); - case 1 -> world == null || RecipeUtils.isIngredientOfAny(world, PlantGrowthChamberFertilizerRecipe.Type.INSTANCE, stack); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); + case 1 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_TYPE, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfFertilizerRecipes, stack)); case 2, 3, 4, 5 -> false; default -> super.isValid(slot, stack); }; @@ -87,6 +102,13 @@ public void markDirty() { }; } + @Override + public @Nullable ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { + syncFertilizerIngredientListToPlayer(player); + + return super.createMenu(id, inventory, player); + } + @Override protected void writeNbt(@NotNull NbtCompound nbt, @NotNull RegistryWrapper.WrapperLookup registries) { super.writeNbt(nbt, registries); @@ -123,10 +145,10 @@ protected void resetProgress() { @Override protected void onStartCrafting(RecipeEntry recipe) { - if(world == null) + if(!(world instanceof ServerWorld serverWorld)) return; - Optional> fertilizerRecipe = world.getRecipeManager(). + Optional> fertilizerRecipe = serverWorld.getRecipeManager(). getFirstMatch(PlantGrowthChamberFertilizerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(itemHandler), world); if(fertilizerRecipe.isPresent()) { @@ -244,4 +266,24 @@ private static boolean canInsertItemsIntoOutputSlots(SimpleInventory inventory, return itemsStacks.isEmpty(); } + + protected void syncFertilizerIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 1, RecipeUtils.getIngredientsOf(serverWorld, EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_TYPE))); + } + + public List getIngredientsOfFertilizerRecipes() { + return ingredientsOfFertilizerRecipes; + } + + @Override + public void setIngredients(int index, List ingredients) { + super.setIngredients(index, ingredients); + + if(index == 1) + this.ingredientsOfFertilizerRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/PoweredFurnaceBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/PoweredFurnaceBlockEntity.java index 85a0fff2f..15206f32a 100644 --- a/src/main/java/me/jddev0/ep/block/entity/PoweredFurnaceBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/PoweredFurnaceBlockEntity.java @@ -7,8 +7,8 @@ import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; import me.jddev0.ep.networking.ModMessages; -import me.jddev0.ep.networking.packet.SyncFurnaceRecipeTypeS2CPacket; -import me.jddev0.ep.recipe.FurnaceRecipeTypePacketUpdate; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; +import me.jddev0.ep.recipe.IngredientPacketUpdate; import me.jddev0.ep.screen.PoweredFurnaceMenu; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.InventoryUtils; @@ -20,6 +20,7 @@ import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; import net.minecraft.recipe.AbstractCookingRecipe; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.RecipeType; import net.minecraft.recipe.input.SingleStackRecipeInput; @@ -34,19 +35,20 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.List; import java.util.Optional; public class PoweredFurnaceBlockEntity extends WorkerMachineBlockEntity> - implements FurnaceRecipeTypePacketUpdate { + implements IngredientPacketUpdate { private static final List<@NotNull Identifier> RECIPE_BLACKLIST = ModConfigs.COMMON_POWERED_FURNACE_RECIPE_BLACKLIST.getValue(); public static final float RECIPE_DURATION_MULTIPLIER = ModConfigs.COMMON_POWERED_FURNACE_RECIPE_DURATION_MULTIPLIER.getValue(); final InputOutputItemHandler itemHandlerSided = new InputOutputItemHandler(itemHandler, (i, stack) -> i == 0, i -> i == 1); - private @NotNull RecipeType recipeType = RecipeType.SMELTING; + protected List ingredientsOfRecipes = new ArrayList<>(); public PoweredFurnaceBlockEntity(BlockPos blockPos, BlockState blockState) { super( @@ -73,7 +75,9 @@ protected SimpleInventory initInventoryStorage() { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> world == null || RecipeUtils.isIngredientOfAny(world, getRecipeForFurnaceModeUpgrade(), stack); + case 0 -> ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, getRecipeForFurnaceModeUpgrade(), stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 1 -> false; default -> super.isValid(slot, stack); }; @@ -141,8 +145,7 @@ public int size() { @Override public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { syncEnergyToPlayer(player); - ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, - new SyncFurnaceRecipeTypeS2CPacket(getRecipeForFurnaceModeUpgrade(), getPos())); + syncIngredientListToPlayer(player); return new PoweredFurnaceMenu(id, this, inventory, itemHandler, upgradeModuleInventory, this.data); } @@ -197,8 +200,8 @@ private static void craftItem(BlockPos blockPos, BlockState state, PoweredFurnac return; blockEntity.itemHandler.removeStack(0, 1); - blockEntity.itemHandler.setStack(1, recipe.get().value().getResult(level.getRegistryManager()).copyWithCount( - blockEntity.itemHandler.getStack(1).getCount() + recipe.get().value().getResult(level.getRegistryManager()).getCount())); + blockEntity.itemHandler.setStack(1, recipe.get().value().craft(null, level.getRegistryManager()).copyWithCount( + blockEntity.itemHandler.getStack(1).getCount() + recipe.get().value().craft(null, level.getRegistryManager()).getCount())); blockEntity.resetProgress(); } @@ -209,20 +212,20 @@ private static boolean hasRecipe(PoweredFurnaceBlockEntity blockEntity) { Optional> recipe = blockEntity.getRecipeFor(blockEntity.itemHandler, level); return recipe.isPresent() && - InventoryUtils.canInsertItemIntoSlot(blockEntity.itemHandler, 1, recipe.get().value().getResult(level.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(blockEntity.itemHandler, 1, recipe.get().value().craft(null, level.getRegistryManager())); } private Optional> getRecipeFor(Inventory container, World level) { - return level.getRecipeManager().listAllOfType(getRecipeForFurnaceModeUpgrade()). - stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id())). + if(!(world instanceof ServerWorld serverWorld)) + return Optional.empty(); + + return RecipeUtils.getAllRecipesFor(serverWorld, getRecipeForFurnaceModeUpgrade()). + stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id().getValue())). filter(recipe -> recipe.value().matches(new SingleStackRecipeInput(container.getStack(0)), level)). findFirst(); } public RecipeType getRecipeForFurnaceModeUpgrade() { - if(world != null && world.isClient()) - return recipeType; - double value = upgradeModuleInventory.getUpgradeModuleModifierEffect(3, UpgradeModuleModifier.FURNACE_MODE); if(value == 1) return RecipeType.BLASTING; @@ -232,11 +235,6 @@ else if(value == 2) return RecipeType.SMELTING; } - @Override - public void setRecipeType(@NotNull RecipeType recipeType) { - this.recipeType = recipeType; - } - @Override protected void updateUpgradeModules() { super.updateUpgradeModules(); @@ -244,8 +242,26 @@ protected void updateUpgradeModules() { if(world != null && !world.isClient()) { ModMessages.sendServerPacketToPlayersWithinXBlocks( getPos(), (ServerWorld)world, 32, - new SyncFurnaceRecipeTypeS2CPacket(getRecipeForFurnaceModeUpgrade(), getPos()) + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf((ServerWorld)world, getRecipeForFurnaceModeUpgrade())) ); } } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, getRecipeForFurnaceModeUpgrade()))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/PressMoldMakerBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/PressMoldMakerBlockEntity.java index 58604a40b..01aa834b8 100644 --- a/src/main/java/me/jddev0/ep/block/entity/PressMoldMakerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/PressMoldMakerBlockEntity.java @@ -9,6 +9,7 @@ import me.jddev0.ep.recipe.PressMoldMakerRecipe; import me.jddev0.ep.screen.PressMoldMakerMenu; import me.jddev0.ep.util.InventoryUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.BlockState; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; @@ -23,10 +24,7 @@ import net.minecraft.util.math.BlockPos; import org.jetbrains.annotations.Nullable; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; public class PressMoldMakerBlockEntity @@ -91,25 +89,31 @@ public int getRedstoneOutput() { } public void craftItem(Identifier recipeId) { - Optional> recipe = world.getRecipeManager().values().stream(). - filter(recipeHolder -> recipeHolder.id().equals(recipeId)).findFirst(); + if(!(world instanceof ServerWorld serverWorld)) + return; + + Optional> recipe = serverWorld.getRecipeManager().values().stream(). + filter(recipeHolder -> recipeHolder.id().getValue().equals(recipeId)).findFirst(); if(recipe.isEmpty() || !(recipe.get().value() instanceof PressMoldMakerRecipe pressMoldMakerRecipe)) return; if(!pressMoldMakerRecipe.matches(new ContainerRecipeInputWrapper(itemHandler), world) || - !InventoryUtils.canInsertItemIntoSlot(itemHandler, 1, pressMoldMakerRecipe.getResult(world.getRegistryManager()))) + !InventoryUtils.canInsertItemIntoSlot(itemHandler, 1, pressMoldMakerRecipe.craft(null, world.getRegistryManager()))) return; itemHandler.removeStack(0, pressMoldMakerRecipe.getClayCount()); - itemHandler.setStack(1, pressMoldMakerRecipe.getResult(world.getRegistryManager()).copyWithCount( - itemHandler.getStack(1).getCount() + pressMoldMakerRecipe.getResult(world.getRegistryManager()).getCount())); + itemHandler.setStack(1, pressMoldMakerRecipe.craft(null, world.getRegistryManager()).copyWithCount( + itemHandler.getStack(1).getCount() + pressMoldMakerRecipe.craft(null, world.getRegistryManager()).getCount())); } private List, Boolean>> createRecipeList() { - List> recipes = world.getRecipeManager().listAllOfType(PressMoldMakerRecipe.Type.INSTANCE); + if(!(world instanceof ServerWorld serverWorld)) + return List.of(); + + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, PressMoldMakerRecipe.Type.INSTANCE); return recipes.stream(). - sorted(Comparator.comparing(recipe -> recipe.value().getResult(world.getRegistryManager()).getTranslationKey())). + sorted(Comparator.comparing(recipe -> recipe.id().getValue())). map(recipe -> Pair.of(recipe, recipe.value().matches(new ContainerRecipeInputWrapper(itemHandler), world))). collect(Collectors.toList()); } diff --git a/src/main/java/me/jddev0/ep/block/entity/SawmillBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/SawmillBlockEntity.java index c60e73c17..763086c8d 100644 --- a/src/main/java/me/jddev0/ep/block/entity/SawmillBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/SawmillBlockEntity.java @@ -47,9 +47,9 @@ protected void craftItem(RecipeEntry recipe) { return; itemHandler.removeStack(0, 1); - itemHandler.setStack(1, recipe.value().getResult(world.getRegistryManager()). + itemHandler.setStack(1, recipe.value().craft(null, world.getRegistryManager()). copyWithCount(itemHandler.getStack(1).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); if(!recipe.value().getSecondaryOutput().isEmpty()) itemHandler.setStack(2, recipe.value().getSecondaryOutput(). @@ -62,7 +62,7 @@ protected void craftItem(RecipeEntry recipe) { @Override protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry recipe) { return world != null && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().getResult(world.getRegistryManager())) && + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().craft(null, world.getRegistryManager())) && (recipe.value().getSecondaryOutput().isEmpty() || InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().getSecondaryOutput())); } diff --git a/src/main/java/me/jddev0/ep/block/entity/StoneSolidifierBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/StoneSolidifierBlockEntity.java index f873e6215..b202f8449 100644 --- a/src/main/java/me/jddev0/ep/block/entity/StoneSolidifierBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/StoneSolidifierBlockEntity.java @@ -137,9 +137,9 @@ protected void craftItem(RecipeEntry recipe) { transaction.commit(); } - itemHandler.setStack(0, recipe.value().getResult(world.getRegistryManager()). + itemHandler.setStack(0, recipe.value().craft(null, world.getRegistryManager()). copyWithCount(itemHandler.getStack(0).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(null, world.getRegistryManager()).getCount())); resetProgress(); } @@ -149,6 +149,6 @@ protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry= FluidUtils.convertMilliBucketsToDroplets(recipe.value().getWaterAmount()) && fluidStorage.parts.get(1).getAmount() >= FluidUtils.convertMilliBucketsToDroplets(recipe.value().getLavaAmount()) && - InventoryUtils.canInsertItemIntoSlot(inventory, 0, recipe.value().getResult(world.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(inventory, 0, recipe.value().craft(null, world.getRegistryManager())); } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/TeleporterBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/TeleporterBlockEntity.java index 0f9af9910..09dd50fb8 100644 --- a/src/main/java/me/jddev0/ep/block/entity/TeleporterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/TeleporterBlockEntity.java @@ -392,7 +392,7 @@ public static void teleportPlayer(ServerPlayerEntity player, EnergyStorage energ Vec3d toPosCenter = toPos.toCenterPos(); player.teleport((ServerWorld)toDimension, toPosCenter.getX(), toPos.getY() + 1, toPosCenter.getZ(), - new HashSet<>(), 0, 0); + new HashSet<>(), 0, 0, true); player.networkHandler.sendPacket(new PlaySoundS2CPacket( RegistryEntry.of(SoundEvents.ENTITY_ENDERMAN_TELEPORT), SoundCategory.BLOCKS, diff --git a/src/main/java/me/jddev0/ep/block/entity/ThermalGeneratorBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/ThermalGeneratorBlockEntity.java index c3d247cc1..05a6bd300 100644 --- a/src/main/java/me/jddev0/ep/block/entity/ThermalGeneratorBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/ThermalGeneratorBlockEntity.java @@ -12,6 +12,7 @@ import me.jddev0.ep.screen.ThermalGeneratorMenu; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.FluidUtils; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction; import net.minecraft.block.BlockState; @@ -22,6 +23,7 @@ import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; @@ -31,6 +33,7 @@ import me.jddev0.ep.energy.EnergizedPowerLimitingEnergyStorage; import java.util.Arrays; +import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -92,10 +95,10 @@ protected void onFinalCommit() { } private boolean isFluidValid(FluidVariant variant) { - if(world == null) + if(!(world instanceof ServerWorld serverWorld)) return false; - List> recipes = world.getRecipeManager().listAllOfType(ThermalGeneratorRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, ThermalGeneratorRecipe.Type.INSTANCE); return recipes.stream().map(RecipeEntry::value).map(ThermalGeneratorRecipe::getInput). anyMatch(inputs -> Arrays.stream(inputs).anyMatch(input -> variant.getFluid() == input)); @@ -123,10 +126,10 @@ public int get(int index) { else if(index == 5) return comparatorMode.ordinal(); - if(world == null || index > 3) + if(!(world instanceof ServerWorld serverWorld) || index > 3) return 0; - List> recipes = world.getRecipeManager().listAllOfType(ThermalGeneratorRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, ThermalGeneratorRecipe.Type.INSTANCE); long rawProduction = 0; outer: @@ -185,10 +188,10 @@ public static void tick(World level, BlockPos blockPos, BlockState state, Therma } private static void tickRecipe(World level, BlockPos blockPos, BlockState state, ThermalGeneratorBlockEntity blockEntity) { - if(level.isClient()) + if(level.isClient() || !(level instanceof ServerWorld serverWorld)) return; - List> recipes = level.getRecipeManager().listAllOfType(ThermalGeneratorRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, ThermalGeneratorRecipe.Type.INSTANCE); long rawProduction = 0; outer: diff --git a/src/main/java/me/jddev0/ep/block/entity/base/SelectableRecipeFluidMachineBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/base/SelectableRecipeFluidMachineBlockEntity.java index db07d2ecd..0b90f764e 100644 --- a/src/main/java/me/jddev0/ep/block/entity/base/SelectableRecipeFluidMachineBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/base/SelectableRecipeFluidMachineBlockEntity.java @@ -5,24 +5,23 @@ import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; import me.jddev0.ep.networking.ModMessages; import me.jddev0.ep.networking.packet.SyncCurrentRecipeS2CPacket; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; import me.jddev0.ep.recipe.ChangeCurrentRecipeIndexPacketUpdate; import me.jddev0.ep.recipe.CurrentRecipePacketUpdate; +import me.jddev0.ep.recipe.IngredientPacketUpdate; import me.jddev0.ep.recipe.SetCurrentRecipeIdPacketUpdate; import me.jddev0.ep.util.ByteUtils; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.storage.Storage; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtString; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeEntry; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.screen.PropertyDelegate; @@ -34,14 +33,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; public abstract class SelectableRecipeFluidMachineBlockEntity , C extends RecipeInput, R extends Recipe> extends WorkerFluidMachineBlockEntity> - implements ChangeCurrentRecipeIndexPacketUpdate, CurrentRecipePacketUpdate, SetCurrentRecipeIdPacketUpdate { + implements ChangeCurrentRecipeIndexPacketUpdate, CurrentRecipePacketUpdate, SetCurrentRecipeIdPacketUpdate, + IngredientPacketUpdate { protected final UpgradableMenuProvider menuProvider; protected final RecipeType recipeType; @@ -50,6 +48,8 @@ public abstract class SelectableRecipeFluidMachineBlockEntity protected Identifier currentRecipeIdForLoad; protected RecipeEntry currentRecipe; + protected List ingredientsOfRecipes = new ArrayList<>(); + public SelectableRecipeFluidMachineBlockEntity(BlockEntityType type, BlockPos blockPos, BlockState blockState, String machineName, UpgradableMenuProvider menuProvider, int slotCount, RecipeType recipeType, RecipeSerializer recipeSerializer, @@ -109,7 +109,7 @@ protected void writeNbt(@NotNull NbtCompound nbt, @NotNull RegistryWrapper.Wrapp super.writeNbt(nbt, registries); if(currentRecipe != null) - nbt.put("recipe.id", NbtString.of(currentRecipe.id().toString())); + nbt.put("recipe.id", NbtString.of(currentRecipe.id().getValue().toString())); } @Override @@ -126,6 +126,7 @@ public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity syncEnergyToPlayer(player); syncFluidToPlayer(player); syncCurrentRecipeToPlayer(player); + syncIngredientListToPlayer(player); return menuProvider.createMenu(id, this, inventory, itemHandler, upgradeModuleInventory, data); } @@ -133,10 +134,10 @@ public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity @Override protected final void onTickStart() { //Load recipe - if(currentRecipeIdForLoad != null) { - List> recipes = world.getRecipeManager().listAllOfType(recipeType); + if(currentRecipeIdForLoad != null && world instanceof ServerWorld serverWorld) { + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, recipeType); currentRecipe = recipes.stream(). - filter(recipe -> recipe.id().equals(currentRecipeIdForLoad)). + filter(recipe -> recipe.id().getValue().equals(currentRecipeIdForLoad)). findFirst().orElse(null); currentRecipeIdForLoad = null; @@ -196,19 +197,18 @@ protected final void onWorkCompleted(RecipeEntry workData) { @Override public void changeRecipeIndex(boolean downUp) { - if(world == null || world.isClient()) + if(!(world instanceof ServerWorld serverWorld)) return; - List> recipes = world.getRecipeManager().listAllOfType(recipeType); + List> recipes = new ArrayList<>(RecipeUtils.getAllRecipesFor(serverWorld, recipeType)); recipes = recipes.stream(). - sorted(Comparator.comparing(recipe -> recipe.value().getResult(world.getRegistryManager()). - getTranslationKey())). + sorted(Comparator.comparing(recipe -> recipe.id().getValue())). toList(); int currentIndex = -1; if(currentRecipe != null) { for(int i = 0;i < recipes.size();i++) { - if(currentRecipe.id().equals(recipes.get(i).id())) { + if(currentRecipe.id().getValue().equals(recipes.get(i).id().getValue())) { currentIndex = i; break; } @@ -231,14 +231,14 @@ else if(currentIndex >= recipes.size()) @Override public void setRecipeId(Identifier recipeId) { - if(world == null || world.isClient()) + if(!(world instanceof ServerWorld serverWorld)) return; if(recipeId == null) { currentRecipe = null; }else { - List> recipes = world.getRecipeManager().listAllOfType(recipeType); - Optional> recipe = recipes.stream().filter(r -> r.id().equals(recipeId)).findFirst(); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, recipeType); + Optional> recipe = recipes.stream().filter(r -> r.id().getValue().equals(recipeId)).findFirst(); currentRecipe = recipe.orElse(null); } @@ -270,4 +270,22 @@ protected final void syncCurrentRecipeToPlayers(int distance) { public void setCurrentRecipe(@Nullable RecipeEntry currentRecipe) { this.currentRecipe = currentRecipe; } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, recipeType))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/base/SelectableRecipeMachineBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/base/SelectableRecipeMachineBlockEntity.java index 13da319e6..39fb873eb 100644 --- a/src/main/java/me/jddev0/ep/block/entity/base/SelectableRecipeMachineBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/base/SelectableRecipeMachineBlockEntity.java @@ -5,22 +5,21 @@ import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; import me.jddev0.ep.networking.ModMessages; import me.jddev0.ep.networking.packet.SyncCurrentRecipeS2CPacket; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; import me.jddev0.ep.recipe.ChangeCurrentRecipeIndexPacketUpdate; import me.jddev0.ep.recipe.CurrentRecipePacketUpdate; +import me.jddev0.ep.recipe.IngredientPacketUpdate; import me.jddev0.ep.recipe.SetCurrentRecipeIdPacketUpdate; import me.jddev0.ep.util.ByteUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.BlockState; import net.minecraft.block.entity.BlockEntityType; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; -import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtString; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeEntry; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.screen.PropertyDelegate; @@ -32,13 +31,12 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; +import java.util.*; public abstract class SelectableRecipeMachineBlockEntity> extends WorkerMachineBlockEntity> - implements ChangeCurrentRecipeIndexPacketUpdate, CurrentRecipePacketUpdate, SetCurrentRecipeIdPacketUpdate { + implements ChangeCurrentRecipeIndexPacketUpdate, CurrentRecipePacketUpdate, SetCurrentRecipeIdPacketUpdate, + IngredientPacketUpdate { protected final UpgradableMenuProvider menuProvider; protected final RecipeType recipeType; @@ -47,6 +45,8 @@ public abstract class SelectableRecipeMachineBlockEntity currentRecipe; + protected List ingredientsOfRecipes = new ArrayList<>(); + public SelectableRecipeMachineBlockEntity(BlockEntityType type, BlockPos blockPos, BlockState blockState, String machineName, UpgradableMenuProvider menuProvider, int slotCount, RecipeType recipeType, RecipeSerializer recipeSerializer, @@ -105,7 +105,7 @@ protected void writeNbt(@NotNull NbtCompound nbt, @NotNull RegistryWrapper.Wrapp super.writeNbt(nbt, registries); if(currentRecipe != null) - nbt.put("recipe.id", NbtString.of(currentRecipe.id().toString())); + nbt.put("recipe.id", NbtString.of(currentRecipe.id().getValue().toString())); } @Override @@ -121,6 +121,7 @@ protected void readNbt(@NotNull NbtCompound nbt, @NotNull RegistryWrapper.Wrappe public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { syncEnergyToPlayer(player); syncCurrentRecipeToPlayer(player); + syncIngredientListToPlayer(player); return menuProvider.createMenu(id, this, inventory, itemHandler, upgradeModuleInventory, data); } @@ -128,10 +129,10 @@ public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity @Override protected final void onTickStart() { //Load recipe - if(currentRecipeIdForLoad != null) { - List> recipes = world.getRecipeManager().listAllOfType(recipeType); + if(currentRecipeIdForLoad != null && world instanceof ServerWorld serverWorld) { + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, recipeType); currentRecipe = recipes.stream(). - filter(recipe -> recipe.id().equals(currentRecipeIdForLoad)). + filter(recipe -> recipe.id().getValue().equals(currentRecipeIdForLoad)). findFirst().orElse(null); currentRecipeIdForLoad = null; @@ -191,19 +192,18 @@ protected final void onWorkCompleted(RecipeEntry workData) { @Override public void changeRecipeIndex(boolean downUp) { - if(world == null || world.isClient()) + if(!(world instanceof ServerWorld serverWorld)) return; - List> recipes = world.getRecipeManager().listAllOfType(recipeType); + List> recipes = new ArrayList<>(RecipeUtils.getAllRecipesFor(serverWorld, recipeType)); recipes = recipes.stream(). - sorted(Comparator.comparing(recipe -> recipe.value().getResult(world.getRegistryManager()). - getTranslationKey())). + sorted(Comparator.comparing(recipe -> recipe.id().getValue())). toList(); int currentIndex = -1; if(currentRecipe != null) { for(int i = 0;i < recipes.size();i++) { - if(currentRecipe.id().equals(recipes.get(i).id())) { + if(currentRecipe.id().getValue().equals(recipes.get(i).id().getValue())) { currentIndex = i; break; } @@ -226,14 +226,14 @@ else if(currentIndex >= recipes.size()) @Override public void setRecipeId(Identifier recipeId) { - if(world == null || world.isClient()) + if(!(world instanceof ServerWorld serverWorld)) return; if(recipeId == null) { currentRecipe = null; }else { - List> recipes = world.getRecipeManager().listAllOfType(recipeType); - Optional> recipe = recipes.stream().filter(r -> r.id().equals(recipeId)).findFirst(); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverWorld, recipeType); + Optional> recipe = recipes.stream().filter(r -> r.id().getValue().equals(recipeId)).findFirst(); currentRecipe = recipe.orElse(null); } @@ -265,4 +265,22 @@ protected final void syncCurrentRecipeToPlayers(int distance) { public void setCurrentRecipe(@Nullable RecipeEntry currentRecipe) { this.currentRecipe = currentRecipe; } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, recipeType))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/base/SimpleRecipeFluidMachineBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/base/SimpleRecipeFluidMachineBlockEntity.java index 405339e55..e55ac0f28 100644 --- a/src/main/java/me/jddev0/ep/block/entity/base/SimpleRecipeFluidMachineBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/base/SimpleRecipeFluidMachineBlockEntity.java @@ -3,7 +3,11 @@ import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; +import me.jddev0.ep.networking.ModMessages; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; +import me.jddev0.ep.recipe.IngredientPacketUpdate; import me.jddev0.ep.util.ByteUtils; +import me.jddev0.ep.util.RecipeUtils; import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.storage.Storage; import net.minecraft.block.BlockState; @@ -11,24 +15,32 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.SimpleInventory; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.RecipeType; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; public abstract class SimpleRecipeFluidMachineBlockEntity , C extends RecipeInput, R extends Recipe> - extends WorkerFluidMachineBlockEntity> { + extends WorkerFluidMachineBlockEntity> + implements IngredientPacketUpdate { protected final UpgradableMenuProvider menuProvider; protected final RecipeType recipeType; + protected List ingredientsOfRecipes = new ArrayList<>(); + public SimpleRecipeFluidMachineBlockEntity(BlockEntityType type, BlockPos blockPos, BlockState blockState, String machineName, UpgradableMenuProvider menuProvider, int slotCount, RecipeType recipeType, int baseRecipeDuration, @@ -86,6 +98,7 @@ public int size() { public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { syncEnergyToPlayer(player); syncFluidToPlayer(player); + syncIngredientListToPlayer(player); return menuProvider.createMenu(id, this, inventory, itemHandler, upgradeModuleInventory, data); } @@ -93,7 +106,10 @@ public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity protected abstract C getRecipeInput(SimpleInventory inventory); protected Optional> getRecipeFor(SimpleInventory inventory) { - return world.getRecipeManager().getFirstMatch(recipeType, getRecipeInput(inventory), world); + if(!(world instanceof ServerWorld serverWorld)) + return Optional.empty(); + + return serverWorld.getRecipeManager().getFirstMatch(recipeType, getRecipeInput(inventory), world); } @Override @@ -148,4 +164,22 @@ protected final void onWorkCompleted(RecipeEntry workData) { protected abstract void craftItem(RecipeEntry recipe); protected abstract boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry recipe); + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, recipeType))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; + } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/base/SimpleRecipeMachineBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/base/SimpleRecipeMachineBlockEntity.java index 631559c31..411d2248b 100644 --- a/src/main/java/me/jddev0/ep/block/entity/base/SimpleRecipeMachineBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/base/SimpleRecipeMachineBlockEntity.java @@ -3,6 +3,9 @@ import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; +import me.jddev0.ep.networking.ModMessages; +import me.jddev0.ep.networking.packet.SyncIngredientsS2CPacket; +import me.jddev0.ep.recipe.IngredientPacketUpdate; import me.jddev0.ep.util.ByteUtils; import me.jddev0.ep.util.InventoryUtils; import me.jddev0.ep.util.RecipeUtils; @@ -12,23 +15,31 @@ import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.RecipeType; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.server.world.ServerWorld; import net.minecraft.util.math.BlockPos; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; public abstract class SimpleRecipeMachineBlockEntity> - extends WorkerMachineBlockEntity> { + extends WorkerMachineBlockEntity> + implements IngredientPacketUpdate { protected final UpgradableMenuProvider menuProvider; protected final RecipeType recipeType; + protected List ingredientsOfRecipes = new ArrayList<>(); + public SimpleRecipeMachineBlockEntity(BlockEntityType type, BlockPos blockPos, BlockState blockState, String machineName, UpgradableMenuProvider menuProvider, int slotCount, RecipeType recipeType, int baseRecipeDuration, @@ -47,7 +58,9 @@ protected SimpleInventory initInventoryStorage() { return new SimpleInventory(slotCount) { @Override public boolean isValid(int slot, ItemStack stack) { - return slot == 0 && (world == null || RecipeUtils.isIngredientOfAny(world, recipeType, stack)); + return slot == 0 && ((world instanceof ServerWorld serverWorld)? + RecipeUtils.isIngredientOfAny(serverWorld, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); } @Override @@ -112,6 +125,7 @@ public int size() { @Override public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity player) { syncEnergyToPlayer(player); + syncIngredientListToPlayer(player); return menuProvider.createMenu(id, this, inventory, itemHandler, upgradeModuleInventory, data); } @@ -119,7 +133,10 @@ public ScreenHandler createMenu(int id, PlayerInventory inventory, PlayerEntity protected abstract C getRecipeInput(SimpleInventory inventory); protected Optional> getRecipeFor(SimpleInventory inventory) { - return world.getRecipeManager().getFirstMatch(recipeType, getRecipeInput(inventory), world); + if(!(world instanceof ServerWorld serverWorld)) + return Optional.empty(); + + return serverWorld.getRecipeManager().getFirstMatch(recipeType, getRecipeInput(inventory), world); } @Override @@ -176,15 +193,33 @@ protected void craftItem(RecipeEntry recipe) { return; itemHandler.removeStack(0, 1); - itemHandler.setStack(1, recipe.value().getResult(world.getRegistryManager()). + itemHandler.setStack(1, recipe.value().craft(getRecipeInput(itemHandler), world.getRegistryManager()). copyWithCount(itemHandler.getStack(1).getCount() + - recipe.value().getResult(world.getRegistryManager()).getCount())); + recipe.value().craft(getRecipeInput(itemHandler), world.getRegistryManager()).getCount())); resetProgress(); } protected boolean canCraftRecipe(SimpleInventory inventory, RecipeEntry recipe) { return world != null && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().getResult(world.getRegistryManager())); + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().craft(getRecipeInput(itemHandler), world.getRegistryManager())); + } + + protected void syncIngredientListToPlayer(PlayerEntity player) { + if(!(world instanceof ServerWorld serverWorld)) + return; + + ModMessages.sendServerPacketToPlayer((ServerPlayerEntity)player, + new SyncIngredientsS2CPacket(getPos(), 0, RecipeUtils.getIngredientsOf(serverWorld, recipeType))); + } + + public List getIngredientsOfRecipes() { + return new ArrayList<>(ingredientsOfRecipes); + } + + @Override + public void setIngredients(int index, List ingredients) { + if(index == 0) + this.ingredientsOfRecipes = ingredients; } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/block/entity/renderer/FluidTankBlockEntityRenderer.java b/src/main/java/me/jddev0/ep/block/entity/renderer/FluidTankBlockEntityRenderer.java index 1edbe8348..637940217 100644 --- a/src/main/java/me/jddev0/ep/block/entity/renderer/FluidTankBlockEntityRenderer.java +++ b/src/main/java/me/jddev0/ep/block/entity/renderer/FluidTankBlockEntityRenderer.java @@ -19,7 +19,6 @@ import net.minecraft.client.util.math.MatrixStack; import net.minecraft.fluid.Fluid; import net.minecraft.screen.PlayerScreenHandler; -import net.minecraft.util.Identifier; import net.minecraft.util.math.Direction; import org.joml.Matrix4f; import org.joml.Quaternionf; diff --git a/src/main/java/me/jddev0/ep/block/entity/renderer/ItemConveyorBeltBlockEntityRenderer.java b/src/main/java/me/jddev0/ep/block/entity/renderer/ItemConveyorBeltBlockEntityRenderer.java index e42d6a6aa..48658ef94 100644 --- a/src/main/java/me/jddev0/ep/block/entity/renderer/ItemConveyorBeltBlockEntityRenderer.java +++ b/src/main/java/me/jddev0/ep/block/entity/renderer/ItemConveyorBeltBlockEntityRenderer.java @@ -12,9 +12,9 @@ import net.minecraft.client.render.block.entity.BlockEntityRendererFactory; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.json.ModelTransformationMode; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; +import net.minecraft.item.ModelTransformationMode; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.LightType; diff --git a/src/main/java/me/jddev0/ep/codec/CodecFix.java b/src/main/java/me/jddev0/ep/codec/CodecFix.java index 6f4579dce..50623f30a 100644 --- a/src/main/java/me/jddev0/ep/codec/CodecFix.java +++ b/src/main/java/me/jddev0/ep/codec/CodecFix.java @@ -2,22 +2,12 @@ import com.mojang.serialization.Codec; import com.mojang.serialization.DataResult; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.component.ComponentChanges; import net.minecraft.item.ItemStack; -import net.minecraft.util.dynamic.Codecs; public final class CodecFix { private CodecFix() {} - public static final Codec ITEM_STACK_CODEC = Codec.lazyInitialized(() -> { - return RecordCodecBuilder.create((instance) -> { - return instance.group(ItemStack.ITEM_CODEC.fieldOf("item").forGetter(ItemStack::getRegistryEntry), - Codecs.POSITIVE_INT.optionalFieldOf("count", 1).forGetter(ItemStack::getCount), - ComponentChanges.CODEC.optionalFieldOf("components", ComponentChanges.EMPTY).forGetter(ItemStack::getComponentChanges)). - apply(instance, ItemStack::new); - }); - }); + public static final Codec ITEM_STACK_CODEC = ItemStack.CODEC; public static final Codec NON_NEGATIVE_LONG = Codec.LONG.validate(value -> { if(value >= 0) diff --git a/src/main/java/me/jddev0/ep/component/EPDataComponentTypes.java b/src/main/java/me/jddev0/ep/component/EPDataComponentTypes.java index 07f948727..a03bb627e 100644 --- a/src/main/java/me/jddev0/ep/component/EPDataComponentTypes.java +++ b/src/main/java/me/jddev0/ep/component/EPDataComponentTypes.java @@ -32,10 +32,10 @@ public static ComponentType registerDataComponentType(String name, UnaryO builder.codec(Codec.BOOL).packetCodec(PacketCodecs.BOOL)); public static final ComponentType PROGRESS = registerDataComponentType("progress", builder -> - builder.codec(Codecs.NONNEGATIVE_INT).packetCodec(PacketCodecs.VAR_INT)); + builder.codec(Codecs.NON_NEGATIVE_INT).packetCodec(PacketCodecs.VAR_INT)); public static final ComponentType MAX_PROGRESS = registerDataComponentType("max_progress", builder -> - builder.codec(Codecs.NONNEGATIVE_INT).packetCodec(PacketCodecs.VAR_INT)); + builder.codec(Codecs.NON_NEGATIVE_INT).packetCodec(PacketCodecs.VAR_INT)); public static final ComponentType ENERGY_PRODUCTION_LEFT = registerDataComponentType("energy_production_left", builder -> builder.codec(Codec.LONG).packetCodec(PacketCodecs.VAR_LONG)); @@ -50,7 +50,7 @@ public static ComponentType registerDataComponentType(String name, UnaryO builder.codec(Direction.CODEC).packetCodec(Direction.PACKET_CODEC)); public static final ComponentType ACTION_COOLDOWN = registerDataComponentType("action_cooldown", builder -> - builder.codec(Codecs.NONNEGATIVE_INT).packetCodec(PacketCodecs.VAR_INT)); + builder.codec(Codecs.NON_NEGATIVE_INT).packetCodec(PacketCodecs.VAR_INT)); public static final ComponentType DIMENSIONAL_POSITION = registerDataComponentType("dimensional_position", builder -> diff --git a/src/main/java/me/jddev0/ep/config/ModConfigs.java b/src/main/java/me/jddev0/ep/config/ModConfigs.java index 049cfac37..d8dc81b05 100644 --- a/src/main/java/me/jddev0/ep/config/ModConfigs.java +++ b/src/main/java/me/jddev0/ep/config/ModConfigs.java @@ -1,15 +1,9 @@ package me.jddev0.ep.config; import com.mojang.logging.LogUtils; -import me.jddev0.ep.config.value.DoubleConfigValue; import me.jddev0.ep.block.CableBlock; import me.jddev0.ep.config.validation.ValueValidators; -import me.jddev0.ep.config.value.BooleanConfigValue; -import me.jddev0.ep.config.value.EnumConfigValue; -import me.jddev0.ep.config.value.FloatConfigValue; -import me.jddev0.ep.config.value.LongConfigValue; import net.fabricmc.loader.api.FabricLoader; -import me.jddev0.ep.config.value.IntegerConfigValue; import me.jddev0.ep.config.value.*; import net.minecraft.util.Identifier; import org.jetbrains.annotations.NotNull; diff --git a/src/main/java/me/jddev0/ep/datagen/ModRecipeProvider.java b/src/main/java/me/jddev0/ep/datagen/ModRecipeProvider.java index 531a4bbe2..7d34736c1 100644 --- a/src/main/java/me/jddev0/ep/datagen/ModRecipeProvider.java +++ b/src/main/java/me/jddev0/ep/datagen/ModRecipeProvider.java @@ -1,45 +1,13 @@ package me.jddev0.ep.datagen; -import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; -import me.jddev0.ep.block.entity.FluidTransposerBlockEntity; -import me.jddev0.ep.fluid.FluidStack; -import me.jddev0.ep.item.EPItems; -import me.jddev0.ep.recipe.*; -import me.jddev0.ep.registry.tags.CommonItemTags; -import me.jddev0.ep.util.FluidUtils; +import me.jddev0.ep.datagen.recipe.ModRecipeGenerator; import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput; import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; -import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; -import net.minecraft.advancement.Advancement; -import net.minecraft.advancement.AdvancementCriterion; -import net.minecraft.advancement.AdvancementRequirements; -import net.minecraft.advancement.AdvancementRewards; -import net.minecraft.advancement.criterion.InventoryChangedCriterion; -import net.minecraft.advancement.criterion.RecipeUnlockedCriterion; import net.minecraft.data.server.recipe.RecipeExporter; -import net.minecraft.fluid.Fluid; -import net.minecraft.fluid.Fluids; -import net.minecraft.item.Item; -import net.minecraft.item.ItemConvertible; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.recipe.*; -import net.minecraft.recipe.book.CookingRecipeCategory; -import net.minecraft.recipe.book.CraftingRecipeCategory; -import net.minecraft.registry.Registries; +import net.minecraft.data.server.recipe.RecipeGenerator; import net.minecraft.registry.RegistryWrapper; -import net.minecraft.registry.tag.ItemTags; -import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; -import java.util.List; -import java.util.Map; -import java.util.Objects; import java.util.concurrent.CompletableFuture; -import java.util.function.Function; -import java.util.stream.Stream; public class ModRecipeProvider extends FabricRecipeProvider { public ModRecipeProvider(FabricDataOutput output, CompletableFuture lookupProvider) { @@ -47,2985 +15,12 @@ public ModRecipeProvider(FabricDataOutput output, CompletableFuture hasIngredientTrigger, - Ingredient unpackedInput, ItemConvertible packedItem, CraftingRecipeCategory category, - String group, String recipeIdSuffix) { - addShapedCraftingRecipe(output, hasIngredientTrigger, Map.of( - '#', unpackedInput - ), new String[] { - "###", - "###", - "###" - }, new ItemStack(packedItem), category, group, recipeIdSuffix); - } - private static void add3x3UnpackingCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - Ingredient packedInput, ItemConvertible unpackedItem, CraftingRecipeCategory category, - String group, String recipeIdSuffix) { - addShapelessCraftingRecipe(output, hasIngredientTrigger, List.of( - packedInput - ), new ItemStack(unpackedItem, 9), category, group, recipeIdSuffix); - } - private static void addMetalIngotCraftingRecipes(RecipeExporter output, TagKey nuggetInput, - TagKey blockInput, ItemConvertible ingotItem, String metalName) { - add3x3PackingCraftingRecipe(output, conditionsFromTag(nuggetInput), Ingredient.fromTag(nuggetInput), ingotItem, - CraftingRecipeCategory.MISC, metalName + "_ingot", "_from_nuggets"); - add3x3UnpackingCraftingRecipe(output, conditionsFromTag(blockInput), Ingredient.fromTag(blockInput), ingotItem, - CraftingRecipeCategory.MISC, metalName + "_ingot", "_from_" + metalName + "_block"); - } - private static void addMetalNuggetCraftingRecipe(RecipeExporter output, TagKey ingotInput, ItemConvertible nuggetItem) { - addShapelessCraftingRecipe(output, conditionsFromTag(ingotInput), List.of( - Ingredient.fromTag(ingotInput) - ), new ItemStack(nuggetItem, 9), CraftingRecipeCategory.MISC); - } - private static void addMetalPlateCraftingRecipe(RecipeExporter output, TagKey ingotInput, ItemConvertible plateItem) { - addShapelessCraftingRecipe(output, conditionsFromTag(ingotInput), List.of( - Ingredient.fromTag(CommonItemTags.TOOLS_HAMMERS), - Ingredient.fromTag(ingotInput) - ), new ItemStack(plateItem), CraftingRecipeCategory.MISC); - } - private static void addMetalWireCraftingRecipe(RecipeExporter output, TagKey plateInput, ItemConvertible wireItem) { - addShapelessCraftingRecipe(output, conditionsFromTag(plateInput), List.of( - Ingredient.fromTag(CommonItemTags.TOOLS_CUTTERS), - Ingredient.fromTag(plateInput) - ), new ItemStack(wireItem, 2), CraftingRecipeCategory.MISC); - } - private static void addHammerCraftingRecipe(RecipeExporter output, TagKey materialInput, ItemConvertible hammerItem) { - addShapedCraftingRecipe(output, conditionsFromTag(materialInput), Map.of( - 'S', Ingredient.fromTag(ConventionalItemTags.WOODEN_RODS), - 'M', Ingredient.fromTag(materialInput) - ), new String[] { - " M ", - " SM", - "S " - }, new ItemStack(hammerItem), CraftingRecipeCategory.MISC); - } - private static void addBasicCableCraftingRecipes(RecipeExporter output, TagKey ingotInput, TagKey wireInput, - ItemStack cableItem) { - addCableCraftingRecipe(output, ingotInput, cableItem); - addCableUsingWireCraftingRecipe(output, wireInput, cableItem); - } - private static void addCableUsingWireCraftingRecipe(RecipeExporter output, TagKey wireInput, - ItemStack cableItem) { - addShapedCraftingRecipe(output, conditionsFromTag(wireInput), Map.of( - 'W', Ingredient.fromTag(wireInput), - 'I', Ingredient.ofItems(EPItems.CABLE_INSULATOR) - ), new String[] { - "IWI", - "IWI", - "IWI" - }, cableItem, CraftingRecipeCategory.MISC, getItemPath(cableItem.getItem()), "_using_wire"); - } - private static void addCableCraftingRecipe(RecipeExporter output, TagKey ingotInput, - ItemStack cableItem) { - addShapedCraftingRecipe(output, conditionsFromTag(ingotInput), Map.of( - 'I', Ingredient.fromTag(ingotInput), - 'i', Ingredient.ofItems(EPItems.CABLE_INSULATOR) - ), new String[] { - "iIi", - "iIi", - "iIi" - }, cableItem, CraftingRecipeCategory.MISC, getItemPath(cableItem.getItem())); - } - private static void addShapedCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - Map key, String[] pattern, - ItemStack result, CraftingRecipeCategory category) { - addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, ""); - } - private static void addShapedCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - Map key, String[] pattern, - ItemStack result, CraftingRecipeCategory category, - String group) { - addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, group, ""); - } - private static void addShapedCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - Map key, String[] pattern, - ItemStack result, CraftingRecipeCategory category, - String group, String recipeIdSuffix) { - addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, group, recipeIdSuffix, ""); - } - private static void addShapedCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - Map key, String[] pattern, - ItemStack result, CraftingRecipeCategory category, - String group, String recipeIdSuffix, String recipeIdPrefix) { - Identifier recipeId = EPAPI.id("crafting/" + - recipeIdPrefix + getItemPath(result.getItem()) + recipeIdSuffix); - - Advancement.Builder advancementBuilder = output.getAdvancementBuilder() - .criterion("has_the_recipe", RecipeUnlockedCriterion.create(recipeId)) - .criterion("has_the_ingredient", hasIngredientTrigger) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); - ShapedRecipe recipe = new ShapedRecipe(Objects.requireNonNullElse(group, ""), - category, RawShapedRecipe.create(key, pattern), result); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); - } - private static void addShapelessCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - List inputs, ItemStack result, CraftingRecipeCategory category) { - addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, ""); - } - private static void addShapelessCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - List inputs, ItemStack result, CraftingRecipeCategory category, - String group) { - addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, group, ""); - } - private static void addShapelessCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - List inputs, ItemStack result, CraftingRecipeCategory category, - String group, String recipeIdSuffix) { - addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, group, recipeIdSuffix, ""); - } - private static void addShapelessCraftingRecipe(RecipeExporter output, AdvancementCriterion hasIngredientTrigger, - List inputs, ItemStack result, CraftingRecipeCategory category, - String group, String recipeIdSuffix, String recipeIdPrefix) { - Identifier recipeId = EPAPI.id("crafting/" + - recipeIdPrefix + getItemPath(result.getItem()) + recipeIdSuffix); - - Advancement.Builder advancementBuilder = output.getAdvancementBuilder() - .criterion("has_the_recipe", RecipeUnlockedCriterion.create(recipeId)) - .criterion("has_the_ingredient", hasIngredientTrigger) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); - ShapelessRecipe recipe = new ShapelessRecipe(Objects.requireNonNullElse(group, ""), category, result, - DefaultedList.copyOf(Ingredient.EMPTY, inputs.toArray(Ingredient[]::new))); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); - } - private static void addCustomCraftingRecipe(RecipeExporter output, Function customRecipeFactory, - CraftingRecipeCategory category, String recipeIdString) { - Identifier recipeId = EPAPI.id("crafting/" + - recipeIdString); - - SpecialCraftingRecipe recipe = customRecipeFactory.apply(category); - output.accept(recipeId, recipe, null); - } - - private static void addBlastingAndSmeltingRecipes(RecipeExporter output, ItemConvertible ingredient, ItemStack result, - CookingRecipeCategory category, int time, float xp, String group, - String recipeIngredientName) { - addBlastingRecipe(output, ingredient, result, category, time, xp, group, recipeIngredientName); - addSmeltingRecipe(output, ingredient, result, category, 2 * time, xp, group, recipeIngredientName); - } - private static void addBlastingAndSmeltingRecipes(RecipeExporter output, TagKey ingredient, ItemStack result, - CookingRecipeCategory category, int time, float xp, String group, - String recipeIngredientName) { - addBlastingRecipe(output, ingredient, result, category, time, xp, group, recipeIngredientName); - addSmeltingRecipe(output, ingredient, result, category, 2 * time, xp, group, recipeIngredientName); - } - - private static void addSmeltingRecipe(RecipeExporter output, ItemConvertible ingredient, ItemStack result, CookingRecipeCategory category, - int time, float xp, String group) { - Identifier recipeId = EPAPI.id("smelting/" + - getItemPath(result.getItem())); - - addSmeltingRecipe(output, ingredient, result, category, time, xp, group, recipeId); - } - private static void addSmeltingRecipe(RecipeExporter output, ItemConvertible ingredient, ItemStack result, CookingRecipeCategory category, - int time, float xp, String group, String recipeIngredientName) { - Identifier recipeId = EPAPI.id("smelting/" + - getItemPath(result.getItem()) + "_from_smelting_" + recipeIngredientName); - - addSmeltingRecipe(output, ingredient, result, category, time, xp, group, recipeId); - } - private static void addSmeltingRecipe(RecipeExporter output, ItemConvertible ingredient, ItemStack result, CookingRecipeCategory category, - int time, float xp, String group, Identifier recipeId) { - Advancement.Builder advancementBuilder = output.getAdvancementBuilder() - .criterion("has_the_recipe", RecipeUnlockedCriterion.create(recipeId)) - .criterion("has_the_ingredient", conditionsFromItem(ingredient)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); - AbstractCookingRecipe recipe = new SmeltingRecipe(Objects.requireNonNullElse(group, ""), - category, Ingredient.ofItems(ingredient), result, xp, time); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); - } - private static void addSmeltingRecipe(RecipeExporter output, TagKey ingredient, ItemStack result, CookingRecipeCategory category, - int time, float xp, String group, String recipeIngredientName) { - Identifier recipeId = EPAPI.id("smelting/" + - getItemPath(result.getItem()) + "_from_smelting_" + recipeIngredientName); - - Advancement.Builder advancementBuilder = output.getAdvancementBuilder() - .criterion("has_the_recipe", RecipeUnlockedCriterion.create(recipeId)) - .criterion("has_the_ingredient", conditionsFromTag(ingredient)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); - AbstractCookingRecipe recipe = new SmeltingRecipe(Objects.requireNonNullElse(group, ""), - category, Ingredient.fromTag(ingredient), result, xp, time); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); - } - - private static void addBlastingRecipe(RecipeExporter output, ItemConvertible ingredient, ItemStack result, CookingRecipeCategory category, - int time, float xp, String group, String recipeIngredientName) { - Identifier recipeId = EPAPI.id("blasting/" + - getItemPath(result.getItem()) + "_from_blasting_" + recipeIngredientName); - - Advancement.Builder advancementBuilder = output.getAdvancementBuilder() - .criterion("has_the_recipe", RecipeUnlockedCriterion.create(recipeId)) - .criterion("has_the_ingredient", conditionsFromItem(ingredient)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); - AbstractCookingRecipe recipe = new BlastingRecipe(Objects.requireNonNullElse(group, ""), - category, Ingredient.ofItems(ingredient), result, xp, time); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); - } - private static void addBlastingRecipe(RecipeExporter output, TagKey ingredient, ItemStack result, CookingRecipeCategory category, - int time, float xp, String group, String recipeIngredientName) { - Identifier recipeId = EPAPI.id("blasting/" + - getItemPath(result.getItem()) + "_from_blasting_" + recipeIngredientName); - - Advancement.Builder advancementBuilder = output.getAdvancementBuilder() - .criterion("has_the_recipe", RecipeUnlockedCriterion.create(recipeId)) - .criterion("has_the_ingredient", conditionsFromTag(ingredient)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); - AbstractCookingRecipe recipe = new BlastingRecipe(Objects.requireNonNullElse(group, ""), - category, Ingredient.fromTag(ingredient), result, xp, time); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); - } - - private static void addNetheriteSmithingUpgradeRecipe(RecipeExporter RecipeExporter, Ingredient base, ItemStack output) { - Identifier recipeId = EPAPI.id("smithing/" + - getItemPath(output.getItem())); - - Advancement.Builder advancementBuilder = RecipeExporter.getAdvancementBuilder() - .criterion("has_the_recipe", RecipeUnlockedCriterion.create(recipeId)) - .criterion("has_the_ingredient", conditionsFromTag(ConventionalItemTags.NETHERITE_INGOTS)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); - SmithingTransformRecipe recipe = new SmithingTransformRecipe(Ingredient.ofItems(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE), - base, Ingredient.fromTag(ConventionalItemTags.NETHERITE_INGOTS), output); - RecipeExporter.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); - } - - private static void addAlloyFurnaceRecipe(RecipeExporter RecipeExporter, IngredientWithCount[] inputs, ItemStack output, - int ticks) { - addAlloyFurnaceRecipe(RecipeExporter, inputs, output, OutputItemStackWithPercentages.EMPTY, ticks); - } - private static void addAlloyFurnaceRecipe(RecipeExporter RecipeExporter, IngredientWithCount[] inputs, ItemStack output, - OutputItemStackWithPercentages secondaryOutput, int ticks) { - Identifier recipeId = EPAPI.id("alloy_furnace/" + - getItemPath(output.getItem())); - - AlloyFurnaceRecipe recipe = new AlloyFurnaceRecipe(output, secondaryOutput, inputs, ticks); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addPressMoldMakerRecipe(RecipeExporter RecipeExporter, int clayCount, ItemStack output) { - Identifier recipeId = EPAPI.id("press_mold_maker/" + - getItemPath(output.getItem())); - - PressMoldMakerRecipe recipe = new PressMoldMakerRecipe(output, clayCount); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addPlateCompressorRecipes(RecipeExporter RecipeExporter, Ingredient ingotInput, - Ingredient blockInput, ItemStack output, String metalName) { - addPlateCompressorIngotRecipe(RecipeExporter, ingotInput, output, metalName); - addCompressorRecipe(RecipeExporter, blockInput, output.copyWithCount(9), metalName + "_block"); - } - private static void addPlateCompressorIngotRecipe(RecipeExporter RecipeExporter, Ingredient ingotInput, - ItemStack output, String metalName) { - addCompressorRecipe(RecipeExporter, ingotInput, output, metalName + "_ingot"); - } - private static void addCompressorRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, String recipeIngredientName) { - addCompressorRecipe(RecipeExporter, input, output, 1, recipeIngredientName); - } - private static void addCompressorRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, int inputCount, - String recipeIngredientName) { - Identifier recipeId = EPAPI.id("compressing/" + - getItemPath(output.getItem()) + "_from_compressing_" + recipeIngredientName); - - CompressorRecipe recipe = new CompressorRecipe(output, input, inputCount); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addCrusherRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, - String recipeIngredientName) { - Identifier recipeId = EPAPI.id("crusher/" + - getItemPath(output.getItem()) + "_from_crushing_" + recipeIngredientName); - - CrusherRecipe recipe = new CrusherRecipe(output, input); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addBasicMetalPulverizerRecipes(RecipeExporter RecipeExporter, Ingredient oreInput, - Ingredient rawMetalInput, Ingredient rawMetalBlockInput, - Ingredient ingotInput, ItemStack output, String metalName) { - addPulverizerRecipe(RecipeExporter, oreInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { - 1., 1., .25 - }, new double[] { - 1., 1, .5, .25 - }), metalName + "_ores"); - - addRawMetalAndIngotPulverizerRecipes(RecipeExporter, rawMetalInput, rawMetalBlockInput, ingotInput, output, metalName); - } - private static void addRawMetalAndIngotPulverizerRecipes(RecipeExporter RecipeExporter, - Ingredient rawMetalInput, Ingredient rawMetalBlockInput, - Ingredient ingotInput, ItemStack output, String metalName) { - addPulverizerRecipe(RecipeExporter, rawMetalInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { - 1., .25 - }, new double[] { - 1., .5 - }), "raw_" + metalName); - - addPulverizerRecipe(RecipeExporter, rawMetalBlockInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { - 1., 1., 1., 1., 1., 1., 1., 1., 1., .5, .5, .25 - }, new double[] { - 1., 1., 1., 1., 1., 1., 1., 1., 1., .75, .5, .25, .25 - }), "raw_" + metalName + "_blocks"); - - addPulverizerRecipe(RecipeExporter, ingotInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, - 1., 1.), metalName + "_ingots"); - } - private static void addPulverizerRecipe(RecipeExporter RecipeExporter, Ingredient input, - PulverizerRecipe.OutputItemStackWithPercentages output, - String recipeIngredientName) { - addPulverizerRecipe(RecipeExporter, input, output, - new PulverizerRecipe.OutputItemStackWithPercentages(ItemStack.EMPTY, new double[0], new double[0]), recipeIngredientName); - } - private static void addPulverizerRecipe(RecipeExporter RecipeExporter, Ingredient input, - PulverizerRecipe.OutputItemStackWithPercentages output, - PulverizerRecipe.OutputItemStackWithPercentages secondaryOutput, - String recipeIngredientName) { - Identifier recipeId = EPAPI.id("pulverizer/" + - getItemPath(output.output().getItem()) + "_from_pulverizer_" + recipeIngredientName); - - PulverizerRecipe recipe = new PulverizerRecipe(output, secondaryOutput, input); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addBasicWoodSawmillRecipe(RecipeExporter RecipeExporter, ItemStack planksItem, - Ingredient logsInput, Ingredient fenceInput, Ingredient fenceGateInput, - Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, - Ingredient signInput, Ingredient boatInput, Ingredient chestBoatInput, - boolean isRaft, String woodName) { - addSawmillRecipe(RecipeExporter, logsInput, planksItem.copyWithCount(6), 1, getItemPath(planksItem.getItem()), - woodName + "_logs"); - - addBasicWoodWithoutLogsSawmillRecipe(RecipeExporter, planksItem, fenceInput, fenceGateInput, doorInput, trapdoorInput, - pressurePlateInput, signInput, boatInput, chestBoatInput, isRaft, woodName); - } - private static void addBasicWoodWithoutLogsSawmillRecipe(RecipeExporter RecipeExporter, ItemStack planksItem, - Ingredient fenceInput, Ingredient fenceGateInput, - Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, - Ingredient signInput, Ingredient boatInput, Ingredient chestBoatInput, - boolean isRaft, String woodName) { - addBasicWoodWithoutLogsAndBoatsSawmillRecipe(RecipeExporter, planksItem, fenceInput, fenceGateInput, doorInput, - trapdoorInput, pressurePlateInput, signInput, woodName); - - addSawmillRecipe(RecipeExporter, boatInput, planksItem.copyWithCount(4), 3, getItemPath(planksItem.getItem()), - woodName + (isRaft?"_raft":"_boat")); - addSawmillRecipe(RecipeExporter, chestBoatInput, planksItem.copyWithCount(5), 7, getItemPath(planksItem.getItem()), - woodName + (isRaft?"_chest_raft":"_chest_boat")); - } - private static void addBasicWoodWithoutLogsAndBoatsSawmillRecipe(RecipeExporter RecipeExporter, ItemStack planksItem, - Ingredient fenceInput, Ingredient fenceGateInput, - Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, - Ingredient signInput, String woodName) { - addSawmillRecipe(RecipeExporter, fenceInput, planksItem, 2, getItemPath(planksItem.getItem()), - woodName + "_fence"); - addSawmillRecipe(RecipeExporter, fenceGateInput, planksItem.copyWithCount(2), 3, getItemPath(planksItem.getItem()), - woodName + "_fence_gate"); - addSawmillRecipe(RecipeExporter, doorInput, planksItem, 3, getItemPath(planksItem.getItem()), - woodName + "_door"); - addSawmillRecipe(RecipeExporter, trapdoorInput, planksItem.copyWithCount(2), 3, getItemPath(planksItem.getItem()), - woodName + "_trapdoor"); - addSawmillRecipe(RecipeExporter, pressurePlateInput, planksItem, 2, getItemPath(planksItem.getItem()), - woodName + "_pressure_plate"); - addSawmillRecipe(RecipeExporter, signInput, planksItem.copyWithCount(2), 1, getItemPath(planksItem.getItem()), - woodName + "_sign"); - } - private static void addSawmillRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, - int sawdustAmount, String outputName, String recipeIngredientName) { - Identifier recipeId = EPAPI.id("sawmill/" + - outputName + "_from_sawing_" + recipeIngredientName); - - SawmillRecipe recipe = new SawmillRecipe(output, input, sawdustAmount); - RecipeExporter.accept(recipeId, recipe, null); - } - private static void addSawmillRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, - ItemStack secondaryOutput, String outputName, String recipeIngredientName) { - Identifier recipeId = EPAPI.id("sawmill/" + - outputName + "_from_sawing_" + recipeIngredientName); - - SawmillRecipe recipe = new SawmillRecipe(output, secondaryOutput, input); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addBasicFlowerGrowingRecipe(RecipeExporter RecipeExporter, ItemConvertible flowerItem, - String outputName) { - addPlantGrowthChamberRecipe(RecipeExporter, Ingredient.ofItems(flowerItem), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(flowerItem), new double[] { - 1., 1., .33 - }) - }, 16000, outputName, getItemPath(flowerItem)); - } - private static void addBasicMushroomsGrowingRecipe(RecipeExporter RecipeExporter, ItemConvertible mushroomItem, - String outputName) { - addPlantGrowthChamberRecipe(RecipeExporter, Ingredient.ofItems(mushroomItem), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(mushroomItem), new double[] { - 1., 1., .5, .25 - }) - }, 16000, outputName, getItemPath(mushroomItem)); - } - private static void addBasicAncientFlowerGrowingRecipe(RecipeExporter RecipeExporter, ItemConvertible seedItem, - ItemConvertible flowerItem, String outputName) { - addPlantGrowthChamberRecipe(RecipeExporter, Ingredient.ofItems(seedItem), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(seedItem), new double[] { - 1., .33, .15 - }), - new OutputItemStackWithPercentages(new ItemStack(flowerItem), new double[] { - 1., .15 - }) - }, 16000, outputName, getItemPath(seedItem)); - } - private static void addPlantGrowthChamberRecipe(RecipeExporter RecipeExporter, Ingredient input, - OutputItemStackWithPercentages[] outputs, int ticks, - String outputName, String recipeIngredientName) { - Identifier recipeId = EPAPI.id("growing/" + - outputName + "_from_growing_" + recipeIngredientName); - - PlantGrowthChamberRecipe recipe = new PlantGrowthChamberRecipe(outputs, input, ticks); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addPlantGrowthChamberFertilizerRecipe(RecipeExporter RecipeExporter, Ingredient input, - double speedMultiplier, double energyConsumptionMultiplier, - String recipeIngredientName) { - Identifier recipeId = EPAPI.id("growing/fertilizer/" + - recipeIngredientName); - - PlantGrowthChamberFertilizerRecipe recipe = new PlantGrowthChamberFertilizerRecipe(input, speedMultiplier, - energyConsumptionMultiplier); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addGearMetalPressRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output) { - addMetalPressRecipe(RecipeExporter, input, output, new ItemStack(EPItems.GEAR_PRESS_MOLD), 2); - } - private static void addRodMetalPressRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output) { - addMetalPressRecipe(RecipeExporter, input, output.copyWithCount(2), new ItemStack(EPItems.ROD_PRESS_MOLD)); - } - private static void addWireMetalPressRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output) { - addMetalPressRecipe(RecipeExporter, input, output.copyWithCount(3), new ItemStack(EPItems.WIRE_PRESS_MOLD)); - } - private static void addMetalPressRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, - ItemStack pressMold) { - addMetalPressRecipe(RecipeExporter, input, output, pressMold, 1); - } - private static void addMetalPressRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, - ItemStack pressMold, int inputCount) { - Identifier recipeId = EPAPI.id("metal_press/" + - getItemPath(output.getItem())); - - MetalPressRecipe recipe = new MetalPressRecipe(output, pressMold, input, inputCount); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addHeatGeneratorRecipe(RecipeExporter RecipeExporter, Fluid input, int energyProduction, - String recipeIngredientName) { - addHeatGeneratorRecipe(RecipeExporter, new Fluid[] { - input - }, energyProduction, recipeIngredientName); - } - private static void addHeatGeneratorRecipe(RecipeExporter RecipeExporter, Fluid[] input, int energyProduction, - String recipeIngredientName) { - Identifier recipeId = EPAPI.id("heat_generator/" + - "energy_production_from_" + recipeIngredientName); - - HeatGeneratorRecipe recipe = new HeatGeneratorRecipe(input, energyProduction); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addThermalGeneratorRecipe(RecipeExporter RecipeExporter, Fluid input, int energyProduction, - String recipeIngredientName) { - addThermalGeneratorRecipe(RecipeExporter, new Fluid[] { - input - }, energyProduction, recipeIngredientName); - } - private static void addThermalGeneratorRecipe(RecipeExporter RecipeExporter, Fluid[] input, int energyProduction, - String recipeIngredientName) { - Identifier recipeId = EPAPI.id("thermal_generator/" + - "energy_production_from_" + recipeIngredientName); - - ThermalGeneratorRecipe recipe = new ThermalGeneratorRecipe(input, energyProduction); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addStoneSolidifierRecipe(RecipeExporter RecipeExporter, int waterAmount, int lavaAmount, ItemStack output) { - Identifier recipeId = EPAPI.id("stone_solidifier/" + - getItemPath(output.getItem())); - - StoneSolidifierRecipe recipe = new StoneSolidifierRecipe(output, waterAmount, lavaAmount); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addAssemblingMachineRecipe(RecipeExporter RecipeExporter, IngredientWithCount[] inputs, ItemStack output) { - Identifier recipeId = EPAPI.id("assembling/" + - getItemPath(output.getItem())); - - AssemblingMachineRecipe recipe = new AssemblingMachineRecipe(output, inputs); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addOreFiltrationRecipe(RecipeExporter RecipeExporter, ItemStack oreOutput, double oreOutputPercentage, - String oreName) { - addFiltrationPlantRecipe(RecipeExporter, new OutputItemStackWithPercentages(new ItemStack(EPItems.STONE_PEBBLE), .33), - new OutputItemStackWithPercentages(oreOutput, oreOutputPercentage), Registries.ITEM.getId(oreOutput.getItem()), - oreName + "_ore_filtration"); - } - private static void addFiltrationPlantRecipe(RecipeExporter RecipeExporter, OutputItemStackWithPercentages output, - Identifier icon, String recipeName) { - addFiltrationPlantRecipe(RecipeExporter, output, OutputItemStackWithPercentages.EMPTY, icon, recipeName); - } - private static void addFiltrationPlantRecipe(RecipeExporter RecipeExporter, OutputItemStackWithPercentages output, - OutputItemStackWithPercentages secondaryOutput, Identifier icon, - String recipeName) { - Identifier recipeId = EPAPI.id("filtration_plant/" + - recipeName); - - FiltrationPlantRecipe recipe = new FiltrationPlantRecipe(output, secondaryOutput, icon); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addConcreteFluidTransposerRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output) { - addFluidTransposerRecipe(RecipeExporter, input, output, FluidTransposerBlockEntity.Mode.FILLING, - new FluidStack(Fluids.WATER, FluidUtils.convertMilliBucketsToDroplets(1000))); - } - private static void addFluidTransposerRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, - FluidTransposerBlockEntity.Mode mode, FluidStack fluid) { - Identifier recipeId = EPAPI.id("fluid_transposer/" + - getItemPath(output.getItem())); - - FluidTransposerRecipe recipe = new FluidTransposerRecipe(mode, output, input, fluid); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addChargerRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, int energyConsumption) { - Identifier recipeId = EPAPI.id("charger/" + - getItemPath(output.getItem())); - - ChargerRecipe recipe = new ChargerRecipe(output, input, energyConsumption); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addEnergizerRecipe(RecipeExporter RecipeExporter, Ingredient input, ItemStack output, int energyConsumption) { - Identifier recipeId = EPAPI.id("energizer/" + - getItemPath(output.getItem())); - - EnergizerRecipe recipe = new EnergizerRecipe(output, input, energyConsumption); - RecipeExporter.accept(recipeId, recipe, null); - } - - private static void addCrystalGrowthChamberRecipe(RecipeExporter RecipeExporter, Ingredient input, OutputItemStackWithPercentages output, - int ticks) { - addCrystalGrowthChamberRecipe(RecipeExporter, input, output, 1, ticks); - } - private static void addCrystalGrowthChamberRecipe(RecipeExporter RecipeExporter, Ingredient input, OutputItemStackWithPercentages output, - int inputCount, int ticks) { - Identifier recipeId = EPAPI.id("crystal_growing/" + - getItemPath(output.output().getItem())); - - CrystalGrowthChamberRecipe recipe = new CrystalGrowthChamberRecipe(output, input, inputCount, ticks); - RecipeExporter.accept(recipeId, recipe, null); + @Override + public String getName() { + return "Recipes"; } } diff --git a/src/main/java/me/jddev0/ep/datagen/ModRegistriesProvider.java b/src/main/java/me/jddev0/ep/datagen/ModRegistriesProvider.java index f60e82a41..7b32d9290 100644 --- a/src/main/java/me/jddev0/ep/datagen/ModRegistriesProvider.java +++ b/src/main/java/me/jddev0/ep/datagen/ModRegistriesProvider.java @@ -14,12 +14,12 @@ public ModRegistriesProvider(FabricDataOutput output, CompletableFuture advancementOu return addAdvancement(advancementOutput, parent, new ItemStack(icon), advancementId, type, InventoryChangedCriterion.Conditions.items(trigger)); } - private AdvancementEntry addAdvancement(Consumer advancementOutput, AdvancementEntry parent, + private AdvancementEntry addAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Consumer advancementOutput, AdvancementEntry parent, ItemConvertible icon, String advancementId, AdvancementFrame type, TagKey trigger) { return addAdvancement(advancementOutput, parent, new ItemStack(icon), advancementId, type, InventoryChangedCriterion.Conditions.items(ItemPredicate.Builder.create().tag( + lookupProvider.getOrThrow(RegistryKeys.ITEM), trigger ))); } diff --git a/src/main/java/me/jddev0/ep/datagen/advancement/ModBasicsAdvancements.java b/src/main/java/me/jddev0/ep/datagen/advancement/ModBasicsAdvancements.java index 6ff5ca406..11d91046c 100644 --- a/src/main/java/me/jddev0/ep/datagen/advancement/ModBasicsAdvancements.java +++ b/src/main/java/me/jddev0/ep/datagen/advancement/ModBasicsAdvancements.java @@ -20,6 +20,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.predicate.item.ItemPredicate; +import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.tag.TagKey; import net.minecraft.text.Text; @@ -47,6 +48,7 @@ public void generateAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Co ). criterion("has_the_item", InventoryChangedCriterion.Conditions.items(ItemPredicate.Builder.create().tag( + lookupProvider.getOrThrow(RegistryKeys.ITEM), ConventionalItemTags.COPPER_INGOTS ))). build(advancementOutput, EPAPI.MOD_ID + ":main/basics/energizedpower_basics"); @@ -62,12 +64,14 @@ public void generateAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Co ); AdvancementEntry rawPressMolds = addAdvancement( + lookupProvider, advancementOutput, pressMoldMaker, EPItems.RAW_GEAR_PRESS_MOLD, "raw_press_molds", AdvancementFrame.TASK, EnergizedPowerItemTags.RAW_METAL_PRESS_MOLDS ); AdvancementEntry pressMolds = addAdvancement( + lookupProvider, advancementOutput, rawPressMolds, EPItems.GEAR_PRESS_MOLD, "press_molds", AdvancementFrame.TASK, EnergizedPowerItemTags.METAL_PRESS_MOLDS @@ -79,12 +83,14 @@ public void generateAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Co ); AdvancementEntry steelIngot = addAdvancement( + lookupProvider, advancementOutput, alloyFurnace, EPItems.STEEL_INGOT, "steel_ingot", AdvancementFrame.TASK, CommonItemTags.INGOTS_STEEL ); AdvancementEntry redstoneAlloyIngot = addAdvancement( + lookupProvider, advancementOutput, alloyFurnace, EPItems.REDSTONE_ALLOY_INGOT, "redstone_alloy_ingot", AdvancementFrame.TASK, CommonItemTags.INGOTS_REDSTONE_ALLOY @@ -96,54 +102,63 @@ public void generateAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Co ); AdvancementEntry hammer = addAdvancement( + lookupProvider, advancementOutput, energizedPowerBasics, EPItems.IRON_HAMMER, "hammer", AdvancementFrame.TASK, CommonItemTags.TOOLS_HAMMERS ); AdvancementEntry tinPlate = addAdvancement( + lookupProvider, advancementOutput, hammer, EPItems.TIN_PLATE, "tin_plate", AdvancementFrame.TASK, CommonItemTags.PLATES_TIN ); AdvancementEntry copperPlate = addAdvancement( + lookupProvider, advancementOutput, hammer, EPItems.COPPER_PLATE, "copper_plate", AdvancementFrame.TASK, CommonItemTags.PLATES_COPPER ); AdvancementEntry goldPlate = addAdvancement( + lookupProvider, advancementOutput, hammer, EPItems.GOLD_PLATE, "gold_plate", AdvancementFrame.TASK, CommonItemTags.PLATES_GOLD ); AdvancementEntry ironPlate = addAdvancement( + lookupProvider, advancementOutput, hammer, EPItems.IRON_PLATE, "iron_plate", AdvancementFrame.TASK, CommonItemTags.PLATES_IRON ); AdvancementEntry cutter = addAdvancement( + lookupProvider, advancementOutput, ironPlate, EPItems.CUTTER, "cutter", AdvancementFrame.TASK, CommonItemTags.TOOLS_CUTTERS ); AdvancementEntry tinWire = addAdvancement( + lookupProvider, advancementOutput, cutter, EPItems.TIN_WIRE, "tin_wire", AdvancementFrame.TASK, CommonItemTags.WIRES_TIN ); AdvancementEntry goldWire = addAdvancement( + lookupProvider, advancementOutput, cutter, EPItems.GOLD_WIRE, "gold_wire", AdvancementFrame.TASK, CommonItemTags.WIRES_GOLD ); AdvancementEntry copperWire = addAdvancement( + lookupProvider, advancementOutput, cutter, EPItems.COPPER_WIRE, "copper_wire", AdvancementFrame.TASK, CommonItemTags.WIRES_COPPER @@ -299,6 +314,7 @@ public void generateAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Co EPBlocks.LV_TRANSFORMER_1_TO_N_ITEM, "lv_transformers", AdvancementFrame.TASK, InventoryChangedCriterion.Conditions.items( ItemPredicate.Builder.create().items( + lookupProvider.getOrThrow(RegistryKeys.ITEM), EPBlocks.LV_TRANSFORMER_1_TO_N_ITEM, EPBlocks.LV_TRANSFORMER_3_TO_3_ITEM, EPBlocks.LV_TRANSFORMER_N_TO_1_ITEM @@ -307,6 +323,7 @@ public void generateAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Co ); AdvancementEntry silicon = addAdvancement( + lookupProvider, advancementOutput, energizedPowerBasics, EPItems.SILICON, "silicon", AdvancementFrame.TASK, CommonItemTags.SILICON @@ -518,6 +535,7 @@ public void generateAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Co EPBlocks.MV_TRANSFORMER_1_TO_N, "mv_transformers", AdvancementFrame.TASK, InventoryChangedCriterion.Conditions.items( ItemPredicate.Builder.create().items( + lookupProvider.getOrThrow(RegistryKeys.ITEM), EPBlocks.MV_TRANSFORMER_1_TO_N_ITEM, EPBlocks.MV_TRANSFORMER_3_TO_3_ITEM, EPBlocks.MV_TRANSFORMER_N_TO_1_ITEM @@ -566,11 +584,12 @@ private AdvancementEntry addAdvancement(Consumer advancementOu return addAdvancement(advancementOutput, parent, new ItemStack(icon), advancementId, type, InventoryChangedCriterion.Conditions.items(trigger)); } - private AdvancementEntry addAdvancement(Consumer advancementOutput, AdvancementEntry parent, + private AdvancementEntry addAdvancement(RegistryWrapper.WrapperLookup lookupProvider, Consumer advancementOutput, AdvancementEntry parent, ItemConvertible icon, String advancementId, AdvancementFrame type, TagKey trigger) { return addAdvancement(advancementOutput, parent, new ItemStack(icon), advancementId, type, InventoryChangedCriterion.Conditions.items(ItemPredicate.Builder.create().tag( + lookupProvider.getOrThrow(RegistryKeys.ITEM), trigger ))); } diff --git a/src/main/java/me/jddev0/ep/datagen/loot/ModBlockLootTables.java b/src/main/java/me/jddev0/ep/datagen/loot/ModBlockLootTables.java index 20fc1cf2e..64184f523 100644 --- a/src/main/java/me/jddev0/ep/datagen/loot/ModBlockLootTables.java +++ b/src/main/java/me/jddev0/ep/datagen/loot/ModBlockLootTables.java @@ -181,7 +181,7 @@ private void add(Block block, Function builderFunction } private LootTable.Builder createTinOreDrops(Block block) { - RegistryWrapper.Impl impl = registryLookup.getWrapperOrThrow(RegistryKeys.ENCHANTMENT); + RegistryWrapper.Impl impl = registries.getOrThrow(RegistryKeys.ENCHANTMENT); return dropsWithSilkTouch(block, applyExplosionDecay( diff --git a/src/main/java/me/jddev0/ep/datagen/model/ModModels.java b/src/main/java/me/jddev0/ep/datagen/model/ModModels.java index e15ee926e..75078277e 100644 --- a/src/main/java/me/jddev0/ep/datagen/model/ModModels.java +++ b/src/main/java/me/jddev0/ep/datagen/model/ModModels.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import net.minecraft.data.client.Model; import net.minecraft.data.client.TextureKey; -import net.minecraft.util.Identifier; import java.util.Optional; diff --git a/src/main/java/me/jddev0/ep/datagen/recipe/ModRecipeGenerator.java b/src/main/java/me/jddev0/ep/datagen/recipe/ModRecipeGenerator.java new file mode 100644 index 000000000..2c9f486c1 --- /dev/null +++ b/src/main/java/me/jddev0/ep/datagen/recipe/ModRecipeGenerator.java @@ -0,0 +1,3035 @@ +package me.jddev0.ep.datagen.recipe; + +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.block.EPBlocks; +import me.jddev0.ep.block.entity.FluidTransposerBlockEntity; +import me.jddev0.ep.fluid.FluidStack; +import me.jddev0.ep.item.EPItems; +import me.jddev0.ep.recipe.*; +import me.jddev0.ep.registry.tags.CommonItemTags; +import me.jddev0.ep.util.FluidUtils; +import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; +import net.minecraft.advancement.Advancement; +import net.minecraft.advancement.AdvancementCriterion; +import net.minecraft.advancement.AdvancementRequirements; +import net.minecraft.advancement.AdvancementRewards; +import net.minecraft.advancement.criterion.InventoryChangedCriterion; +import net.minecraft.advancement.criterion.RecipeUnlockedCriterion; +import net.minecraft.data.server.recipe.RecipeExporter; +import net.minecraft.data.server.recipe.RecipeGenerator; +import net.minecraft.fluid.Fluid; +import net.minecraft.fluid.Fluids; +import net.minecraft.item.Item; +import net.minecraft.item.ItemConvertible; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.CookingRecipeCategory; +import net.minecraft.recipe.book.CraftingRecipeCategory; +import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.RegistryWrapper; +import net.minecraft.registry.tag.ItemTags; +import net.minecraft.registry.tag.TagKey; +import net.minecraft.util.Identifier; +import net.minecraft.util.collection.DefaultedList; + +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.function.Function; + +public class ModRecipeGenerator extends RecipeGenerator { + public ModRecipeGenerator(RegistryWrapper.WrapperLookup registries, RecipeExporter exporter) { + super(registries, exporter); + } + + @Override + public void generate() { + buildCraftingRecipes(); + buildCookingRecipes(); + buildSmithingRecipes(); + buildPressMoldMakerRecipes(); + buildAlloyFurnaceRecipes(); + buildCompressorRecipes(); + buildCrusherRecipes(); + buildPulverizerRecipes(); + buildSawmillRecipes(); + buildPlantGrowthChamberRecipes(); + buildPlantGrowthChamberFertilizerRecipes(); + buildMetalPressRecipes(); + buildHeatGeneratorRecipes(); + buildThermalGeneratorRecipes(); + buildStoneSolidifierRecipes(); + buildAssemblingMachineRecipes(); + buildFiltrationPlantRecipes(); + buildFluidTransposerRecipes(); + buildChargerRecipes(); + buildEnergizerRecipes(); + buildCrystalGrowthChamberRecipes(); + } + + private void buildCraftingRecipes() { + buildItemIngredientsCraftingRecipes(); + + buildFertilizerCraftingRecipes(); + + buildUpgradeModuleCraftingRecipes(); + + buildToolsCraftingRecipes(); + + buildEnergyItemsCraftingRecipes(); + + buildItemTransportCraftingRecipes(); + buildFluidTransportCraftingRecipes(); + buildEnergyTransportCraftingRecipes(); + + buildMachineCraftingRecipes(); + + buildMiscCraftingRecipes(); + + buildCustomCraftingRecipes(); + } + private void buildItemIngredientsCraftingRecipes() { + add3x3UnpackingCraftingRecipe(conditionsFromItem(EPBlocks.SAWDUST_BLOCK), + Ingredient.ofItems(EPBlocks.SAWDUST_BLOCK), EPItems.SAWDUST, + CraftingRecipeCategory.MISC, "", "_from_sawdust_block"); + add3x3PackingCraftingRecipe(conditionsFromTag(CommonItemTags.DUSTS_WOOD), + ingredientFromTag(CommonItemTags.DUSTS_WOOD), EPBlocks.SAWDUST_BLOCK_ITEM, + CraftingRecipeCategory.MISC, "", ""); + + add3x3UnpackingCraftingRecipe(conditionsFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), EPItems.SILICON, + CraftingRecipeCategory.MISC, "", "_from_silicon_block"); + add3x3PackingCraftingRecipe(conditionsFromTag(CommonItemTags.SILICON), + ingredientFromTag(CommonItemTags.SILICON), EPBlocks.SILICON_BLOCK_ITEM, + CraftingRecipeCategory.MISC, "", ""); + + addMetalNuggetCraftingRecipe(CommonItemTags.INGOTS_TIN, EPItems.TIN_NUGGET); + addMetalIngotCraftingRecipes(CommonItemTags.NUGGETS_TIN, CommonItemTags.STORAGE_BLOCKS_TIN, + EPItems.TIN_INGOT, "tin"); + + add3x3PackingCraftingRecipe(conditionsFromTag(CommonItemTags.INGOTS_TIN), + ingredientFromTag(CommonItemTags.INGOTS_TIN), EPBlocks.TIN_BLOCK_ITEM, + CraftingRecipeCategory.MISC, "", ""); + + add3x3UnpackingCraftingRecipe(conditionsFromTag(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), + ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), EPItems.RAW_TIN, + CraftingRecipeCategory.MISC, "", ""); + add3x3PackingCraftingRecipe(conditionsFromTag(CommonItemTags.RAW_MATERIALS_TIN), + ingredientFromTag(CommonItemTags.RAW_MATERIALS_TIN), EPBlocks.RAW_TIN_BLOCK_ITEM, + CraftingRecipeCategory.MISC, "", ""); + + addMetalPlateCraftingRecipe(CommonItemTags.INGOTS_TIN, EPItems.TIN_PLATE); + addMetalPlateCraftingRecipe(ConventionalItemTags.COPPER_INGOTS, EPItems.COPPER_PLATE); + addMetalPlateCraftingRecipe(ConventionalItemTags.IRON_INGOTS, EPItems.IRON_PLATE); + addMetalPlateCraftingRecipe(ConventionalItemTags.GOLD_INGOTS, EPItems.GOLD_PLATE); + + addMetalWireCraftingRecipe(CommonItemTags.PLATES_TIN, EPItems.TIN_WIRE); + addMetalWireCraftingRecipe(CommonItemTags.PLATES_COPPER, EPItems.COPPER_WIRE); + addMetalWireCraftingRecipe(CommonItemTags.PLATES_GOLD, EPItems.GOLD_WIRE); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.SILICON), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'Q', ingredientFromTag(ConventionalItemTags.QUARTZ_GEMS), + 'T', ingredientFromTag(CommonItemTags.INGOTS_TIN), + 'C', ingredientFromTag(ConventionalItemTags.COPPER_INGOTS) + ), new String[] { + " C ", + "SQS", + " T " + }, new ItemStack(EPItems.BASIC_SOLAR_CELL), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.WIRES_COPPER), Map.of( + 'C', ingredientFromTag(CommonItemTags.WIRES_COPPER), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'S', ingredientFromTag(CommonItemTags.SILICON) + ), new String[] { + "RCR", + "CIC", + "SCS" + }, new ItemStack(EPItems.BASIC_CIRCUIT), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_CIRCUIT), Map.of( + 'G', ingredientFromTag(CommonItemTags.WIRES_GOLD), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPItems.BASIC_CIRCUIT) + ), new String[] { + "GGG", + "CBC", + "CBC" + }, new ItemStack(EPItems.BASIC_UPGRADE_MODULE), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ADVANCED_CIRCUIT), Map.of( + 'G', ingredientFromTag(CommonItemTags.WIRES_ENERGIZED_GOLD), + 'C', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'A', Ingredient.ofItems(EPItems.ADVANCED_CIRCUIT), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "GGG", + "CBC", + "CAC" + }, new ItemStack(EPItems.ADVANCED_UPGRADE_MODULE), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), Map.of( + 'g', ingredientFromTag(CommonItemTags.WIRES_ENERGIZED_GOLD), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'P', Ingredient.ofItems(EPItems.PROCESSING_UNIT), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE) + ), new String[] { + "ggg", + "GAG", + "GPG" + }, new ItemStack(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(ConventionalItemTags.IRON_INGOTS), Map.of( + 'i', ingredientFromTag(ConventionalItemTags.IRON_NUGGETS), + 'I', ingredientFromTag(ConventionalItemTags.IRON_INGOTS) + ), new String[] { + " i ", + "iIi", + " i " + }, new ItemStack(EPItems.SAW_BLADE), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.SILICON), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'I', ingredientFromTag(ConventionalItemTags.IRON_INGOTS), + 'C', ingredientFromTag(ConventionalItemTags.COPPER_INGOTS) + ), new String[] { + "CIC", + "ISI", + "CIC" + }, new ItemStack(EPBlocks.BASIC_MACHINE_FRAME_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.GEARS_IRON), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 's', ingredientFromTag(CommonItemTags.INGOTS_STEEL), + 'I', ingredientFromTag(CommonItemTags.GEARS_IRON), + 'R', ingredientFromTag(CommonItemTags.RODS_IRON), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "IsR", + "SBS", + "RsI" + }, new ItemStack(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.INGOTS_ENERGIZED_COPPER), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'A', ingredientFromTag(CommonItemTags.INGOTS_ADVANCED_ALLOY), + 'E', ingredientFromTag(CommonItemTags.INGOTS_ENERGIZED_COPPER), + 'H', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "ESE", + "AHA", + "ESE" + }, new ItemStack(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "CSC", + "SAS", + "CSC" + }, new ItemStack(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), CraftingRecipeCategory.MISC); + } + private void buildFertilizerCraftingRecipes() { + addShapedCraftingRecipe(conditionsFromItem(Items.BONE_MEAL), Map.of( + 'B', Ingredient.ofItems(Items.BONE_MEAL), + 'D', Ingredient.ofItems(Items.DANDELION), + 'b', Ingredient.ofItems(Items.BLUE_ORCHID), + 'L', ingredientFromTag(ConventionalItemTags.LAPIS_GEMS), + 'A', Ingredient.ofItems(Items.ALLIUM), + 'P', Ingredient.ofItems(Items.POPPY) + ), new String[] { + "DBb", + "BLB", + "ABP" + }, new ItemStack(EPItems.BASIC_FERTILIZER, 4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_FERTILIZER), Map.of( + 'B', Ingredient.ofItems(EPItems.BASIC_FERTILIZER), + 'S', Ingredient.ofItems(Items.SUGAR_CANE), + 'K', Ingredient.ofItems(Items.KELP), + 's', Ingredient.ofItems(Items.SUGAR), + 'b', Ingredient.ofItems(Items.BAMBOO), + 'W', Ingredient.ofItems(Items.WHEAT_SEEDS) + ), new String[] { + "SBK", + "BsB", + "bBW" + }, new ItemStack(EPItems.GOOD_FERTILIZER, 4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.GOOD_FERTILIZER), Map.of( + 'G', Ingredient.ofItems(EPItems.GOOD_FERTILIZER), + 'M', Ingredient.ofItems(Items.RED_MUSHROOM), + 'S', Ingredient.ofItems(Items.SWEET_BERRIES), + 'r', ingredientFromTag(ConventionalItemTags.RED_DYES), + 'T', Ingredient.ofItems(Items.RED_TULIP), + 'R', Ingredient.ofItems(Items.ROSE_BUSH) + ), new String[] { + "MGS", + "GrG", + "TGR" + }, new ItemStack(EPItems.ADVANCED_FERTILIZER, 4), CraftingRecipeCategory.MISC); + } + private void buildUpgradeModuleCraftingRecipes() { + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "CSC", + "RBR", + "CSC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.SPEED_UPGRADE_MODULE_1), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE), + 's', Ingredient.ofItems(EPItems.SPEED_UPGRADE_MODULE_1) + ), new String[] { + "CSC", + "RBR", + "CsC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.SPEED_UPGRADE_MODULE_2), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 's', Ingredient.ofItems(EPItems.SPEED_UPGRADE_MODULE_2) + ), new String[] { + "CSC", + "RAR", + "CsC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_3), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.SPEED_UPGRADE_MODULE_3), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 's', Ingredient.ofItems(EPItems.SPEED_UPGRADE_MODULE_3) + ), new String[] { + "CSC", + "RAR", + "CsC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.SPEED_UPGRADE_MODULE_4), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 's', Ingredient.ofItems(EPItems.SPEED_UPGRADE_MODULE_4) + ), new String[] { + "CSC", + "rRr", + "CsC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_5), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'G', ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + 'R', ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "CGC", + "RBR", + "CGC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'G', ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + 'R', ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE), + 'E', Ingredient.ofItems(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1) + ), new String[] { + "CGC", + "RBR", + "CEC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'G', ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + 'R', ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'E', Ingredient.ofItems(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2) + ), new String[] { + "CGC", + "RAR", + "CEC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'G', ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + 'R', ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'E', Ingredient.ofItems(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3) + ), new String[] { + "CGC", + "RAR", + "CEC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'G', ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + 'r', ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'E', Ingredient.ofItems(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4) + ), new String[] { + "CGC", + "rRr", + "CEC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_5), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'T', ingredientFromTag(CommonItemTags.PLATES_TIN), + 'c', ingredientFromTag(ItemTags.COALS), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "CTC", + "cBc", + "CTC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'T', ingredientFromTag(CommonItemTags.PLATES_TIN), + 'c', ingredientFromTag(ItemTags.COALS), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE), + 'E', Ingredient.ofItems(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1) + ), new String[] { + "CTC", + "cBc", + "CEC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'T', ingredientFromTag(CommonItemTags.PLATES_TIN), + 'c', ingredientFromTag(ItemTags.COALS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'E', Ingredient.ofItems(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2) + ), new String[] { + "CTC", + "cAc", + "CEC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'T', ingredientFromTag(CommonItemTags.PLATES_TIN), + 'c', ingredientFromTag(ItemTags.COALS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'E', Ingredient.ofItems(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3) + ), new String[] { + "CTC", + "cAc", + "CEC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'T', ingredientFromTag(CommonItemTags.PLATES_TIN), + 'c', ingredientFromTag(ItemTags.COALS), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'E', Ingredient.ofItems(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4) + ), new String[] { + "CTC", + "cRc", + "CEC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_5), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE) + ), new String[] { + "GCG", + "rRr", + "GCG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.DURATION_UPGRADE_MODULE_1), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', Ingredient.ofItems(EPItems.DURATION_UPGRADE_MODULE_1) + ), new String[] { + "GCG", + "rRr", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.DURATION_UPGRADE_MODULE_2), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', Ingredient.ofItems(EPItems.DURATION_UPGRADE_MODULE_2) + ), new String[] { + "GCG", + "rRr", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_3), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.DURATION_UPGRADE_MODULE_3), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', Ingredient.ofItems(EPItems.DURATION_UPGRADE_MODULE_3) + ), new String[] { + "GCG", + "rRr", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.DURATION_UPGRADE_MODULE_4), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', Ingredient.ofItems(EPItems.DURATION_UPGRADE_MODULE_4) + ), new String[] { + "GCG", + "rRr", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_5), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.DURATION_UPGRADE_MODULE_5), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', Ingredient.ofItems(EPItems.DURATION_UPGRADE_MODULE_5) + ), new String[] { + "GDG", + "CRC", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_6), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ADVANCED_UPGRADE_MODULE), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE) + ), new String[] { + "GRG", + "RAR", + "GRG" + }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.RANGE_UPGRADE_MODULE_1), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'R', Ingredient.ofItems(EPItems.RANGE_UPGRADE_MODULE_1) + ), new String[] { + "GrG", + "rAr", + "GRG" + }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.RANGE_UPGRADE_MODULE_2), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'R', Ingredient.ofItems(EPItems.RANGE_UPGRADE_MODULE_2) + ), new String[] { + "GrG", + "rAr", + "GRG" + }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_3), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE), + 'F', Ingredient.ofItems(EPBlocks.IRON_FLUID_PIPE_ITEM) + ), new String[] { + "IFI", + "RBR", + "IFI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1), Map.of( + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE), + 'F', Ingredient.ofItems(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'E', Ingredient.ofItems(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1) + ), new String[] { + "IFI", + "RBR", + "IEI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2), Map.of( + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'F', Ingredient.ofItems(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'E', Ingredient.ofItems(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2) + ), new String[] { + "IFI", + "RAR", + "IEI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3), Map.of( + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'F', Ingredient.ofItems(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'E', Ingredient.ofItems(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3) + ), new String[] { + "IFI", + "RAR", + "IEI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4), Map.of( + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'r', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'F', Ingredient.ofItems(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'E', Ingredient.ofItems(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4) + ), new String[] { + "IFI", + "rRr", + "IEI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_5), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE), + 'b', Ingredient.ofItems(Items.BLAST_FURNACE) + ), new String[] { + "CSC", + "RBR", + "CbC" + }, new ItemStack(EPItems.BLAST_FURNACE_UPGRADE_MODULE), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 's', ingredientFromTag(CommonItemTags.SILICON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE), + 'S', Ingredient.ofItems(Items.SMOKER) + ), new String[] { + "CsC", + "RBR", + "CSC" + }, new ItemStack(EPItems.SMOKER_UPGRADE_MODULE), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_GOLD), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'b', Ingredient.ofItems(EPItems.BASIC_SOLAR_CELL), + 'B', Ingredient.ofItems(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "GSG", + "bBb", + "GSG" + }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.MOON_LIGHT_UPGRADE_MODULE_1), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_GOLD), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'B', Ingredient.ofItems(EPItems.BASIC_SOLAR_CELL), + 'A', Ingredient.ofItems(EPItems.ADVANCED_UPGRADE_MODULE), + 'M', Ingredient.ofItems(EPItems.MOON_LIGHT_UPGRADE_MODULE_1) + ), new String[] { + "GSG", + "BAB", + "GMG" + }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.MOON_LIGHT_UPGRADE_MODULE_2), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_GOLD), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'B', Ingredient.ofItems(EPItems.BASIC_SOLAR_CELL), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'M', Ingredient.ofItems(EPItems.MOON_LIGHT_UPGRADE_MODULE_2) + ), new String[] { + "GSG", + "BRB", + "GMG" + }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_3), CraftingRecipeCategory.MISC); + } + private void buildToolsCraftingRecipes() { + addHammerCraftingRecipe(ItemTags.WOODEN_TOOL_MATERIALS, EPItems.WOODEN_HAMMER); + addHammerCraftingRecipe(ItemTags.STONE_TOOL_MATERIALS, EPItems.STONE_HAMMER); + addHammerCraftingRecipe(ItemTags.IRON_TOOL_MATERIALS, EPItems.IRON_HAMMER); + addHammerCraftingRecipe(ItemTags.GOLD_TOOL_MATERIALS, EPItems.GOLDEN_HAMMER); + addHammerCraftingRecipe(ItemTags.DIAMOND_TOOL_MATERIALS, EPItems.DIAMOND_HAMMER); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.PLATES_IRON), Map.of( + 'i', ingredientFromTag(ConventionalItemTags.IRON_NUGGETS), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'S', ingredientFromTag(ConventionalItemTags.WOODEN_RODS) + ), new String[] { + "I I", + " i ", + "S S" + }, new ItemStack(EPItems.CUTTER), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(ConventionalItemTags.IRON_INGOTS), Map.of( + 'i', ingredientFromTag(ConventionalItemTags.IRON_NUGGETS), + 'I', ingredientFromTag(ConventionalItemTags.IRON_INGOTS) + ), new String[] { + " I ", + " iI", + "i " + }, new ItemStack(EPItems.WRENCH), CraftingRecipeCategory.MISC); + } + private void buildEnergyItemsCraftingRecipes() { + addShapedCraftingRecipe(conditionsFromTag(ConventionalItemTags.COPPER_INGOTS), Map.of( + 'T', ingredientFromTag(CommonItemTags.NUGGETS_TIN), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'c', ingredientFromTag(ItemTags.COALS) + ), new String[] { + "T T", + "CRC", + "CcC" + }, new ItemStack(EPItems.BATTERY_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_1), Map.of( + 'T', ingredientFromTag(CommonItemTags.NUGGETS_TIN), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'c', ingredientFromTag(ItemTags.COALS), + 'B', Ingredient.ofItems(EPItems.BATTERY_1) + ), new String[] { + "T T", + "CBC", + "IcI" + }, new ItemStack(EPItems.BATTERY_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_2), Map.of( + 'T', ingredientFromTag(CommonItemTags.NUGGETS_TIN), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'B', Ingredient.ofItems(EPItems.BATTERY_2) + ), new String[] { + "T T", + "BCB", + "CSC" + }, new ItemStack(EPItems.BATTERY_3), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_3), Map.of( + 'T', ingredientFromTag(CommonItemTags.NUGGETS_TIN), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'B', Ingredient.ofItems(EPItems.BATTERY_3) + ), new String[] { + "T T", + "CBC", + "SIS" + }, new ItemStack(EPItems.BATTERY_4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_4), Map.of( + 'T', ingredientFromTag(CommonItemTags.NUGGETS_TIN), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'B', Ingredient.ofItems(EPItems.BATTERY_4) + ), new String[] { + "T T", + "BSB", + "IRI" + }, new ItemStack(EPItems.BATTERY_5), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_5), Map.of( + 'T', ingredientFromTag(CommonItemTags.NUGGETS_TIN), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'B', Ingredient.ofItems(EPItems.BATTERY_5) + ), new String[] { + "T T", + "EBE", + "EBE" + }, new ItemStack(EPItems.BATTERY_6), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_6), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GOLD_NUGGETS), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'B', Ingredient.ofItems(EPItems.BATTERY_6) + ), new String[] { + "G G", + "EBE", + "SBS" + }, new ItemStack(EPItems.BATTERY_7), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_7), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GOLD_NUGGETS), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'B', Ingredient.ofItems(EPItems.BATTERY_7) + ), new String[] { + "G G", + "EBE", + "ABA" + }, new ItemStack(EPItems.BATTERY_8), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.COAL_ENGINE_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'c', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'C', Ingredient.ofItems(EPBlocks.COAL_ENGINE_ITEM) + ), new String[] { + "SIS", + "RCR", + "cIc" + }, new ItemStack(EPItems.INVENTORY_COAL_ENGINE), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.CHARGER_ITEM), Map.of( + 'c', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'C', Ingredient.ofItems(EPBlocks.CHARGER_ITEM) + ), new String[] { + "SIS", + "RCR", + "cIc" + }, new ItemStack(EPItems.INVENTORY_CHARGER), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.TELEPORTER_ITEM), Map.of( + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'c', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'T', Ingredient.ofItems(EPBlocks.TELEPORTER_ITEM) + ), new String[] { + "CcC", + "RTR", + "GcG" + }, new ItemStack(EPItems.INVENTORY_TELEPORTER), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_3), Map.of( + 'b', Ingredient.ofItems(EPItems.BASIC_CIRCUIT), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'B', Ingredient.ofItems(EPItems.BATTERY_3) + ), new String[] { + "S S", + "bRb", + "CBC" + }, new ItemStack(EPItems.ENERGY_ANALYZER), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BATTERY_3), Map.of( + 'b', Ingredient.ofItems(EPItems.BASIC_CIRCUIT), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'L', ingredientFromTag(ConventionalItemTags.LAPIS_GEMS), + 'B', Ingredient.ofItems(EPItems.BATTERY_3) + ), new String[] { + "S S", + "bLb", + "CBC" + }, new ItemStack(EPItems.FLUID_ANALYZER), CraftingRecipeCategory.MISC); + } + private void buildItemTransportCraftingRecipes() { + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.PLATES_IRON), Map.of( + 'L', ingredientFromTag(ConventionalItemTags.LEATHERS), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS) + ), new String[] { + " ", + "LLL", + "IRI" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_ITEM, 6), CraftingRecipeCategory.MISC, + "item_conveyor_belt", "_from_leather"); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.PLATES_IRON), Map.of( + 'K', Ingredient.ofItems(Items.DRIED_KELP), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS) + ), new String[] { + " ", + "KKK", + "IRI" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_ITEM, 6), CraftingRecipeCategory.MISC, + "item_conveyor_belt", "_from_dried_kelp"); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ITEM_CONVEYOR_BELT_ITEM), Map.of( + 'C', ingredientFromTag(CommonItemTags.COBBLESTONES_NORMAL), + 'c', Ingredient.ofItems(EPBlocks.ITEM_CONVEYOR_BELT_ITEM), + 'H', Ingredient.ofItems(Items.HOPPER) + ), new String[] { + "CCC", + "CHC", + "CcC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( + 'C', ingredientFromTag(CommonItemTags.COBBLESTONES_NORMAL), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'R', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_REDSTONE), + 'L', Ingredient.ofItems(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) + ), new String[] { + "CRC", + "ILI", + "CRC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SORTER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( + 'C', ingredientFromTag(CommonItemTags.COBBLESTONES_NORMAL), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'l', Ingredient.ofItems(Items.LEVER), + 'L', Ingredient.ofItems(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) + ), new String[] { + "ClC", + "ILI", + "CRC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SWITCH_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( + 'C', ingredientFromTag(CommonItemTags.COBBLESTONES_NORMAL), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'L', Ingredient.ofItems(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) + ), new String[] { + "CIC", + "ILI", + "CRC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SPLITTER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( + 'C', ingredientFromTag(CommonItemTags.COBBLESTONES_NORMAL), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'L', Ingredient.ofItems(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) + ), new String[] { + "CRC", + "ILI", + "CIC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_MERGER_ITEM), CraftingRecipeCategory.MISC); + } + private void buildFluidTransportCraftingRecipes() { + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.PLATES_IRON), Map.of( + 'I', ingredientFromTag(ConventionalItemTags.IRON_INGOTS), + 'i', ingredientFromTag(CommonItemTags.PLATES_IRON) + ), new String[] { + "IiI", + "IiI", + "IiI" + }, new ItemStack(EPBlocks.IRON_FLUID_PIPE_ITEM, 12), CraftingRecipeCategory.MISC, + "", "", "iron_"); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.PLATES_GOLD), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + 'g', ingredientFromTag(CommonItemTags.PLATES_GOLD) + ), new String[] { + "GgG", + "GgG", + "GgG" + }, new ItemStack(EPBlocks.GOLDEN_FLUID_PIPE_ITEM, 12), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.PLATES_IRON), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GLASS_PANES_COLORLESS), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON) + ), new String[] { + "IGI", + "IGI", + "IGI" + }, new ItemStack(EPBlocks.FLUID_TANK_SMALL_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.FLUID_TANK_SMALL_ITEM), Map.of( + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'S', ingredientFromTag(CommonItemTags.INGOTS_STEEL) + ), new String[] { + "SFS", + "SFS", + "SFS" + }, new ItemStack(EPBlocks.FLUID_TANK_MEDIUM_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.FLUID_TANK_MEDIUM_ITEM), Map.of( + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON) + ), new String[] { + "IFI", + "IFI", + "IFI" + }, new ItemStack(EPBlocks.FLUID_TANK_LARGE_ITEM), CraftingRecipeCategory.MISC); + } + private void buildEnergyTransportCraftingRecipes() { + addBasicCableCraftingRecipes(CommonItemTags.INGOTS_TIN, CommonItemTags.WIRES_TIN, + new ItemStack(EPBlocks.TIN_CABLE_ITEM, 9)); + + addBasicCableCraftingRecipes(ConventionalItemTags.COPPER_INGOTS, CommonItemTags.WIRES_COPPER, + new ItemStack(EPBlocks.COPPER_CABLE_ITEM, 6)); + addBasicCableCraftingRecipes(ConventionalItemTags.GOLD_INGOTS, CommonItemTags.WIRES_GOLD, + new ItemStack(EPBlocks.GOLD_CABLE_ITEM, 6)); + + addBasicCableCraftingRecipes(CommonItemTags.INGOTS_ENERGIZED_COPPER, CommonItemTags.WIRES_ENERGIZED_COPPER, + new ItemStack(EPBlocks.ENERGIZED_COPPER_CABLE_ITEM, 3)); + addBasicCableCraftingRecipes(CommonItemTags.INGOTS_ENERGIZED_GOLD, CommonItemTags.WIRES_ENERGIZED_GOLD, + new ItemStack(EPBlocks.ENERGIZED_GOLD_CABLE_ITEM, 3)); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( + 'I', Ingredient.ofItems(EPItems.CABLE_INSULATOR), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX) + ), new String[] { + "ICI", + "ICI", + "ICI" + }, new ItemStack(EPBlocks.ENERGIZED_CRYSTAL_MATRIX_CABLE_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'M', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CSI", + "RMR", + "CSI" + }, new ItemStack(EPBlocks.LV_TRANSFORMER_1_TO_N_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'M', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CSI", + "SMR", + "CRI" + }, new ItemStack(EPBlocks.LV_TRANSFORMER_3_TO_3_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'M', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CRI", + "SMS", + "CRI" + }, new ItemStack(EPBlocks.LV_TRANSFORMER_N_TO_1_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'M', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.LV_TRANSFORMER_1_TO_N_ITEM) + ), new String[] { + "CTI", + "SMS", + "CTI" + }, new ItemStack(EPBlocks.MV_TRANSFORMER_1_TO_N_ITEM), CraftingRecipeCategory.MISC, + "", "", "mv_"); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'M', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.LV_TRANSFORMER_3_TO_3_ITEM) + ), new String[] { + "CTI", + "SMS", + "CTI" + }, new ItemStack(EPBlocks.MV_TRANSFORMER_3_TO_3_ITEM), CraftingRecipeCategory.MISC, + "", "", "mv_"); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'M', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.LV_TRANSFORMER_N_TO_1_ITEM) + ), new String[] { + "CTI", + "SMS", + "CTI" + }, new ItemStack(EPBlocks.MV_TRANSFORMER_N_TO_1_ITEM), CraftingRecipeCategory.MISC, + "", "", "mv_"); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'M', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.MV_TRANSFORMER_1_TO_N_ITEM) + ), new String[] { + "GTG", + "SMS", + "GTG" + }, new ItemStack(EPBlocks.HV_TRANSFORMER_1_TO_N_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'M', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.MV_TRANSFORMER_3_TO_3_ITEM) + ), new String[] { + "GTG", + "SMS", + "GTG" + }, new ItemStack(EPBlocks.HV_TRANSFORMER_3_TO_3_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'M', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.MV_TRANSFORMER_N_TO_1_ITEM) + ), new String[] { + "GTG", + "SMS", + "GTG" + }, new ItemStack(EPBlocks.HV_TRANSFORMER_N_TO_1_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'M', Ingredient.ofItems(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.HV_TRANSFORMER_1_TO_N_ITEM) + ), new String[] { + "CTC", + "SMS", + "CTC" + }, new ItemStack(EPBlocks.EHV_TRANSFORMER_1_TO_N_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'M', Ingredient.ofItems(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.HV_TRANSFORMER_3_TO_3_ITEM) + ), new String[] { + "CTC", + "SMS", + "CTC" + }, new ItemStack(EPBlocks.EHV_TRANSFORMER_3_TO_3_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'M', Ingredient.ofItems(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(EPBlocks.HV_TRANSFORMER_N_TO_1_ITEM) + ), new String[] { + "CTC", + "SMS", + "CTC" + }, new ItemStack(EPBlocks.EHV_TRANSFORMER_N_TO_1_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPItems.BATTERY_5), + 'M', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CBC", + "BMB", + "SBS" + }, new ItemStack(EPBlocks.BATTERY_BOX_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'B', Ingredient.ofItems(EPItems.BATTERY_8), + 'M', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "EBE", + "BMB", + "BSB" + }, new ItemStack(EPBlocks.ADVANCED_BATTERY_BOX_ITEM), CraftingRecipeCategory.MISC); + + addShapelessCraftingRecipe(conditionsFromItem(EPBlocks.BATTERY_BOX_ITEM), List.of( + Ingredient.ofItems(EPBlocks.BATTERY_BOX_ITEM), + Ingredient.ofItems(Items.MINECART) + ), new ItemStack(EPItems.BATTERY_BOX_MINECART), CraftingRecipeCategory.MISC); + + addShapelessCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_BATTERY_BOX_ITEM), List.of( + Ingredient.ofItems(EPBlocks.ADVANCED_BATTERY_BOX_ITEM), + Ingredient.ofItems(Items.MINECART) + ), new ItemStack(EPItems.ADVANCED_BATTERY_BOX_MINECART), CraftingRecipeCategory.MISC); + } + private void buildMachineCraftingRecipes() { + addShapedCraftingRecipe(conditionsFromItem(Items.SMOOTH_STONE), Map.of( + 'S', Ingredient.ofItems(Items.SMOOTH_STONE), + 'B', Ingredient.ofItems(Items.BRICKS), + 's', ingredientFromTag(ItemTags.SHOVELS) + ), new String[] { + "BBB", + "BsB", + "SSS" + }, new ItemStack(EPBlocks.PRESS_MOLD_MAKER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(Items.FURNACE), Map.of( + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'B', Ingredient.ofItems(Items.BRICKS), + 'F', Ingredient.ofItems(Items.FURNACE) + ), new String[] { + "III", + "FIF", + "BBB" + }, new ItemStack(EPBlocks.ALLOY_FURNACE_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'b', Ingredient.ofItems(EPItems.BASIC_CIRCUIT), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'T', Ingredient.ofItems(Items.CRAFTING_TABLE) + ), new String[] { + "CTC", + "bBb", + "ITI" + }, new ItemStack(EPBlocks.AUTO_CRAFTER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME), Map.of( + 'c', Ingredient.ofItems(EPItems.ADVANCED_CIRCUIT), + 'P', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'a', Ingredient.ofItems(EPBlocks.AUTO_CRAFTER_ITEM) + ), new String[] { + "GaG", + "cAc", + "PaP" + }, new ItemStack(EPBlocks.ADVANCED_AUTO_CRAFTER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 's', ingredientFromTag(CommonItemTags.SILICON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', Ingredient.ofItems(Items.STONECUTTER) + ), new String[] { + "CsC", + "SBS", + "CIC" + }, new ItemStack(EPBlocks.CRUSHER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'c', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'C', Ingredient.ofItems(EPBlocks.CRUSHER_ITEM) + ), new String[] { + "aCa", + "FAF", + "cCc" + }, new ItemStack(EPBlocks.ADVANCED_CRUSHER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', Ingredient.ofItems(Items.STONECUTTER) + ), new String[] { + "ISI", + "SBS", + "ISI" + }, new ItemStack(EPBlocks.PULVERIZER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'C', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'P', Ingredient.ofItems(EPBlocks.PULVERIZER_ITEM) + ), new String[] { + "aPa", + "FAF", + "CPC" + }, new ItemStack(EPBlocks.ADVANCED_PULVERIZER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', Ingredient.ofItems(EPItems.SAW_BLADE), + 's', Ingredient.ofItems(EPItems.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "sSs", + "CBC", + "sIs" + }, new ItemStack(EPBlocks.SAWMILL_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'P', Ingredient.ofItems(Items.PISTON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "IPI", + "PBP", + "IPI" + }, new ItemStack(EPBlocks.COMPRESSOR_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'P', Ingredient.ofItems(Items.PISTON), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'S', ingredientFromTag(CommonItemTags.INGOTS_STEEL), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "SPS", + "IBI", + "SIS" + }, new ItemStack(EPBlocks.METAL_PRESS_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'I', ingredientFromTag(CommonItemTags.GEARS_IRON), + 'i', ingredientFromTag(CommonItemTags.RODS_IRON), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'P', Ingredient.ofItems(EPBlocks.PRESS_MOLD_MAKER_ITEM) + ), new String[] { + "IPI", + "iBi", + "IPI" + }, new ItemStack(EPBlocks.AUTO_PRESS_MOLD_MAKER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 's', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', Ingredient.ofItems(Items.STONECUTTER) + ), new String[] { + "CSC", + "sBs", + "ISI" + }, new ItemStack(EPBlocks.AUTO_STONECUTTER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GLASS_PANES_COLORLESS), + 'D', Ingredient.ofItems(Items.DIRT), + 'W', Ingredient.ofItems(Items.WATER_BUCKET), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "SWS", + "GBG", + "IDI" + }, new ItemStack(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'D', Ingredient.ofItems(Items.DISPENSER) + ), new String[] { + "IDS", + "DBD", + "SDC" + }, new ItemStack(EPBlocks.BLOCK_PLACER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 's', ingredientFromTag(CommonItemTags.INGOTS_STEEL), + 'i', ingredientFromTag(CommonItemTags.GEARS_IRON), + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'B', Ingredient.ofItems(EPItems.BASIC_CIRCUIT), + 'H', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "iRi", + "BHB", + "SsS" + }, new ItemStack(EPBlocks.ASSEMBLING_MACHINE_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'B', Ingredient.ofItems(EPItems.BASIC_CIRCUIT), + 'S', ingredientFromTag(CommonItemTags.INGOTS_STEEL), + 'H', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'A', Ingredient.ofItems(EPBlocks.ALLOY_FURNACE_ITEM) + ), new String[] { + "SAS", + "BHB", + "SAS" + }, new ItemStack(EPBlocks.INDUCTION_SMELTER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "SIS", + "IBI", + "CFC" + }, new ItemStack(EPBlocks.FLUID_FILLER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'i', ingredientFromTag(CommonItemTags.GEARS_IRON), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'H', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "iSi", + "FHF", + "CIC" + }, new ItemStack(EPBlocks.STONE_SOLIDIFIER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'i', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'D', Ingredient.ofItems(EPBlocks.FLUID_DRAINER_ITEM), + 'F', Ingredient.ofItems(EPBlocks.FLUID_FILLER_ITEM), + 'f', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'H', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "CiC", + "DHF", + "IfI" + }, new ItemStack(EPBlocks.FLUID_TRANSPOSER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'i', ingredientFromTag(CommonItemTags.GEARS_IRON), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'B', Ingredient.ofItems(Items.IRON_BARS), + 'f', Ingredient.ofItems(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'H', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "iBi", + "FHF", + "IfI" + }, new ItemStack(EPBlocks.FILTRATION_PLANT_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CFC", + "IBI", + "SIS" + }, new ItemStack(EPBlocks.FLUID_DRAINER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'P', Ingredient.ofItems(Items.PISTON), + 'p', Ingredient.ofItems(EPBlocks.IRON_FLUID_PIPE_ITEM) + ), new String[] { + "RPR", + "FBF", + "IpI" + }, new ItemStack(EPBlocks.FLUID_PUMP_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), Map.of( + 'i', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'B', Ingredient.ofItems(Items.IRON_BARS), + 'G', ingredientFromTag(ConventionalItemTags.GLASS_BLOCKS_COLORLESS) + ), new String[] { + "IBI", + "iGi", + "IiI" + }, new ItemStack(EPBlocks.DRAIN_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 's', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON) + ), new String[] { + "sCs", + "IBI", + "CSC" + }, new ItemStack(EPBlocks.CHARGER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'C', Ingredient.ofItems(EPBlocks.CHARGER_ITEM) + ), new String[] { + "SGS", + "aAa", + "GCG" + }, new ItemStack(EPBlocks.ADVANCED_CHARGER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 's', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON) + ), new String[] { + "CSC", + "IBI", + "sCs" + }, new ItemStack(EPBlocks.UNCHARGER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'U', Ingredient.ofItems(EPBlocks.UNCHARGER_ITEM) + ), new String[] { + "GUG", + "aAa", + "SGS" + }, new ItemStack(EPBlocks.ADVANCED_UNCHARGER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.CHARGER_ITEM), Map.of( + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'c', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'i', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'H', Ingredient.ofItems(EPBlocks.CHARGER_ITEM) + ), new String[] { + "cCc", + "SHS", + "iIi" + }, new ItemStack(EPBlocks.MINECART_CHARGER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_CHARGER_ITEM), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_GOLD), + 'g', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'c', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'H', Ingredient.ofItems(EPBlocks.ADVANCED_CHARGER_ITEM) + ), new String[] { + "gGg", + "SHS", + "cCc" + }, new ItemStack(EPBlocks.ADVANCED_MINECART_CHARGER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.UNCHARGER_ITEM), Map.of( + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'c', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'i', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'U', Ingredient.ofItems(EPBlocks.UNCHARGER_ITEM) + ), new String[] { + "iIi", + "SUS", + "cCc" + }, new ItemStack(EPBlocks.MINECART_UNCHARGER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_UNCHARGER_ITEM), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_GOLD), + 'g', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'c', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'U', Ingredient.ofItems(EPBlocks.ADVANCED_UNCHARGER_ITEM) + ), new String[] { + "cCc", + "SUS", + "gGg" + }, new ItemStack(EPBlocks.ADVANCED_MINECART_UNCHARGER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.BASIC_SOLAR_CELL), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GLASS_PANES_COLORLESS), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'I', ingredientFromTag(ConventionalItemTags.IRON_INGOTS), + 'C', ingredientFromTag(ConventionalItemTags.COPPER_INGOTS), + 'B', Ingredient.ofItems(EPItems.BASIC_SOLAR_CELL) + ), new String[] { + "GGG", + "BRB", + "ICI" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_1), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.SOLAR_PANEL_ITEM_1), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GLASS_PANES_COLORLESS), + 'C', ingredientFromTag(ConventionalItemTags.COPPER_INGOTS), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'S', Ingredient.ofItems(EPBlocks.SOLAR_PANEL_ITEM_1), + 'B', Ingredient.ofItems(EPItems.BASIC_SOLAR_CELL) + ), new String[] { + "GGG", + "SBS", + "CRC" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_2), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.SOLAR_PANEL_ITEM_2), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GLASS_PANES_COLORLESS), + 'R', ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 's', ingredientFromTag(CommonItemTags.SILICON), + 'S', Ingredient.ofItems(EPBlocks.SOLAR_PANEL_ITEM_2), + 'B', Ingredient.ofItems(EPItems.BASIC_SOLAR_CELL) + ), new String[] { + "GGG", + "SBS", + "sRs" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_3), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.SOLAR_PANEL_ITEM_3), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GLASS_PANES_COLORLESS), + 's', ingredientFromTag(CommonItemTags.SILICON), + 'R', ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'S', Ingredient.ofItems(EPBlocks.SOLAR_PANEL_ITEM_3), + 'A', Ingredient.ofItems(EPItems.ADVANCED_SOLAR_CELL) + ), new String[] { + "GGG", + "SsS", + "ARA" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_4), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.SOLAR_PANEL_ITEM_4), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GLASS_PANES_COLORLESS), + 'a', ingredientFromTag(ConventionalItemTags.AMETHYST_GEMS), + 'E', ingredientFromTag(CommonItemTags.INGOTS_ENERGIZED_GOLD), + 'S', Ingredient.ofItems(EPBlocks.SOLAR_PANEL_ITEM_4), + 'A', Ingredient.ofItems(EPItems.ADVANCED_SOLAR_CELL) + ), new String[] { + "GGG", + "SaS", + "AEA" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_5), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.SOLAR_PANEL_ITEM_5), Map.of( + 'G', ingredientFromTag(ConventionalItemTags.GLASS_PANES_COLORLESS), + 'A', ingredientFromTag(ConventionalItemTags.AMETHYST_GEMS), + 'E', ingredientFromTag(CommonItemTags.INGOTS_ENERGIZED_GOLD), + 'S', Ingredient.ofItems(EPBlocks.SOLAR_PANEL_ITEM_5), + 'R', Ingredient.ofItems(EPItems.REINFORCED_ADVANCED_SOLAR_CELL) + ), new String[] { + "GGG", + "SAS", + "RER" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_6), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'F', Ingredient.ofItems(Items.FURNACE) + ), new String[] { + "ISI", + "CBC", + "IFI" + }, new ItemStack(EPBlocks.COAL_ENGINE_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(Items.REDSTONE_LAMP), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'C', ingredientFromTag(ConventionalItemTags.COPPER_INGOTS), + 'R', Ingredient.ofItems(Items.REDSTONE_LAMP) + ), new String[] { + "CSC", + "SRS", + "CSC" + }, new ItemStack(EPBlocks.POWERED_LAMP_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON), + 'C', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'B', Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'F', Ingredient.ofItems(Items.FURNACE) + ), new String[] { + "CFC", + "SBS", + "IFI" + }, new ItemStack(EPBlocks.POWERED_FURNACE_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'G', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'P', Ingredient.ofItems(EPBlocks.POWERED_FURNACE_ITEM) + ), new String[] { + "GPG", + "SAS", + "aPa" + }, new ItemStack(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'G', ingredientFromTag(CommonItemTags.PLATES_GOLD), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "RaR", + "GAG", + "ECE" + }, new ItemStack(EPBlocks.LIGHTNING_GENERATOR_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'G', ingredientFromTag(CommonItemTags.PLATES_GOLD), + 'R', ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "RaR", + "GAG", + "ESE" + }, new ItemStack(EPBlocks.ENERGIZER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'I', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), + 'R', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_REDSTONE), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "aRa", + "IAI", + "ECE" + }, new ItemStack(EPBlocks.CHARGING_STATION_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.COAL_ENGINE_ITEM), Map.of( + 's', ingredientFromTag(CommonItemTags.SILICON), + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'c', ingredientFromTag(CommonItemTags.WIRES_COPPER), + 'C', Ingredient.ofItems(EPBlocks.COAL_ENGINE_ITEM) + ), new String[] { + "cSc", + "sCs", + "cSc" + }, new ItemStack(EPBlocks.HEAT_GENERATOR_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientFromTag(CommonItemTags.SILICON), + 'F', Ingredient.ofItems(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'c', ingredientFromTag(CommonItemTags.PLATES_COPPER), + 'C', ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), + 'H', Ingredient.ofItems(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'E', Ingredient.ofItems(EPBlocks.COAL_ENGINE_ITEM) + ), new String[] { + "cHc", + "SES", + "CFC" + }, new ItemStack(EPBlocks.THERMAL_GENERATOR_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'a', Ingredient.ofItems(Items.AMETHYST_BLOCK), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'P', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'A', Ingredient.ofItems(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "aPa", + "EAE", + "aPa" + }, new ItemStack(EPBlocks.CRYSTAL_GROWTH_CHAMBER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'P', Ingredient.ofItems(EPItems.PROCESSING_UNIT), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'a', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', ingredientFromTag(ConventionalItemTags.AMETHYST_GEMS), + 'R', Ingredient.ofItems(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "CAC", + "PRP", + "aEa" + }, new ItemStack(EPBlocks.WEATHER_CONTROLLER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'P', Ingredient.ofItems(EPItems.PROCESSING_UNIT), + 'c', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'C', Ingredient.ofItems(Items.CLOCK), + 'A', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'R', Ingredient.ofItems(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "cCc", + "PRP", + "AEA" + }, new ItemStack(EPBlocks.TIME_CONTROLLER_ITEM), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'T', Ingredient.ofItems(EPItems.TELEPORTER_PROCESSING_UNIT), + 'C', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'A', ingredientFromTag(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'E', ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'S', ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'R', Ingredient.ofItems(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "CEC", + "TRT", + "ASA" + }, new ItemStack(EPBlocks.TELEPORTER_ITEM), CraftingRecipeCategory.MISC); + } + private void buildMiscCraftingRecipes() { + addShapelessCraftingRecipe(InventoryChangedCriterion.Conditions.items( + Items.BOOK, + EPBlocks.BASIC_MACHINE_FRAME_ITEM + ), List.of( + Ingredient.ofItems(Items.BOOK), + Ingredient.ofItems(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new ItemStack(EPItems.ENERGIZED_POWER_BOOK), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromTag(CommonItemTags.DUSTS_CHARCOAL), Map.of( + 'P', Ingredient.ofItems(Items.PAPER), + 'C', ingredientFromTag(CommonItemTags.DUSTS_CHARCOAL), + 'I', ingredientFromTag(CommonItemTags.PLATES_IRON) + ), new String[] { + "PCP", + "CIC", + "PCP" + }, new ItemStack(EPItems.CHARCOAL_FILTER), CraftingRecipeCategory.MISC); + + addShapedCraftingRecipe(conditionsFromItem(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( + 'A', ingredientFromTag(ConventionalItemTags.AMETHYST_GEMS), + 'E', Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'e', ingredientFromTag(ConventionalItemTags.ENDER_PEARLS) + ), new String[] { + "AEA", + "EeE", + "AEA" + }, new ItemStack(EPItems.TELEPORTER_MATRIX), CraftingRecipeCategory.MISC); + } + private void buildCustomCraftingRecipes() { + addCustomCraftingRecipe(TeleporterMatrixSettingsCopyRecipe::new, CraftingRecipeCategory.MISC, + "teleporter_matrix_settings_copy"); + } + + private void buildCookingRecipes() { + addBlastingAndSmeltingRecipes(CommonItemTags.RAW_MATERIALS_TIN, new ItemStack(EPItems.TIN_INGOT), CookingRecipeCategory.MISC, + 100, .7f, "tin_ingot", "raw_tin"); + addBlastingAndSmeltingRecipes(CommonItemTags.ORES_TIN, new ItemStack(EPItems.TIN_INGOT), CookingRecipeCategory.MISC, + 100, .7f, "tin_ingot", "tin_ores"); + + addBlastingAndSmeltingRecipes(CommonItemTags.DUSTS_TIN, new ItemStack(EPItems.TIN_INGOT), CookingRecipeCategory.MISC, + 100, .7f, "tin_ingot", "tin_dust"); + addBlastingAndSmeltingRecipes(CommonItemTags.DUSTS_COPPER, new ItemStack(Items.COPPER_INGOT), CookingRecipeCategory.MISC, + 100, .7f, "copper_ingot", "copper_dust"); + addBlastingAndSmeltingRecipes(CommonItemTags.DUSTS_IRON, new ItemStack(Items.IRON_INGOT), CookingRecipeCategory.MISC, + 100, .7f, "iron_ingot", "iron_dust"); + addBlastingAndSmeltingRecipes(CommonItemTags.DUSTS_GOLD, new ItemStack(Items.GOLD_INGOT), CookingRecipeCategory.MISC, + 100, .7f, "gold_ingot", "gold_dust"); + + addBlastingAndSmeltingRecipes(EPItems.IRON_HAMMER, new ItemStack(Items.IRON_NUGGET), CookingRecipeCategory.MISC, + 100, .1f, "iron_nugget", "iron_hammer"); + addBlastingAndSmeltingRecipes(EPItems.GOLDEN_HAMMER, new ItemStack(Items.GOLD_NUGGET), CookingRecipeCategory.MISC, + 100, .1f, "gold_nugget", "golden_hammer"); + + addBlastingAndSmeltingRecipes(ConventionalItemTags.QUARTZ_GEMS, new ItemStack(EPItems.SILICON), CookingRecipeCategory.MISC, + 250, 4.1f, "silicon", "nether_quartz"); + + addSmeltingRecipe(EPBlocks.SAWDUST_BLOCK_ITEM, new ItemStack(Items.CHARCOAL), CookingRecipeCategory.MISC, + 200, .15f, null, "sawdust_block"); + + addSmeltingRecipe(EPItems.RAW_GEAR_PRESS_MOLD, new ItemStack(EPItems.GEAR_PRESS_MOLD), CookingRecipeCategory.MISC, + 200, .3f, null); + addSmeltingRecipe(EPItems.RAW_ROD_PRESS_MOLD, new ItemStack(EPItems.ROD_PRESS_MOLD), CookingRecipeCategory.MISC, + 200, .3f, null); + addSmeltingRecipe(EPItems.RAW_WIRE_PRESS_MOLD, new ItemStack(EPItems.WIRE_PRESS_MOLD), CookingRecipeCategory.MISC, + 200, .3f, null); + } + + private void buildSmithingRecipes() { + addNetheriteSmithingUpgradeRecipe(Ingredient.ofItems(EPItems.DIAMOND_HAMMER), + new ItemStack(EPItems.NETHERITE_HAMMER)); + } + + private void buildPressMoldMakerRecipes() { + addPressMoldMakerRecipe(4, new ItemStack(EPItems.RAW_GEAR_PRESS_MOLD)); + addPressMoldMakerRecipe(9, new ItemStack(EPItems.RAW_ROD_PRESS_MOLD)); + addPressMoldMakerRecipe(6, new ItemStack(EPItems.RAW_WIRE_PRESS_MOLD)); + } + + private void buildAlloyFurnaceRecipes() { + addAlloyFurnaceRecipe(new IngredientWithCount[] { + new IngredientWithCount(ingredientFromTag(ConventionalItemTags.IRON_INGOTS)), + new IngredientWithCount(ingredientFromTag(ItemTags.COALS), 3) + }, new ItemStack(EPItems.STEEL_INGOT), 500); + + addAlloyFurnaceRecipe(new IngredientWithCount[] { + new IngredientWithCount(ingredientFromTag(CommonItemTags.INGOTS_TIN)), + new IngredientWithCount(ingredientFromTag(CommonItemTags.SILICON)), + new IngredientWithCount(ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), 2) + }, new ItemStack(EPItems.REDSTONE_ALLOY_INGOT), 2500); + + addAlloyFurnaceRecipe(new IngredientWithCount[] { + new IngredientWithCount(ingredientFromTag(CommonItemTags.INGOTS_STEEL), 3), + new IngredientWithCount(ingredientFromTag(ConventionalItemTags.COPPER_INGOTS), 3), + new IngredientWithCount(ingredientFromTag(CommonItemTags.INGOTS_TIN), 3) + }, new ItemStack(EPItems.ADVANCED_ALLOY_INGOT), 10000); + } + + private void buildCompressorRecipes() { + addCompressorRecipe(new IngredientWithCount(Ingredient.ofItems(EPItems.STONE_PEBBLE), 16), new ItemStack(Items.COBBLESTONE), + "stone_pebbles"); + + addPlateCompressorRecipes(ingredientFromTag(CommonItemTags.INGOTS_TIN), + ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_TIN), new ItemStack(EPItems.TIN_PLATE), + "tin"); + addPlateCompressorRecipes(ingredientFromTag(ConventionalItemTags.COPPER_INGOTS), + ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_COPPER), new ItemStack(EPItems.COPPER_PLATE), + "copper"); + addPlateCompressorRecipes(ingredientFromTag(ConventionalItemTags.IRON_INGOTS), + ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_IRON), new ItemStack(EPItems.IRON_PLATE), + "iron"); + addPlateCompressorRecipes(ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_GOLD), new ItemStack(EPItems.GOLD_PLATE), + "gold"); + + addPlateCompressorIngotRecipe(ingredientFromTag(CommonItemTags.INGOTS_ADVANCED_ALLOY), + new ItemStack(EPItems.ADVANCED_ALLOY_PLATE), "advanced_alloy"); + addPlateCompressorIngotRecipe(ingredientFromTag(CommonItemTags.INGOTS_ENERGIZED_COPPER), + new ItemStack(EPItems.ENERGIZED_COPPER_PLATE), "energized_copper"); + addPlateCompressorIngotRecipe(ingredientFromTag(CommonItemTags.INGOTS_ENERGIZED_GOLD), + new ItemStack(EPItems.ENERGIZED_GOLD_PLATE), "energized_gold"); + } + + private void buildCrusherRecipes() { + addCrusherRecipe(Ingredient.ofItems(Items.STONE), new ItemStack(Items.COBBLESTONE), + "stone"); + addCrusherRecipe(Ingredient.ofItems(Items.STONE_BRICKS, Items.CHISELED_STONE_BRICKS, Items.CRACKED_STONE_BRICKS, + Items.SMOOTH_STONE), new ItemStack(Items.COBBLESTONE), + "stone_variants"); + + addCrusherRecipe(Ingredient.ofItems(Items.MOSSY_STONE_BRICKS), new ItemStack(Items.MOSSY_COBBLESTONE), + "mossy_stone_bricks"); + + addCrusherRecipe(Ingredient.ofItems(Items.TUFF_BRICKS, Items.CHISELED_TUFF_BRICKS, Items.CHISELED_TUFF, + Items.POLISHED_TUFF), new ItemStack(Items.TUFF), + "tuff_variants"); + + addCrusherRecipe(Ingredient.ofItems(Items.DEEPSLATE), new ItemStack(Items.COBBLED_DEEPSLATE), + "deepslate"); + addCrusherRecipe(Ingredient.ofItems(Items.DEEPSLATE_BRICKS, Items.CHISELED_DEEPSLATE, Items.CRACKED_DEEPSLATE_BRICKS, + Items.DEEPSLATE_TILES, Items.CRACKED_DEEPSLATE_TILES, Items.POLISHED_DEEPSLATE), new ItemStack(Items.COBBLED_DEEPSLATE), + "deepslate_variants"); + + addCrusherRecipe(Ingredient.ofItems(Items.POLISHED_GRANITE), new ItemStack(Items.GRANITE), + "polished_granite"); + addCrusherRecipe(Ingredient.ofItems(Items.POLISHED_DIORITE), new ItemStack(Items.DIORITE), + "polished_diorite"); + addCrusherRecipe(Ingredient.ofItems(Items.POLISHED_ANDESITE), new ItemStack(Items.ANDESITE), + "polished_andesite"); + + addCrusherRecipe(ingredientFromTag(CommonItemTags.COBBLESTONES_NORMAL), new ItemStack(Items.GRAVEL), + "cobblestone"); + + addCrusherRecipe(ingredientFromTag(CommonItemTags.GRAVELS), new ItemStack(Items.SAND), + "gravel"); + + addCrusherRecipe(Ingredient.ofItems(Items.SANDSTONE), new ItemStack(Items.SAND), + "sandstone"); + addCrusherRecipe(Ingredient.ofItems(Items.SMOOTH_SANDSTONE, Items.CUT_SANDSTONE, + Items.CHISELED_SANDSTONE), new ItemStack(Items.SAND), + "sandstone_variants"); + + addCrusherRecipe(Ingredient.ofItems(Items.RED_SANDSTONE), new ItemStack(Items.RED_SAND), + "red_sandstone"); + addCrusherRecipe(Ingredient.ofItems(Items.SMOOTH_RED_SANDSTONE, Items.CUT_RED_SANDSTONE, + Items.CHISELED_RED_SANDSTONE), new ItemStack(Items.RED_SAND), + "red_sandstone_variants"); + + addCrusherRecipe(Ingredient.ofItems(Items.POLISHED_BLACKSTONE, Items.POLISHED_BLACKSTONE_BRICKS, + Items.CHISELED_POLISHED_BLACKSTONE, Items.CRACKED_POLISHED_BLACKSTONE_BRICKS, + Items.GILDED_BLACKSTONE), new ItemStack(Items.BLACKSTONE), + "blackstone_variants"); + + addCrusherRecipe(Ingredient.ofItems(Items.SMOOTH_BASALT, Items.POLISHED_BASALT), new ItemStack(Items.BASALT), + "basalt_variants"); + } + + private void buildPulverizerRecipes() { + addBasicMetalPulverizerRecipes( + ingredientFromTag(CommonItemTags.ORES_TIN), ingredientFromTag(CommonItemTags.RAW_MATERIALS_TIN), + ingredientFromTag(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), ingredientFromTag(CommonItemTags.INGOTS_TIN), + new ItemStack(EPItems.TIN_DUST), "tin"); + addBasicMetalPulverizerRecipes( + ingredientFromTag(CommonItemTags.ORES_IRON), ingredientFromTag(ConventionalItemTags.IRON_RAW_MATERIALS), + ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_RAW_IRON), ingredientFromTag(ConventionalItemTags.IRON_INGOTS), + new ItemStack(EPItems.IRON_DUST), "iron"); + addBasicMetalPulverizerRecipes( + ingredientFromTag(CommonItemTags.ORES_GOLD), ingredientFromTag(ConventionalItemTags.GOLD_RAW_MATERIALS), + ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_RAW_GOLD), ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + new ItemStack(EPItems.GOLD_DUST), "gold"); + + addPulverizerRecipe(ingredientFromTag(CommonItemTags.ORES_COPPER), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(EPItems.COPPER_DUST), new double[] { + 1., 1., 1., 1., .5, .5 + }, new double[] { + 1., 1., 1., 1., .75, .5, .25 + }), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(EPItems.GOLD_DUST), + .1, .2), "copper_ores"); + addRawMetalAndIngotPulverizerRecipes( + ingredientFromTag(ConventionalItemTags.COPPER_RAW_MATERIALS), + ingredientFromTag(ConventionalItemTags.STORAGE_BLOCKS_RAW_COPPER), ingredientFromTag(ConventionalItemTags.COPPER_INGOTS), + new ItemStack(EPItems.COPPER_DUST), "copper"); + + addPulverizerRecipe(ingredientFromTag(CommonItemTags.ORES_COAL), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.COAL), new double[] { + 1., 1., .25 + }, new double[] { + 1., 1., .5, .25 + }), "coal_ores"); + + addPulverizerRecipe(ingredientFromTag(CommonItemTags.ORES_REDSTONE), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.REDSTONE), new double[] { + 1., 1., 1., 1., 1., .67, .33, .33, .17 + }, new double[] { + 1., 1., 1., 1., 1., .67, .67, .33, .33, .17 + }), "redstone_ores"); + + addPulverizerRecipe(ingredientFromTag(CommonItemTags.ORES_LAPIS), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.LAPIS_LAZULI), new double[] { + 1., 1., 1., 1., 1., 1., 1., 1., .5, .5, .25, .125 + }, new double[] { + 1., 1., 1., 1., 1., 1., 1., 1., .75, .5, .5, .25, .125 + }), "lapis_ores"); + + addPulverizerRecipe(ingredientFromTag(CommonItemTags.ORES_EMERALD), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.EMERALD), new double[] { + 1., .67, .17 + }, new double[] { + 1., .67, .33, .17 + }), "emerald_ores"); + + addPulverizerRecipe(ingredientFromTag(CommonItemTags.ORES_DIAMOND), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.DIAMOND), new double[] { + 1., .67, .17 + }, new double[] { + 1., .67, .33, .17 + }), "diamond_ores"); + + addPulverizerRecipe(ingredientFromTag(ConventionalItemTags.QUARTZ_ORES), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.QUARTZ), new double[] { + 1., .67, .17 + }, new double[] { + 1., .67, .33, .17 + }), "nether_quartz_ores"); + + addPulverizerRecipe(ingredientFromTag(ConventionalItemTags.NETHERITE_SCRAP_ORES), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.NETHERITE_SCRAP), new double[] { + 1., .125, .125 + }, new double[] { + 1., .25, .25, .125 + }), "ancient_debris"); + + addPulverizerRecipe(Ingredient.ofItems(Items.CHARCOAL), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(EPItems.CHARCOAL_DUST), + 1., 1.), "charcoal"); + } + + private void buildSawmillRecipes() { + addBasicWoodSawmillRecipe(new ItemStack(Items.OAK_PLANKS), + ingredientFromTag(ItemTags.OAK_LOGS), Ingredient.ofItems(Items.OAK_FENCE), + Ingredient.ofItems(Items.OAK_FENCE_GATE), Ingredient.ofItems(Items.OAK_DOOR), + Ingredient.ofItems(Items.OAK_TRAPDOOR), Ingredient.ofItems(Items.OAK_PRESSURE_PLATE), + Ingredient.ofItems(Items.OAK_SIGN), Ingredient.ofItems(Items.OAK_BOAT), Ingredient.ofItems(Items.OAK_CHEST_BOAT), + false, "oak"); + + addBasicWoodSawmillRecipe(new ItemStack(Items.SPRUCE_PLANKS), + ingredientFromTag(ItemTags.SPRUCE_LOGS), Ingredient.ofItems(Items.SPRUCE_FENCE), + Ingredient.ofItems(Items.SPRUCE_FENCE_GATE), Ingredient.ofItems(Items.SPRUCE_DOOR), + Ingredient.ofItems(Items.SPRUCE_TRAPDOOR), Ingredient.ofItems(Items.SPRUCE_PRESSURE_PLATE), + Ingredient.ofItems(Items.SPRUCE_SIGN), Ingredient.ofItems(Items.SPRUCE_BOAT), Ingredient.ofItems(Items.SPRUCE_CHEST_BOAT), + false, "spruce"); + + addBasicWoodSawmillRecipe(new ItemStack(Items.BIRCH_PLANKS), + ingredientFromTag(ItemTags.BIRCH_LOGS), Ingredient.ofItems(Items.BIRCH_FENCE), + Ingredient.ofItems(Items.BIRCH_FENCE_GATE), Ingredient.ofItems(Items.BIRCH_DOOR), + Ingredient.ofItems(Items.BIRCH_TRAPDOOR), Ingredient.ofItems(Items.BIRCH_PRESSURE_PLATE), + Ingredient.ofItems(Items.BIRCH_SIGN), Ingredient.ofItems(Items.BIRCH_BOAT), Ingredient.ofItems(Items.BIRCH_CHEST_BOAT), + false, "birch"); + + addBasicWoodSawmillRecipe(new ItemStack(Items.JUNGLE_PLANKS), + ingredientFromTag(ItemTags.JUNGLE_LOGS), Ingredient.ofItems(Items.JUNGLE_FENCE), + Ingredient.ofItems(Items.JUNGLE_FENCE_GATE), Ingredient.ofItems(Items.JUNGLE_DOOR), + Ingredient.ofItems(Items.JUNGLE_TRAPDOOR), Ingredient.ofItems(Items.JUNGLE_PRESSURE_PLATE), + Ingredient.ofItems(Items.JUNGLE_SIGN), Ingredient.ofItems(Items.JUNGLE_BOAT), Ingredient.ofItems(Items.JUNGLE_CHEST_BOAT), + false, "jungle"); + + addBasicWoodSawmillRecipe(new ItemStack(Items.ACACIA_PLANKS), + ingredientFromTag(ItemTags.ACACIA_LOGS), Ingredient.ofItems(Items.ACACIA_FENCE), + Ingredient.ofItems(Items.ACACIA_FENCE_GATE), Ingredient.ofItems(Items.ACACIA_DOOR), + Ingredient.ofItems(Items.ACACIA_TRAPDOOR), Ingredient.ofItems(Items.ACACIA_PRESSURE_PLATE), + Ingredient.ofItems(Items.ACACIA_SIGN), Ingredient.ofItems(Items.ACACIA_BOAT), Ingredient.ofItems(Items.ACACIA_CHEST_BOAT), + false, "acacia"); + + addBasicWoodSawmillRecipe(new ItemStack(Items.DARK_OAK_PLANKS), + ingredientFromTag(ItemTags.DARK_OAK_LOGS), Ingredient.ofItems(Items.DARK_OAK_FENCE), + Ingredient.ofItems(Items.DARK_OAK_FENCE_GATE), Ingredient.ofItems(Items.DARK_OAK_DOOR), + Ingredient.ofItems(Items.DARK_OAK_TRAPDOOR), Ingredient.ofItems(Items.DARK_OAK_PRESSURE_PLATE), + Ingredient.ofItems(Items.DARK_OAK_SIGN), Ingredient.ofItems(Items.DARK_OAK_BOAT), Ingredient.ofItems(Items.DARK_OAK_CHEST_BOAT), + false, "dark_oak"); + + addBasicWoodSawmillRecipe(new ItemStack(Items.MANGROVE_PLANKS), + ingredientFromTag(ItemTags.MANGROVE_LOGS), Ingredient.ofItems(Items.MANGROVE_FENCE), + Ingredient.ofItems(Items.MANGROVE_FENCE_GATE), Ingredient.ofItems(Items.MANGROVE_DOOR), + Ingredient.ofItems(Items.MANGROVE_TRAPDOOR), Ingredient.ofItems(Items.MANGROVE_PRESSURE_PLATE), + Ingredient.ofItems(Items.MANGROVE_SIGN), Ingredient.ofItems(Items.MANGROVE_BOAT), Ingredient.ofItems(Items.MANGROVE_CHEST_BOAT), + false, "mangrove"); + + addBasicWoodSawmillRecipe(new ItemStack(Items.CHERRY_PLANKS), + ingredientFromTag(ItemTags.CHERRY_LOGS), Ingredient.ofItems(Items.CHERRY_FENCE), + Ingredient.ofItems(Items.CHERRY_FENCE_GATE), Ingredient.ofItems(Items.CHERRY_DOOR), + Ingredient.ofItems(Items.CHERRY_TRAPDOOR), Ingredient.ofItems(Items.CHERRY_PRESSURE_PLATE), + Ingredient.ofItems(Items.CHERRY_SIGN), Ingredient.ofItems(Items.CHERRY_BOAT), Ingredient.ofItems(Items.CHERRY_CHEST_BOAT), + false, "cherry"); + + addSawmillRecipe(ingredientFromTag(ItemTags.BAMBOO_BLOCKS), new ItemStack(Items.BAMBOO_PLANKS, 3), + 1, "bamboo_planks", "bamboo_blocks"); + addBasicWoodWithoutLogsSawmillRecipe(new ItemStack(Items.BAMBOO_PLANKS), + Ingredient.ofItems(Items.BAMBOO_FENCE), Ingredient.ofItems(Items.BAMBOO_FENCE_GATE), Ingredient.ofItems(Items.BAMBOO_DOOR), + Ingredient.ofItems(Items.BAMBOO_TRAPDOOR), Ingredient.ofItems(Items.BAMBOO_PRESSURE_PLATE), + Ingredient.ofItems(Items.BAMBOO_SIGN), Ingredient.ofItems(Items.BAMBOO_RAFT), Ingredient.ofItems(Items.BAMBOO_CHEST_RAFT), + true, "bamboo"); + + addSawmillRecipe(ingredientFromTag(ItemTags.CRIMSON_STEMS), new ItemStack(Items.CRIMSON_PLANKS, 6), + 1, "crimson_planks", "crimson_stems"); + addBasicWoodWithoutLogsAndBoatsSawmillRecipe(new ItemStack(Items.CRIMSON_PLANKS), + Ingredient.ofItems(Items.CRIMSON_FENCE), Ingredient.ofItems(Items.CRIMSON_FENCE_GATE), Ingredient.ofItems(Items.CRIMSON_DOOR), + Ingredient.ofItems(Items.CRIMSON_TRAPDOOR), Ingredient.ofItems(Items.CRIMSON_PRESSURE_PLATE), + Ingredient.ofItems(Items.CRIMSON_SIGN), "crimson"); + + addSawmillRecipe(ingredientFromTag(ItemTags.WARPED_STEMS), new ItemStack(Items.WARPED_PLANKS, 6), + 1, "warped_planks", "warped_stems"); + addBasicWoodWithoutLogsAndBoatsSawmillRecipe(new ItemStack(Items.WARPED_PLANKS), + Ingredient.ofItems(Items.WARPED_FENCE), Ingredient.ofItems(Items.WARPED_FENCE_GATE), Ingredient.ofItems(Items.WARPED_DOOR), + Ingredient.ofItems(Items.WARPED_TRAPDOOR), Ingredient.ofItems(Items.WARPED_PRESSURE_PLATE), + Ingredient.ofItems(Items.WARPED_SIGN), "warped"); + + addSawmillRecipe(Ingredient.ofItems(Items.CRAFTING_TABLE), new ItemStack(Items.OAK_PLANKS, 3), + 2, "oak_planks", "crafting_table"); + addSawmillRecipe(Ingredient.ofItems(Items.CARTOGRAPHY_TABLE), new ItemStack(Items.OAK_PLANKS, 4), + new ItemStack(Items.PAPER, 2), "oak_planks", "cartography_table"); + addSawmillRecipe(Ingredient.ofItems(Items.FLETCHING_TABLE), new ItemStack(Items.OAK_PLANKS, 4), + new ItemStack(Items.FLINT, 2), "oak_planks", "fletching_table"); + addSawmillRecipe(Ingredient.ofItems(Items.LOOM), new ItemStack(Items.OAK_PLANKS, 2), + new ItemStack(Items.STRING, 2), "oak_planks", "loom"); + addSawmillRecipe(Ingredient.ofItems(Items.COMPOSTER), new ItemStack(Items.OAK_PLANKS, 3), + 2, "oak_planks", "composter"); + addSawmillRecipe(Ingredient.ofItems(Items.NOTE_BLOCK), new ItemStack(Items.OAK_PLANKS, 8), + new ItemStack(Items.REDSTONE), "oak_planks", "note_block"); + addSawmillRecipe(Ingredient.ofItems(Items.JUKEBOX), new ItemStack(Items.OAK_PLANKS, 8), + new ItemStack(Items.DIAMOND), "oak_planks", "jukebox"); + + addSawmillRecipe(Ingredient.ofItems(Items.BOOKSHELF), new ItemStack(Items.OAK_PLANKS, 6), + new ItemStack(Items.BOOK, 3), "oak_planks", "bookshelf"); + addSawmillRecipe(Ingredient.ofItems(Items.CHISELED_BOOKSHELF), new ItemStack(Items.OAK_PLANKS, 6), + 5, "oak_planks", "chiseled_bookshelf"); + addSawmillRecipe(Ingredient.ofItems(Items.LECTERN), new ItemStack(Items.OAK_PLANKS, 8), + new ItemStack(Items.BOOK, 3), "oak_planks", "lectern"); + + addSawmillRecipe(Ingredient.ofItems(Items.CHEST), new ItemStack(Items.OAK_PLANKS, 7), + 3, "oak_planks", "chest"); + addSawmillRecipe(Ingredient.ofItems(Items.BARREL), new ItemStack(Items.OAK_PLANKS, 6), + 5, "oak_planks", "barrel"); + + addSawmillRecipe(Ingredient.ofItems(Items.WOODEN_SWORD), new ItemStack(Items.OAK_PLANKS, 2), + 1, "oak_planks", "wooden_sword"); + addSawmillRecipe(Ingredient.ofItems(Items.WOODEN_SHOVEL), new ItemStack(Items.OAK_PLANKS), + 2, "oak_planks", "wooden_shovel"); + addSawmillRecipe(Ingredient.ofItems(Items.WOODEN_PICKAXE), new ItemStack(Items.OAK_PLANKS, 3), + 2, "oak_planks", "wooden_pickaxe"); + addSawmillRecipe(Ingredient.ofItems(Items.WOODEN_AXE), new ItemStack(Items.OAK_PLANKS, 3), + 2, "oak_planks", "wooden_axe"); + addSawmillRecipe(Ingredient.ofItems(Items.WOODEN_HOE), new ItemStack(Items.OAK_PLANKS, 2), + 2, "oak_planks", "wooden_hoe"); + addSawmillRecipe(Ingredient.ofItems(EPItems.WOODEN_HAMMER), new ItemStack(Items.OAK_PLANKS, 2), + 2, "oak_planks", "wooden_hammer"); + + addSawmillRecipe(ingredientFromTag(ItemTags.PLANKS), new ItemStack(Items.STICK, 3), + 1, "sticks", "planks"); + addSawmillRecipe(Ingredient.ofItems(Items.BAMBOO_MOSAIC), new ItemStack(Items.STICK, 3), + 3, "sticks", "bamboo_mosaic"); + + addSawmillRecipe(ingredientFromTag(ItemTags.WOODEN_STAIRS), + new ItemStack(Items.STICK, 3), 1, "sticks", "stairs"); + addSawmillRecipe(Ingredient.ofItems(Items.BAMBOO_MOSAIC_STAIRS), + new ItemStack(Items.STICK, 3), 1, "sticks", "bamboo_mosaic_stairs"); + addSawmillRecipe(ingredientFromTag(ItemTags.WOODEN_SLABS), + new ItemStack(Items.STICK, 1), 1, "sticks", "slabs"); + addSawmillRecipe(Ingredient.ofItems(Items.BAMBOO_MOSAIC_SLAB), + new ItemStack(Items.STICK, 1), 1, "sticks", "bamboo_mosaic_slabs"); + addSawmillRecipe(ingredientFromTag(ItemTags.WOODEN_BUTTONS), new ItemStack(Items.STICK, 3), + 1, "sticks", "buttons"); + + addSawmillRecipe(Ingredient.ofItems(Items.LADDER), new ItemStack(Items.STICK, 2), + 1, "sticks", "ladder"); + + addSawmillRecipe(Ingredient.ofItems(Items.BOWL), new ItemStack(Items.STICK), + 2, "sticks", "bowl"); + addSawmillRecipe(Ingredient.ofItems(Items.BOW), new ItemStack(Items.STICK, 3), + new ItemStack(Items.STRING, 3), "sticks", "bow"); + addSawmillRecipe(Ingredient.ofItems(Items.FISHING_ROD), new ItemStack(Items.STICK, 3), + new ItemStack(Items.STRING, 2), "sticks", "fishing_rod"); + + addSawmillRecipe(ingredientFromTag(ConventionalItemTags.WOODEN_RODS), new ItemStack(EPItems.SAWDUST), + 0, "sawdust", "sticks"); + } + + private void buildPlantGrowthChamberRecipes() { + addBasicFlowerGrowingRecipe(Items.DANDELION, "dandelions"); + addBasicFlowerGrowingRecipe(Items.POPPY, "poppies"); + addBasicFlowerGrowingRecipe(Items.BLUE_ORCHID, "blue_orchids"); + addBasicFlowerGrowingRecipe(Items.ALLIUM, "alliums"); + addBasicFlowerGrowingRecipe(Items.AZURE_BLUET, "azure_bluets"); + addBasicFlowerGrowingRecipe(Items.RED_TULIP, "red_tulips"); + addBasicFlowerGrowingRecipe(Items.ORANGE_TULIP, "orange_tulips"); + addBasicFlowerGrowingRecipe(Items.WHITE_TULIP, "white_tulips"); + addBasicFlowerGrowingRecipe(Items.PINK_TULIP, "pink_tulips"); + addBasicFlowerGrowingRecipe(Items.OXEYE_DAISY, "oxeye_daisies"); + addBasicFlowerGrowingRecipe(Items.CORNFLOWER, "cornflowers"); + addBasicFlowerGrowingRecipe(Items.LILY_OF_THE_VALLEY, "lily_of_the_valley"); + + addBasicFlowerGrowingRecipe(Items.SUNFLOWER, "sunflowers"); + addBasicFlowerGrowingRecipe(Items.LILAC, "lilacs"); + addBasicFlowerGrowingRecipe(Items.ROSE_BUSH, "rose_bushes"); + addBasicFlowerGrowingRecipe(Items.PEONY, "peonies"); + + addBasicMushroomsGrowingRecipe(Items.BROWN_MUSHROOM, "brown_mushrooms"); + addBasicMushroomsGrowingRecipe(Items.RED_MUSHROOM, "red_mushrooms"); + + addBasicAncientFlowerGrowingRecipe(Items.TORCHFLOWER_SEEDS, Items.TORCHFLOWER, "torchflowers"); + addBasicAncientFlowerGrowingRecipe(Items.PITCHER_POD, Items.PITCHER_PLANT, "pitcher_plants"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.PINK_PETALS), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.PINK_PETALS), new double[] { + 1., 1., 1., .67, .33, .33, .15 + }) + }, 16000, "pink_petals", "pink_petals"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.SWEET_BERRIES), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.SWEET_BERRIES), new double[] { + 1., 1., .33, .17 + }) + }, 16000, "sweet_berries", "sweet_berries"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.GLOW_BERRIES), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.GLOW_BERRIES), new double[] { + 1., 1., .67, .33, .17, .17 + }) + }, 16000, "glow_berries", "glow_berries"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.WHEAT_SEEDS), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.WHEAT_SEEDS), new double[] { + 1., .33, .33 + }), + new OutputItemStackWithPercentages(new ItemStack(Items.WHEAT), new double[] { + 1., .75, .25 + }) + }, 16000, "wheat", "wheat_seeds"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.BEETROOT_SEEDS), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.BEETROOT_SEEDS), new double[] { + 1., .33, .33 + }), + new OutputItemStackWithPercentages(new ItemStack(Items.BEETROOT), new double[] { + 1., .75, .25, .25 + }) + }, 16000, "beetroots", "beetroot_seeds"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.POTATO), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.POTATO), new double[] { + 1., .75, .25, .25 + }), + new OutputItemStackWithPercentages(new ItemStack(Items.POISONOUS_POTATO), new double[] { + .125 + }) + }, 16000, "potatoes", "potato"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.CARROT), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.CARROT), new double[] { + 1., .75, .25, .25 + }) + }, 16000, "carrots", "carrot"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.MELON_SEEDS), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.MELON_SLICE), new double[] { + 1., 1., .75, .25, .25 + }) + }, 16000, "melon_slices", "melon_seeds"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.PUMPKIN_SEEDS), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.PUMPKIN), new double[] { + 1. + }) + }, 16000, "pumpkin", "pumpkin_seeds"); + + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.SUGAR_CANE), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.SUGAR_CANE), new double[] { + 1., 1., .67, .67, .33, .17, .17 + }) + }, 16000, "sugar_canes", "sugar_cane"); + addPlantGrowthChamberRecipe(Ingredient.ofItems(Items.BAMBOO), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.BAMBOO), new double[] { + 1., 1., .67, .17 + }) + }, 16000, "bamboo", "bamboo"); + } + + private void buildPlantGrowthChamberFertilizerRecipes() { + addPlantGrowthChamberFertilizerRecipe(Ingredient.ofItems(Items.BONE_MEAL), + 1.5, 3., "bone_meal"); + + addPlantGrowthChamberFertilizerRecipe(Ingredient.ofItems(EPItems.BASIC_FERTILIZER), + 2.5, 3.5, "basic_fertilizer"); + + addPlantGrowthChamberFertilizerRecipe(Ingredient.ofItems(EPItems.GOOD_FERTILIZER), + 3.5, 5., "good_fertilizer"); + + addPlantGrowthChamberFertilizerRecipe(Ingredient.ofItems(EPItems.ADVANCED_FERTILIZER), + 5., 6.5, "advanced_fertilizer"); + } + + private void buildMetalPressRecipes() { + addGearMetalPressRecipe(ingredientFromTag(CommonItemTags.PLATES_IRON), new ItemStack(EPItems.IRON_GEAR)); + + addRodMetalPressRecipe(ingredientFromTag(CommonItemTags.PLATES_IRON), new ItemStack(EPItems.IRON_ROD)); + + addWireMetalPressRecipe(ingredientFromTag(CommonItemTags.PLATES_TIN), new ItemStack(EPItems.TIN_WIRE)); + addWireMetalPressRecipe(ingredientFromTag(CommonItemTags.PLATES_COPPER), new ItemStack(EPItems.COPPER_WIRE)); + addWireMetalPressRecipe(ingredientFromTag(CommonItemTags.PLATES_GOLD), new ItemStack(EPItems.GOLD_WIRE)); + + addWireMetalPressRecipe(ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_COPPER), new ItemStack(EPItems.ENERGIZED_COPPER_WIRE)); + addWireMetalPressRecipe(ingredientFromTag(CommonItemTags.PLATES_ENERGIZED_GOLD), new ItemStack(EPItems.ENERGIZED_GOLD_WIRE)); + } + + private void buildHeatGeneratorRecipes() { + addHeatGeneratorRecipe(Fluids.FLOWING_LAVA, 15, "flowing_lava"); + addHeatGeneratorRecipe(Fluids.LAVA, 25, "still_lava"); + } + + private void buildThermalGeneratorRecipes() { + addThermalGeneratorRecipe(Fluids.LAVA, 20000, "lava"); + } + + private void buildAssemblingMachineRecipes() { + addAssemblingMachineRecipe(new IngredientWithCount[] { + new IngredientWithCount(Ingredient.ofItems(EPItems.BASIC_SOLAR_CELL), 2), + new IngredientWithCount(ingredientFromTag(CommonItemTags.INGOTS_ENERGIZED_COPPER), 4), + new IngredientWithCount(ingredientFromTag(CommonItemTags.INGOTS_TIN), 2), + new IngredientWithCount(ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), 1) + }, new ItemStack(EPItems.ADVANCED_SOLAR_CELL)); + + addAssemblingMachineRecipe(new IngredientWithCount[] { + new IngredientWithCount(Ingredient.ofItems(EPItems.ADVANCED_SOLAR_CELL), 2), + new IngredientWithCount(Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), 4), + new IngredientWithCount(ingredientFromTag(CommonItemTags.SILICON), 2), + new IngredientWithCount(ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), 2) + }, new ItemStack(EPItems.REINFORCED_ADVANCED_SOLAR_CELL)); + + addAssemblingMachineRecipe(new IngredientWithCount[] { + new IngredientWithCount(Ingredient.ofItems(EPItems.BASIC_CIRCUIT), 4), + new IngredientWithCount(ingredientFromTag(CommonItemTags.WIRES_ENERGIZED_COPPER), 4), + new IngredientWithCount(ingredientFromTag(CommonItemTags.SILICON), 4), + new IngredientWithCount(ingredientFromTag(ConventionalItemTags.REDSTONE_DUSTS), 2) + }, new ItemStack(EPItems.ADVANCED_CIRCUIT)); + + addAssemblingMachineRecipe(new IngredientWithCount[] { + new IngredientWithCount(Ingredient.ofItems(EPItems.ADVANCED_CIRCUIT), 4), + new IngredientWithCount(ingredientFromTag(CommonItemTags.WIRES_ENERGIZED_GOLD), 6), + new IngredientWithCount(ingredientFromTag(CommonItemTags.SILICON), 6) + }, new ItemStack(EPItems.PROCESSING_UNIT)); + + addAssemblingMachineRecipe(new IngredientWithCount[] { + new IngredientWithCount(Ingredient.ofItems(EPItems.PROCESSING_UNIT), 4), + new IngredientWithCount(Ingredient.ofItems(EPItems.TELEPORTER_MATRIX), 4), + new IngredientWithCount(Ingredient.ofItems(EPItems.ENERGIZED_CRYSTAL_MATRIX), 2), + new IngredientWithCount(ingredientFromTag(CommonItemTags.SILICON), 2) + }, new ItemStack(EPItems.TELEPORTER_PROCESSING_UNIT)); + + addAssemblingMachineRecipe(new IngredientWithCount[] { + new IngredientWithCount(ingredientFromTag(ConventionalItemTags.AMETHYST_GEMS), 6), + new IngredientWithCount(ingredientFromTag(ConventionalItemTags.DIAMOND_GEMS), 2), + new IngredientWithCount(ingredientFromTag(ConventionalItemTags.EMERALD_GEMS), 2), + new IngredientWithCount(ingredientFromTag(CommonItemTags.INGOTS_REDSTONE_ALLOY), 1) + }, new ItemStack(EPItems.CRYSTAL_MATRIX)); + } + + private void buildStoneSolidifierRecipes() { + addStoneSolidifierRecipe(1000, 50, new ItemStack(Items.STONE)); + + addStoneSolidifierRecipe(50, 50, new ItemStack(Items.COBBLESTONE)); + + addStoneSolidifierRecipe(1000, 150, new ItemStack(Items.DEEPSLATE)); + + addStoneSolidifierRecipe(150, 150, new ItemStack(Items.COBBLED_DEEPSLATE)); + + addStoneSolidifierRecipe(1000, 50, new ItemStack(Items.GRANITE)); + + addStoneSolidifierRecipe(1000, 50, new ItemStack(Items.DIORITE)); + + addStoneSolidifierRecipe(1000, 50, new ItemStack(Items.ANDESITE)); + + addStoneSolidifierRecipe(1000, 250, new ItemStack(Items.BLACKSTONE)); + + addStoneSolidifierRecipe(1000, 1000, new ItemStack(Items.OBSIDIAN)); + } + + private void buildFiltrationPlantRecipes() { + addOreFiltrationRecipe(new ItemStack(EPItems.RAW_TIN), 0.05, "tin"); + addOreFiltrationRecipe(new ItemStack(Items.RAW_COPPER), 0.05, "copper"); + addOreFiltrationRecipe(new ItemStack(Items.RAW_IRON), 0.05, "iron"); + addOreFiltrationRecipe(new ItemStack(Items.RAW_GOLD), 0.005, "gold"); + } + + private void buildFluidTransposerRecipes() { + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.WHITE_CONCRETE_POWDER), new ItemStack(Items.WHITE_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.ORANGE_CONCRETE_POWDER), new ItemStack(Items.ORANGE_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.MAGENTA_CONCRETE_POWDER), new ItemStack(Items.MAGENTA_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.LIGHT_BLUE_CONCRETE_POWDER), new ItemStack(Items.LIGHT_BLUE_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.YELLOW_CONCRETE_POWDER), new ItemStack(Items.YELLOW_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.LIME_CONCRETE_POWDER), new ItemStack(Items.LIME_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.PINK_CONCRETE_POWDER), new ItemStack(Items.PINK_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.GRAY_CONCRETE_POWDER), new ItemStack(Items.GRAY_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.LIGHT_GRAY_CONCRETE_POWDER), new ItemStack(Items.LIGHT_GRAY_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.CYAN_CONCRETE_POWDER), new ItemStack(Items.CYAN_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.PURPLE_CONCRETE_POWDER), new ItemStack(Items.PURPLE_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.BLUE_CONCRETE_POWDER), new ItemStack(Items.BLUE_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.BROWN_CONCRETE_POWDER), new ItemStack(Items.BROWN_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.GREEN_CONCRETE_POWDER), new ItemStack(Items.GREEN_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.RED_CONCRETE_POWDER), new ItemStack(Items.RED_CONCRETE)); + addConcreteFluidTransposerRecipe(Ingredient.ofItems(Items.BLACK_CONCRETE_POWDER), new ItemStack(Items.BLACK_CONCRETE)); + + addFluidTransposerRecipe(Ingredient.ofItems(Items.SPONGE), new ItemStack(Items.WET_SPONGE), FluidTransposerBlockEntity.Mode.FILLING, + new FluidStack(Fluids.WATER, FluidUtils.convertMilliBucketsToDroplets(1000))); + addFluidTransposerRecipe(Ingredient.ofItems(Items.WET_SPONGE), new ItemStack(Items.SPONGE), FluidTransposerBlockEntity.Mode.EMPTYING, + new FluidStack(Fluids.WATER, FluidUtils.convertMilliBucketsToDroplets(1000))); + + addFluidTransposerRecipe(Ingredient.ofItems(Items.DIRT), new ItemStack(Items.MUD), FluidTransposerBlockEntity.Mode.FILLING, + new FluidStack(Fluids.WATER, FluidUtils.convertMilliBucketsToDroplets(250))); + } + + private void buildChargerRecipes() { + addChargerRecipe(ingredientFromTag(ConventionalItemTags.COPPER_INGOTS), + new ItemStack(EPItems.ENERGIZED_COPPER_INGOT), 4194304); + } + + private void buildEnergizerRecipes() { + addEnergizerRecipe(ingredientFromTag(ConventionalItemTags.COPPER_INGOTS), + new ItemStack(EPItems.ENERGIZED_COPPER_INGOT), 32768); + addEnergizerRecipe(ingredientFromTag(ConventionalItemTags.GOLD_INGOTS), + new ItemStack(EPItems.ENERGIZED_GOLD_INGOT), 131072); + addEnergizerRecipe(Ingredient.ofItems(EPItems.CRYSTAL_MATRIX), + new ItemStack(EPItems.ENERGIZED_CRYSTAL_MATRIX), 524288); + } + + private void buildCrystalGrowthChamberRecipes() { + addCrystalGrowthChamberRecipe(ingredientFromTag(ConventionalItemTags.AMETHYST_GEMS), + new OutputItemStackWithPercentages(new ItemStack(Items.AMETHYST_SHARD), new double[] { + 1., 1., .67, .5, .25, .125 + }), 16000); + addCrystalGrowthChamberRecipe(new IngredientWithCount(Ingredient.ofItems(Items.AMETHYST_BLOCK), 4), + new OutputItemStackWithPercentages(new ItemStack(Items.BUDDING_AMETHYST), .25), + 32000); + } + + private void add3x3PackingCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + Ingredient unpackedInput, ItemConvertible packedItem, CraftingRecipeCategory category, + String group, String recipeIdSuffix) { + addShapedCraftingRecipe(hasIngredientTrigger, Map.of( + '#', unpackedInput + ), new String[] { + "###", + "###", + "###" + }, new ItemStack(packedItem), category, group, recipeIdSuffix); + } + private void add3x3UnpackingCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + Ingredient packedInput, ItemConvertible unpackedItem, CraftingRecipeCategory category, + String group, String recipeIdSuffix) { + addShapelessCraftingRecipe(hasIngredientTrigger, List.of( + packedInput + ), new ItemStack(unpackedItem, 9), category, group, recipeIdSuffix); + } + private void addMetalIngotCraftingRecipes(TagKey nuggetInput, + TagKey blockInput, ItemConvertible ingotItem, String metalName) { + add3x3PackingCraftingRecipe(conditionsFromTag(nuggetInput), ingredientFromTag(nuggetInput), ingotItem, + CraftingRecipeCategory.MISC, metalName + "_ingot", "_from_nuggets"); + add3x3UnpackingCraftingRecipe(conditionsFromTag(blockInput), ingredientFromTag(blockInput), ingotItem, + CraftingRecipeCategory.MISC, metalName + "_ingot", "_from_" + metalName + "_block"); + } + private void addMetalNuggetCraftingRecipe(TagKey ingotInput, ItemConvertible nuggetItem) { + addShapelessCraftingRecipe(conditionsFromTag(ingotInput), List.of( + ingredientFromTag(ingotInput) + ), new ItemStack(nuggetItem, 9), CraftingRecipeCategory.MISC); + } + private void addMetalPlateCraftingRecipe(TagKey ingotInput, ItemConvertible plateItem) { + addShapelessCraftingRecipe(conditionsFromTag(ingotInput), List.of( + ingredientFromTag(CommonItemTags.TOOLS_HAMMERS), + ingredientFromTag(ingotInput) + ), new ItemStack(plateItem), CraftingRecipeCategory.MISC); + } + private void addMetalWireCraftingRecipe(TagKey plateInput, ItemConvertible wireItem) { + addShapelessCraftingRecipe(conditionsFromTag(plateInput), List.of( + ingredientFromTag(CommonItemTags.TOOLS_CUTTERS), + ingredientFromTag(plateInput) + ), new ItemStack(wireItem, 2), CraftingRecipeCategory.MISC); + } + private void addHammerCraftingRecipe(TagKey materialInput, ItemConvertible hammerItem) { + addShapedCraftingRecipe(conditionsFromTag(materialInput), Map.of( + 'S', ingredientFromTag(ConventionalItemTags.WOODEN_RODS), + 'M', ingredientFromTag(materialInput) + ), new String[] { + " M ", + " SM", + "S " + }, new ItemStack(hammerItem), CraftingRecipeCategory.MISC); + } + private void addBasicCableCraftingRecipes(TagKey ingotInput, TagKey wireInput, + ItemStack cableItem) { + addCableCraftingRecipe(ingotInput, cableItem); + addCableUsingWireCraftingRecipe(wireInput, cableItem); + } + private void addCableUsingWireCraftingRecipe(TagKey wireInput, + ItemStack cableItem) { + addShapedCraftingRecipe(conditionsFromTag(wireInput), Map.of( + 'W', ingredientFromTag(wireInput), + 'I', Ingredient.ofItems(EPItems.CABLE_INSULATOR) + ), new String[] { + "IWI", + "IWI", + "IWI" + }, cableItem, CraftingRecipeCategory.MISC, getItemPath(cableItem.getItem()), "_using_wire"); + } + private void addCableCraftingRecipe(TagKey ingotInput, + ItemStack cableItem) { + addShapedCraftingRecipe(conditionsFromTag(ingotInput), Map.of( + 'I', ingredientFromTag(ingotInput), + 'i', Ingredient.ofItems(EPItems.CABLE_INSULATOR) + ), new String[] { + "iIi", + "iIi", + "iIi" + }, cableItem, CraftingRecipeCategory.MISC, getItemPath(cableItem.getItem())); + } + private void addShapedCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + Map key, String[] pattern, + ItemStack result, CraftingRecipeCategory category) { + addShapedCraftingRecipe(hasIngredientTrigger, key, pattern, result, category, ""); + } + private void addShapedCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + Map key, String[] pattern, + ItemStack result, CraftingRecipeCategory category, + String group) { + addShapedCraftingRecipe(hasIngredientTrigger, key, pattern, result, category, group, ""); + } + private void addShapedCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + Map key, String[] pattern, + ItemStack result, CraftingRecipeCategory category, + String group, String recipeIdSuffix) { + addShapedCraftingRecipe(hasIngredientTrigger, key, pattern, result, category, group, recipeIdSuffix, ""); + } + private void addShapedCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + Map key, String[] pattern, + ItemStack result, CraftingRecipeCategory category, + String group, String recipeIdSuffix, String recipeIdPrefix) { + Identifier recipeId = EPAPI.id("crafting/" + + recipeIdPrefix + getItemPath(result.getItem()) + recipeIdSuffix); + + Advancement.Builder advancementBuilder = exporter.getAdvancementBuilder() + .criterion("has_the_recipe", RecipeUnlockedCriterion.create(getKey(recipeId))) + .criterion("has_the_ingredient", hasIngredientTrigger) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); + ShapedRecipe recipe = new ShapedRecipe(Objects.requireNonNullElse(group, ""), + category, RawShapedRecipe.create(key, pattern), result); + exporter.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); + } + private void addShapelessCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + List inputs, ItemStack result, CraftingRecipeCategory category) { + addShapelessCraftingRecipe(hasIngredientTrigger, inputs, result, category, ""); + } + private void addShapelessCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + List inputs, ItemStack result, CraftingRecipeCategory category, + String group) { + addShapelessCraftingRecipe(hasIngredientTrigger, inputs, result, category, group, ""); + } + private void addShapelessCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + List inputs, ItemStack result, CraftingRecipeCategory category, + String group, String recipeIdSuffix) { + addShapelessCraftingRecipe(hasIngredientTrigger, inputs, result, category, group, recipeIdSuffix, ""); + } + private void addShapelessCraftingRecipe(AdvancementCriterion hasIngredientTrigger, + List inputs, ItemStack result, CraftingRecipeCategory category, + String group, String recipeIdSuffix, String recipeIdPrefix) { + Identifier recipeId = EPAPI.id("crafting/" + + recipeIdPrefix + getItemPath(result.getItem()) + recipeIdSuffix); + + Advancement.Builder advancementBuilder = exporter.getAdvancementBuilder() + .criterion("has_the_recipe", RecipeUnlockedCriterion.create(getKey(recipeId))) + .criterion("has_the_ingredient", hasIngredientTrigger) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); + ShapelessRecipe recipe = new ShapelessRecipe(Objects.requireNonNullElse(group, ""), category, result, + DefaultedList.copyOf(null, inputs.toArray(Ingredient[]::new))); + exporter.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); + } + private void addCustomCraftingRecipe(Function customRecipeFactory, + CraftingRecipeCategory category, String recipeIdString) { + Identifier recipeId = EPAPI.id("crafting/" + + recipeIdString); + + SpecialCraftingRecipe recipe = customRecipeFactory.apply(category); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addBlastingAndSmeltingRecipes(ItemConvertible ingredient, ItemStack result, + CookingRecipeCategory category, int time, float xp, String group, + String recipeIngredientName) { + addBlastingRecipe(ingredient, result, category, time, xp, group, recipeIngredientName); + addSmeltingRecipe(ingredient, result, category, 2 * time, xp, group, recipeIngredientName); + } + private void addBlastingAndSmeltingRecipes(TagKey ingredient, ItemStack result, + CookingRecipeCategory category, int time, float xp, String group, + String recipeIngredientName) { + addBlastingRecipe(ingredient, result, category, time, xp, group, recipeIngredientName); + addSmeltingRecipe(ingredient, result, category, 2 * time, xp, group, recipeIngredientName); + } + + private void addSmeltingRecipe(ItemConvertible ingredient, ItemStack result, CookingRecipeCategory category, + int time, float xp, String group) { + Identifier recipeId = EPAPI.id("smelting/" + + getItemPath(result.getItem())); + + addSmeltingRecipe(ingredient, result, category, time, xp, group, recipeId); + } + private void addSmeltingRecipe(ItemConvertible ingredient, ItemStack result, CookingRecipeCategory category, + int time, float xp, String group, String recipeIngredientName) { + Identifier recipeId = EPAPI.id("smelting/" + + getItemPath(result.getItem()) + "_from_smelting_" + recipeIngredientName); + + addSmeltingRecipe(ingredient, result, category, time, xp, group, recipeId); + } + private void addSmeltingRecipe(ItemConvertible ingredient, ItemStack result, CookingRecipeCategory category, + int time, float xp, String group, Identifier recipeId) { + Advancement.Builder advancementBuilder = exporter.getAdvancementBuilder() + .criterion("has_the_recipe", RecipeUnlockedCriterion.create(getKey(recipeId))) + .criterion("has_the_ingredient", conditionsFromItem(ingredient)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); + AbstractCookingRecipe recipe = new SmeltingRecipe(Objects.requireNonNullElse(group, ""), + category, Ingredient.ofItems(ingredient), result, xp, time); + exporter.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); + } + private void addSmeltingRecipe(TagKey ingredient, ItemStack result, CookingRecipeCategory category, + int time, float xp, String group, String recipeIngredientName) { + Identifier recipeId = EPAPI.id("smelting/" + + getItemPath(result.getItem()) + "_from_smelting_" + recipeIngredientName); + + Advancement.Builder advancementBuilder = exporter.getAdvancementBuilder() + .criterion("has_the_recipe", RecipeUnlockedCriterion.create(getKey(recipeId))) + .criterion("has_the_ingredient", conditionsFromTag(ingredient)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); + AbstractCookingRecipe recipe = new SmeltingRecipe(Objects.requireNonNullElse(group, ""), + category, ingredientFromTag(ingredient), result, xp, time); + exporter.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); + } + + private void addBlastingRecipe(ItemConvertible ingredient, ItemStack result, CookingRecipeCategory category, + int time, float xp, String group, String recipeIngredientName) { + Identifier recipeId = EPAPI.id("blasting/" + + getItemPath(result.getItem()) + "_from_blasting_" + recipeIngredientName); + + Advancement.Builder advancementBuilder = exporter.getAdvancementBuilder() + .criterion("has_the_recipe", RecipeUnlockedCriterion.create(getKey(recipeId))) + .criterion("has_the_ingredient", conditionsFromItem(ingredient)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); + AbstractCookingRecipe recipe = new BlastingRecipe(Objects.requireNonNullElse(group, ""), + category, Ingredient.ofItems(ingredient), result, xp, time); + exporter.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); + } + private void addBlastingRecipe(TagKey ingredient, ItemStack result, CookingRecipeCategory category, + int time, float xp, String group, String recipeIngredientName) { + Identifier recipeId = EPAPI.id("blasting/" + + getItemPath(result.getItem()) + "_from_blasting_" + recipeIngredientName); + + Advancement.Builder advancementBuilder = exporter.getAdvancementBuilder() + .criterion("has_the_recipe", RecipeUnlockedCriterion.create(getKey(recipeId))) + .criterion("has_the_ingredient", conditionsFromTag(ingredient)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); + AbstractCookingRecipe recipe = new BlastingRecipe(Objects.requireNonNullElse(group, ""), + category, ingredientFromTag(ingredient), result, xp, time); + exporter.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); + } + + private void addNetheriteSmithingUpgradeRecipe(Ingredient base, ItemStack output) { + Identifier recipeId = EPAPI.id("smithing/" + + getItemPath(output.getItem())); + + Advancement.Builder advancementBuilder = exporter.getAdvancementBuilder() + .criterion("has_the_recipe", RecipeUnlockedCriterion.create(getKey(recipeId))) + .criterion("has_the_ingredient", conditionsFromTag(ConventionalItemTags.NETHERITE_INGOTS)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .criteriaMerger(AdvancementRequirements.CriterionMerger.OR); + SmithingTransformRecipe recipe = new SmithingTransformRecipe(Optional.of(Ingredient.ofItems(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE)), + Optional.of(base), Optional.of(ingredientFromTag(ConventionalItemTags.NETHERITE_INGOTS)), output); + exporter.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefixedPath("recipes/"))); + } + + private void addAlloyFurnaceRecipe(IngredientWithCount[] inputs, ItemStack output, + int ticks) { + addAlloyFurnaceRecipe(inputs, output, OutputItemStackWithPercentages.EMPTY, ticks); + } + private void addAlloyFurnaceRecipe(IngredientWithCount[] inputs, ItemStack output, + OutputItemStackWithPercentages secondaryOutput, int ticks) { + Identifier recipeId = EPAPI.id("alloy_furnace/" + + getItemPath(output.getItem())); + + AlloyFurnaceRecipe recipe = new AlloyFurnaceRecipe(output, secondaryOutput, inputs, ticks); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addPressMoldMakerRecipe(int clayCount, ItemStack output) { + Identifier recipeId = EPAPI.id("press_mold_maker/" + + getItemPath(output.getItem())); + + PressMoldMakerRecipe recipe = new PressMoldMakerRecipe(output, clayCount); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addPlateCompressorRecipes(Ingredient ingotInput, + Ingredient blockInput, ItemStack output, String metalName) { + addPlateCompressorIngotRecipe(ingotInput, output, metalName); + addCompressorRecipe(blockInput, output.copyWithCount(9), metalName + "_block"); + } + private void addPlateCompressorIngotRecipe(Ingredient ingotInput, + ItemStack output, String metalName) { + addCompressorRecipe(ingotInput, output, metalName + "_ingot"); + } + private void addCompressorRecipe(Ingredient input, ItemStack output, String recipeIngredientName) { + addCompressorRecipe(new IngredientWithCount(input), output, recipeIngredientName); + } + private void addCompressorRecipe(IngredientWithCount input, ItemStack output, String recipeIngredientName) { + Identifier recipeId = EPAPI.id("compressing/" + + getItemPath(output.getItem()) + "_from_compressing_" + recipeIngredientName); + + CompressorRecipe recipe = new CompressorRecipe(output, input); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addCrusherRecipe(Ingredient input, ItemStack output, + String recipeIngredientName) { + Identifier recipeId = EPAPI.id("crusher/" + + getItemPath(output.getItem()) + "_from_crushing_" + recipeIngredientName); + + CrusherRecipe recipe = new CrusherRecipe(output, input); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addBasicMetalPulverizerRecipes(Ingredient oreInput, + Ingredient rawMetalInput, Ingredient rawMetalBlockInput, + Ingredient ingotInput, ItemStack output, String metalName) { + addPulverizerRecipe(oreInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { + 1., 1., .25 + }, new double[] { + 1., 1, .5, .25 + }), metalName + "_ores"); + + addRawMetalAndIngotPulverizerRecipes(rawMetalInput, rawMetalBlockInput, ingotInput, output, metalName); + } + private void addRawMetalAndIngotPulverizerRecipes(Ingredient rawMetalInput, Ingredient rawMetalBlockInput, + Ingredient ingotInput, ItemStack output, String metalName) { + addPulverizerRecipe(rawMetalInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { + 1., .25 + }, new double[] { + 1., .5 + }), "raw_" + metalName); + + addPulverizerRecipe(rawMetalBlockInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { + 1., 1., 1., 1., 1., 1., 1., 1., 1., .5, .5, .25 + }, new double[] { + 1., 1., 1., 1., 1., 1., 1., 1., 1., .75, .5, .25, .25 + }), "raw_" + metalName + "_blocks"); + + addPulverizerRecipe(ingotInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, + 1., 1.), metalName + "_ingots"); + } + private void addPulverizerRecipe(Ingredient input, + PulverizerRecipe.OutputItemStackWithPercentages output, + String recipeIngredientName) { + addPulverizerRecipe(input, output, + new PulverizerRecipe.OutputItemStackWithPercentages(ItemStack.EMPTY, new double[0], new double[0]), recipeIngredientName); + } + private void addPulverizerRecipe(Ingredient input, + PulverizerRecipe.OutputItemStackWithPercentages output, + PulverizerRecipe.OutputItemStackWithPercentages secondaryOutput, + String recipeIngredientName) { + Identifier recipeId = EPAPI.id("pulverizer/" + + getItemPath(output.output().getItem()) + "_from_pulverizer_" + recipeIngredientName); + + PulverizerRecipe recipe = new PulverizerRecipe(output, secondaryOutput, input); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addBasicWoodSawmillRecipe(ItemStack planksItem, + Ingredient logsInput, Ingredient fenceInput, Ingredient fenceGateInput, + Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, + Ingredient signInput, Ingredient boatInput, Ingredient chestBoatInput, + boolean isRaft, String woodName) { + addSawmillRecipe(logsInput, planksItem.copyWithCount(6), 1, getItemPath(planksItem.getItem()), + woodName + "_logs"); + + addBasicWoodWithoutLogsSawmillRecipe(planksItem, fenceInput, fenceGateInput, doorInput, trapdoorInput, + pressurePlateInput, signInput, boatInput, chestBoatInput, isRaft, woodName); + } + private void addBasicWoodWithoutLogsSawmillRecipe(ItemStack planksItem, + Ingredient fenceInput, Ingredient fenceGateInput, + Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, + Ingredient signInput, Ingredient boatInput, Ingredient chestBoatInput, + boolean isRaft, String woodName) { + addBasicWoodWithoutLogsAndBoatsSawmillRecipe(planksItem, fenceInput, fenceGateInput, doorInput, + trapdoorInput, pressurePlateInput, signInput, woodName); + + addSawmillRecipe(boatInput, planksItem.copyWithCount(4), 3, getItemPath(planksItem.getItem()), + woodName + (isRaft?"_raft":"_boat")); + addSawmillRecipe(chestBoatInput, planksItem.copyWithCount(5), 7, getItemPath(planksItem.getItem()), + woodName + (isRaft?"_chest_raft":"_chest_boat")); + } + private void addBasicWoodWithoutLogsAndBoatsSawmillRecipe(ItemStack planksItem, + Ingredient fenceInput, Ingredient fenceGateInput, + Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, + Ingredient signInput, String woodName) { + addSawmillRecipe(fenceInput, planksItem, 2, getItemPath(planksItem.getItem()), + woodName + "_fence"); + addSawmillRecipe(fenceGateInput, planksItem.copyWithCount(2), 3, getItemPath(planksItem.getItem()), + woodName + "_fence_gate"); + addSawmillRecipe(doorInput, planksItem, 3, getItemPath(planksItem.getItem()), + woodName + "_door"); + addSawmillRecipe(trapdoorInput, planksItem.copyWithCount(2), 3, getItemPath(planksItem.getItem()), + woodName + "_trapdoor"); + addSawmillRecipe(pressurePlateInput, planksItem, 2, getItemPath(planksItem.getItem()), + woodName + "_pressure_plate"); + addSawmillRecipe(signInput, planksItem.copyWithCount(2), 1, getItemPath(planksItem.getItem()), + woodName + "_sign"); + } + private void addSawmillRecipe(Ingredient input, ItemStack output, + int sawdustAmount, String outputName, String recipeIngredientName) { + Identifier recipeId = EPAPI.id("sawmill/" + + outputName + "_from_sawing_" + recipeIngredientName); + + SawmillRecipe recipe = new SawmillRecipe(output, input, sawdustAmount); + exporter.accept(getKey(recipeId), recipe, null); + } + private void addSawmillRecipe(Ingredient input, ItemStack output, + ItemStack secondaryOutput, String outputName, String recipeIngredientName) { + Identifier recipeId = EPAPI.id("sawmill/" + + outputName + "_from_sawing_" + recipeIngredientName); + + SawmillRecipe recipe = new SawmillRecipe(output, secondaryOutput, input); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addBasicFlowerGrowingRecipe(ItemConvertible flowerItem, + String outputName) { + addPlantGrowthChamberRecipe(Ingredient.ofItems(flowerItem), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(flowerItem), new double[] { + 1., 1., .33 + }) + }, 16000, outputName, getItemPath(flowerItem)); + } + private void addBasicMushroomsGrowingRecipe(ItemConvertible mushroomItem, + String outputName) { + addPlantGrowthChamberRecipe(Ingredient.ofItems(mushroomItem), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(mushroomItem), new double[] { + 1., 1., .5, .25 + }) + }, 16000, outputName, getItemPath(mushroomItem)); + } + private void addBasicAncientFlowerGrowingRecipe(ItemConvertible seedItem, + ItemConvertible flowerItem, String outputName) { + addPlantGrowthChamberRecipe(Ingredient.ofItems(seedItem), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(seedItem), new double[] { + 1., .33, .15 + }), + new OutputItemStackWithPercentages(new ItemStack(flowerItem), new double[] { + 1., .15 + }) + }, 16000, outputName, getItemPath(seedItem)); + } + private void addPlantGrowthChamberRecipe(Ingredient input, + OutputItemStackWithPercentages[] outputs, int ticks, + String outputName, String recipeIngredientName) { + Identifier recipeId = EPAPI.id("growing/" + + outputName + "_from_growing_" + recipeIngredientName); + + PlantGrowthChamberRecipe recipe = new PlantGrowthChamberRecipe(outputs, input, ticks); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addPlantGrowthChamberFertilizerRecipe(Ingredient input, + double speedMultiplier, double energyConsumptionMultiplier, + String recipeIngredientName) { + Identifier recipeId = EPAPI.id("growing/fertilizer/" + + recipeIngredientName); + + PlantGrowthChamberFertilizerRecipe recipe = new PlantGrowthChamberFertilizerRecipe(input, speedMultiplier, + energyConsumptionMultiplier); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addGearMetalPressRecipe(Ingredient input, ItemStack output) { + addMetalPressRecipe(new IngredientWithCount(input, 2), output, new ItemStack(EPItems.GEAR_PRESS_MOLD)); + } + private void addRodMetalPressRecipe(Ingredient input, ItemStack output) { + addMetalPressRecipe(input, output.copyWithCount(2), new ItemStack(EPItems.ROD_PRESS_MOLD)); + } + private void addWireMetalPressRecipe(Ingredient input, ItemStack output) { + addMetalPressRecipe(input, output.copyWithCount(3), new ItemStack(EPItems.WIRE_PRESS_MOLD)); + } + private void addMetalPressRecipe(Ingredient input, ItemStack output, + ItemStack pressMold) { + addMetalPressRecipe(new IngredientWithCount(input), output, pressMold); + } + private void addMetalPressRecipe(IngredientWithCount input, ItemStack output, + ItemStack pressMold) { + Identifier recipeId = EPAPI.id("metal_press/" + + getItemPath(output.getItem())); + + MetalPressRecipe recipe = new MetalPressRecipe(output, pressMold, input); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addHeatGeneratorRecipe(Fluid input, int energyProduction, + String recipeIngredientName) { + addHeatGeneratorRecipe(new Fluid[] { + input + }, energyProduction, recipeIngredientName); + } + private void addHeatGeneratorRecipe(Fluid[] input, int energyProduction, + String recipeIngredientName) { + Identifier recipeId = EPAPI.id("heat_generator/" + + "energy_production_from_" + recipeIngredientName); + + HeatGeneratorRecipe recipe = new HeatGeneratorRecipe(input, energyProduction); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addThermalGeneratorRecipe(Fluid input, int energyProduction, + String recipeIngredientName) { + addThermalGeneratorRecipe(new Fluid[] { + input + }, energyProduction, recipeIngredientName); + } + private void addThermalGeneratorRecipe(Fluid[] input, int energyProduction, + String recipeIngredientName) { + Identifier recipeId = EPAPI.id("thermal_generator/" + + "energy_production_from_" + recipeIngredientName); + + ThermalGeneratorRecipe recipe = new ThermalGeneratorRecipe(input, energyProduction); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addStoneSolidifierRecipe(int waterAmount, int lavaAmount, ItemStack output) { + Identifier recipeId = EPAPI.id("stone_solidifier/" + + getItemPath(output.getItem())); + + StoneSolidifierRecipe recipe = new StoneSolidifierRecipe(output, waterAmount, lavaAmount); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addAssemblingMachineRecipe(IngredientWithCount[] inputs, ItemStack output) { + Identifier recipeId = EPAPI.id("assembling/" + + getItemPath(output.getItem())); + + AssemblingMachineRecipe recipe = new AssemblingMachineRecipe(output, inputs); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addOreFiltrationRecipe(ItemStack oreOutput, double oreOutputPercentage, + String oreName) { + addFiltrationPlantRecipe(new OutputItemStackWithPercentages(new ItemStack(EPItems.STONE_PEBBLE), .33), + new OutputItemStackWithPercentages(oreOutput, oreOutputPercentage), Registries.ITEM.getId(oreOutput.getItem()), + oreName + "_ore_filtration"); + } + private void addFiltrationPlantRecipe(OutputItemStackWithPercentages output, + Identifier icon, String recipeName) { + addFiltrationPlantRecipe(output, OutputItemStackWithPercentages.EMPTY, icon, recipeName); + } + private void addFiltrationPlantRecipe(OutputItemStackWithPercentages output, + OutputItemStackWithPercentages secondaryOutput, Identifier icon, + String recipeName) { + Identifier recipeId = EPAPI.id("filtration_plant/" + + recipeName); + + FiltrationPlantRecipe recipe = new FiltrationPlantRecipe(output, secondaryOutput, icon); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addConcreteFluidTransposerRecipe(Ingredient input, ItemStack output) { + addFluidTransposerRecipe(input, output, FluidTransposerBlockEntity.Mode.FILLING, + new FluidStack(Fluids.WATER, FluidUtils.convertMilliBucketsToDroplets(1000))); + } + private void addFluidTransposerRecipe(Ingredient input, ItemStack output, + FluidTransposerBlockEntity.Mode mode, FluidStack fluid) { + Identifier recipeId = EPAPI.id("fluid_transposer/" + + getItemPath(output.getItem())); + + FluidTransposerRecipe recipe = new FluidTransposerRecipe(mode, output, input, fluid); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addChargerRecipe(Ingredient input, ItemStack output, int energyConsumption) { + Identifier recipeId = EPAPI.id("charger/" + + getItemPath(output.getItem())); + + ChargerRecipe recipe = new ChargerRecipe(output, input, energyConsumption); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addEnergizerRecipe(Ingredient input, ItemStack output, int energyConsumption) { + Identifier recipeId = EPAPI.id("energizer/" + + getItemPath(output.getItem())); + + EnergizerRecipe recipe = new EnergizerRecipe(output, input, energyConsumption); + exporter.accept(getKey(recipeId), recipe, null); + } + + private void addCrystalGrowthChamberRecipe(Ingredient input, OutputItemStackWithPercentages output, + int ticks) { + addCrystalGrowthChamberRecipe(new IngredientWithCount(input, 1), output, ticks); + } + private void addCrystalGrowthChamberRecipe(IngredientWithCount input, OutputItemStackWithPercentages output, + int ticks) { + Identifier recipeId = EPAPI.id("crystal_growing/" + + getItemPath(output.output().getItem())); + + CrystalGrowthChamberRecipe recipe = new CrystalGrowthChamberRecipe(output, input, ticks); + exporter.accept(getKey(recipeId), recipe, null); + } + + private static RegistryKey> getKey(Identifier recipeId) { + return RegistryKey.of(RegistryKeys.RECIPE, recipeId); + } +} diff --git a/src/main/java/me/jddev0/ep/energy/EnergizedPowerEnergyStorage.java b/src/main/java/me/jddev0/ep/energy/EnergizedPowerEnergyStorage.java index fdea11183..d7a8f68dc 100644 --- a/src/main/java/me/jddev0/ep/energy/EnergizedPowerEnergyStorage.java +++ b/src/main/java/me/jddev0/ep/energy/EnergizedPowerEnergyStorage.java @@ -3,7 +3,6 @@ import net.fabricmc.fabric.api.transfer.v1.storage.StoragePreconditions; import net.fabricmc.fabric.api.transfer.v1.transaction.TransactionContext; import net.fabricmc.fabric.api.transfer.v1.transaction.base.SnapshotParticipant; -import team.reborn.energy.api.EnergyStorage; public class EnergizedPowerEnergyStorage extends SnapshotParticipant implements IEnergizedPowerEnergyStorage { protected long amount; diff --git a/src/main/java/me/jddev0/ep/entity/AbstractMinecartBatteryBox.java b/src/main/java/me/jddev0/ep/entity/AbstractMinecartBatteryBox.java index c14b3ccc1..994119f36 100644 --- a/src/main/java/me/jddev0/ep/entity/AbstractMinecartBatteryBox.java +++ b/src/main/java/me/jddev0/ep/entity/AbstractMinecartBatteryBox.java @@ -21,11 +21,6 @@ public AbstractMinecartBatteryBox(EntityType EntityType registerEntity(String name, Entit } public static final EntityType BATTERY_BOX_MINECART = registerEntity( - "battery_box_minecart", FabricEntityTypeBuilder.create(SpawnGroup.MISC, - MinecartBatteryBox::new). - dimensions(EntityDimensions.fixed(0.98F, 0.7F)). - trackRangeChunks(8).build() + "battery_box_minecart", EntityType.Builder.create(MinecartBatteryBox::new, SpawnGroup.MISC). + dimensions(0.98F, 0.7F). + maxTrackingRange(8).build(RegistryKey.of(RegistryKeys.ENTITY_TYPE, EPAPI.id("battery_box_minecart"))) ); public static final EntityType ADVANCED_BATTERY_BOX_MINECART = registerEntity( - "advanced_battery_box_minecart", FabricEntityTypeBuilder.create(SpawnGroup.MISC, - MinecartAdvancedBatteryBox::new). - dimensions(EntityDimensions.fixed(0.98F, 0.7F)). - trackRangeChunks(8).build() + "advanced_battery_box_minecart", EntityType.Builder.create(MinecartAdvancedBatteryBox::new, SpawnGroup.MISC). + dimensions(0.98F, 0.7F). + maxTrackingRange(8).build(RegistryKey.of(RegistryKeys.ENTITY_TYPE, EPAPI.id("advanced_battery_box_minecart"))) ); diff --git a/src/main/java/me/jddev0/ep/event/ServerStartingHandler.java b/src/main/java/me/jddev0/ep/event/ServerStartingHandler.java index 2becb1d10..1f94a31b8 100644 --- a/src/main/java/me/jddev0/ep/event/ServerStartingHandler.java +++ b/src/main/java/me/jddev0/ep/event/ServerStartingHandler.java @@ -20,7 +20,7 @@ public class ServerStartingHandler implements ServerLifecycleEvents.ServerStarting { @Override public void onServerStarting(MinecraftServer server) { - Registry templatePoolRegistry = server.getRegistryManager().get(RegistryKeys.TEMPLATE_POOL); + Registry templatePoolRegistry = server.getRegistryManager().getOrThrow(RegistryKeys.TEMPLATE_POOL); //Electrician 1 int weight = ModConfigs.COMMON_ELECTRICIAN_BUILDING_1_PLACEMENT_WEIGHT.getValue(); diff --git a/src/main/java/me/jddev0/ep/fluid/DirtyWaterFluid.java b/src/main/java/me/jddev0/ep/fluid/DirtyWaterFluid.java index 5c642d8f2..be43403e8 100644 --- a/src/main/java/me/jddev0/ep/fluid/DirtyWaterFluid.java +++ b/src/main/java/me/jddev0/ep/fluid/DirtyWaterFluid.java @@ -10,13 +10,13 @@ import net.minecraft.item.Item; import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleTypes; +import net.minecraft.server.world.ServerWorld; import net.minecraft.sound.SoundEvent; import net.minecraft.sound.SoundEvents; import net.minecraft.state.StateManager; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockView; -import net.minecraft.world.World; import net.minecraft.world.WorldAccess; import net.minecraft.world.WorldView; import org.jetbrains.annotations.Nullable; @@ -46,7 +46,7 @@ protected ParticleEffect getParticle() { } @Override - protected boolean isInfinite(World world) { + protected boolean isInfinite(ServerWorld world) { return false; } diff --git a/src/main/java/me/jddev0/ep/fluid/DirtyWaterFluidBlock.java b/src/main/java/me/jddev0/ep/fluid/DirtyWaterFluidBlock.java index 23c6ab9d4..7017e2ca7 100644 --- a/src/main/java/me/jddev0/ep/fluid/DirtyWaterFluidBlock.java +++ b/src/main/java/me/jddev0/ep/fluid/DirtyWaterFluidBlock.java @@ -5,11 +5,6 @@ public class DirtyWaterFluidBlock extends FluidBlock { public DirtyWaterFluidBlock(FlowableFluid fluid, Settings settings) { - super(fluid, settings); - } - - @Override - public String getTranslationKey() { - return "fluid_type.energizedpower.dirty_water"; + super(fluid, settings.overrideTranslationKey("fluid_type.energizedpower.dirty_water")); } } diff --git a/src/main/java/me/jddev0/ep/fluid/EPFluids.java b/src/main/java/me/jddev0/ep/fluid/EPFluids.java index acd7dd195..e62ef8a89 100644 --- a/src/main/java/me/jddev0/ep/fluid/EPFluids.java +++ b/src/main/java/me/jddev0/ep/fluid/EPFluids.java @@ -1,6 +1,8 @@ package me.jddev0.ep.fluid; import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.block.EPBlocks; +import me.jddev0.ep.item.EPItems; import net.minecraft.block.AbstractBlock; import net.minecraft.block.Block; import net.minecraft.block.Blocks; @@ -13,26 +15,29 @@ import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import java.util.function.Function; + public final class EPFluids { private EPFluids() {} public static final FlowableFluid DIRTY_WATER = registerFluid("dirty_water", new DirtyWaterFluid.Source()); public static final FlowableFluid FLOWING_DIRTY_WATER = registerFluid("flowing_dirty_water", new DirtyWaterFluid.Flowing()); public static final FluidBlock DIRTY_WATER_BLOCK = createBlock("dirty_water", - new DirtyWaterFluidBlock(DIRTY_WATER, AbstractBlock.Settings.copy(Blocks.WATER))); + props -> new DirtyWaterFluidBlock(DIRTY_WATER, props), AbstractBlock.Settings.copy(Blocks.WATER)); public static final BucketItem DIRTY_WATER_BUCKET_ITEM = createItem("dirty_water_bucket", - new BucketItem(DIRTY_WATER, new Item.Settings().recipeRemainder(Items.BUCKET).maxCount(1))); + DIRTY_WATER, new Item.Settings().recipeRemainder(Items.BUCKET).maxCount(1)); private static T registerFluid(String name, T fluid) { return Registry.register(Registries.FLUID, EPAPI.id(name), fluid); } - private static T createBlock(String name, T block) { - return Registry.register(Registries.BLOCK, EPAPI.id(name), block); + private static T createBlock(String name, Function factory, + AbstractBlock.Settings props) { + return EPBlocks.registerBlock(name, factory, props); } - public static T createItem(String name, T item) { - return Registry.register(Registries.ITEM, EPAPI.id(name), item); + public static BucketItem createItem(String name, Fluid fluid, Item.Settings props) { + return EPItems.registerItem(name, p -> new BucketItem(fluid, p), props); } public static void register() { diff --git a/src/main/java/me/jddev0/ep/integration/emi/AdvancedPulverizerEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/AdvancedPulverizerEMIRecipe.java index 20e5642fb..616d6923d 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/AdvancedPulverizerEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/AdvancedPulverizerEMIRecipe.java @@ -31,7 +31,7 @@ public class AdvancedPulverizerEMIRecipe implements EmiRecipe { private final PulverizerRecipe.OutputItemStackWithPercentages secondaryOutputWithPercentages; public AdvancedPulverizerEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(recipe.value().getInput())); this.output = Arrays.stream(recipe.value().getMaxOutputCounts(true)).filter(itemStack -> !itemStack.isEmpty()).map(EmiStack::of).toList(); diff --git a/src/main/java/me/jddev0/ep/integration/emi/AlloyFurnaceEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/AlloyFurnaceEMIRecipe.java index 00117d936..5837a5528 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/AlloyFurnaceEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/AlloyFurnaceEMIRecipe.java @@ -36,7 +36,7 @@ public class AlloyFurnaceEMIRecipe implements EmiRecipe { private final int ticks; public AlloyFurnaceEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = Arrays.stream(recipe.value().getInputs()).map(input -> EmiIngredient.of(input.input(), input.count())).collect(Collectors.toList()); diff --git a/src/main/java/me/jddev0/ep/integration/emi/AssemblingMachineEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/AssemblingMachineEMIRecipe.java index b7aed103c..d966701fb 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/AssemblingMachineEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/AssemblingMachineEMIRecipe.java @@ -27,7 +27,7 @@ public class AssemblingMachineEMIRecipe implements EmiRecipe { private final List output; public AssemblingMachineEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = Arrays.stream(recipe.value().getInputs()).map(input -> EmiIngredient.of(input.input(), input.count())).collect(Collectors.toList()); this.output = List.of(EmiStack.of(recipe.value().getOutput())); diff --git a/src/main/java/me/jddev0/ep/integration/emi/ChargerEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/ChargerEMIRecipe.java index 518341302..bee7719b1 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/ChargerEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/ChargerEMIRecipe.java @@ -31,7 +31,7 @@ public class ChargerEMIRecipe implements EmiRecipe { private final long energyConsumption; public ChargerEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(recipe.value().getInputItem())); this.output = List.of(EmiStack.of(recipe.value().getOutputItem())); this.energyConsumption = (long)(recipe.value().getEnergyConsumption() * ChargerBlockEntity.CHARGER_RECIPE_ENERGY_CONSUMPTION_MULTIPLIER); diff --git a/src/main/java/me/jddev0/ep/integration/emi/CompressorEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/CompressorEMIRecipe.java index 5cadbc912..92826e125 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/CompressorEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/CompressorEMIRecipe.java @@ -25,8 +25,8 @@ public class CompressorEMIRecipe implements EmiRecipe { private final List output; public CompressorEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); - this.input = List.of(EmiIngredient.of(recipe.value().getInputItem(), recipe.value().getInputCount())); + this.id = recipe.id().getValue(); + this.input = List.of(EmiIngredient.of(recipe.value().getInput().input(), recipe.value().getInput().count())); this.output = List.of(EmiStack.of(recipe.value().getOutputItem())); } diff --git a/src/main/java/me/jddev0/ep/integration/emi/CrusherEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/CrusherEMIRecipe.java index e62102fdc..08c3885e6 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/CrusherEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/CrusherEMIRecipe.java @@ -25,7 +25,7 @@ public class CrusherEMIRecipe implements EmiRecipe { private final List output; public CrusherEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(recipe.value().getInputItem())); this.output = List.of(EmiStack.of(recipe.value().getOutputItem())); } diff --git a/src/main/java/me/jddev0/ep/integration/emi/CrystalGrowthChamberEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/CrystalGrowthChamberEMIRecipe.java index 26082970d..61ca890b3 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/CrystalGrowthChamberEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/CrystalGrowthChamberEMIRecipe.java @@ -34,8 +34,8 @@ public class CrystalGrowthChamberEMIRecipe implements EmiRecipe { private final int ticks; public CrystalGrowthChamberEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); - this.input = List.of(EmiIngredient.of(recipe.value().getInput(), recipe.value().getInputCount())); + this.id = recipe.id().getValue(); + this.input = List.of(EmiIngredient.of(recipe.value().getInput().input(), recipe.value().getInput().count())); this.output = List.of(EmiStack.of(recipe.value().getMaxOutputCount())); this.outputWithPercentages = recipe.value().getOutput(); this.ticks = (int)(recipe.value().getTicks() * CrystalGrowthChamberBlockEntity.RECIPE_DURATION_MULTIPLIER); diff --git a/src/main/java/me/jddev0/ep/integration/emi/EnergizedPowerEMIPlugin.java b/src/main/java/me/jddev0/ep/integration/emi/EnergizedPowerEMIPlugin.java index 4637cc917..12bf3b2d0 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/EnergizedPowerEMIPlugin.java +++ b/src/main/java/me/jddev0/ep/integration/emi/EnergizedPowerEMIPlugin.java @@ -4,17 +4,10 @@ import dev.emi.emi.api.EmiRegistry; import dev.emi.emi.api.recipe.VanillaEmiRecipeCategories; import dev.emi.emi.api.stack.EmiStack; -import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.item.EPItems; -import me.jddev0.ep.recipe.*; import me.jddev0.ep.screen.EPMenuTypes; -import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; -import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.RecipeManager; -import net.minecraft.registry.tag.ItemTags; public class EnergizedPowerEMIPlugin implements EmiPlugin { @@ -111,6 +104,8 @@ private void registerCategories(EmiRegistry registry) { private void registerRecipes(EmiRegistry registry) { RecipeManager recipeManager = registry.getRecipeManager(); + //TODO fix + /* for(RecipeEntry recipe:recipeManager.listAllOfType(ChargerRecipe.Type.INSTANCE)) registry.addRecipe(new ChargerEMIRecipe(recipe)); @@ -170,7 +165,7 @@ private void registerRecipes(EmiRegistry registry) { registry.addRecipe(new InWorldEMIRecipe(new InWorldEMIRecipe.InWorldRecipe( EPAPI.id("in_world_crafting/energizedpower/cable_insulator"), Ingredient.fromTag(ConventionalItemTags.SHEAR_TOOLS), Ingredient.fromTag(ItemTags.WOOL), - new ItemStack(EPItems.CABLE_INSULATOR, 18)))); + new ItemStack(EPItems.CABLE_INSULATOR, 18))));*/ } private void registerRecipeHandlers(EmiRegistry registry) { diff --git a/src/main/java/me/jddev0/ep/integration/emi/EnergizerEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/EnergizerEMIRecipe.java index e7f452163..cf424844a 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/EnergizerEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/EnergizerEMIRecipe.java @@ -31,7 +31,7 @@ public class EnergizerEMIRecipe implements EmiRecipe { private final long energyConsumption; public EnergizerEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(recipe.value().getInputItem())); this.output = List.of(EmiStack.of(recipe.value().getOutputItem())); this.energyConsumption = (long)(recipe.value().getEnergyConsumption() * EnergizerBlockEntity.ENERGY_CONSUMPTION_MULTIPLIER); diff --git a/src/main/java/me/jddev0/ep/integration/emi/FiltrationPlantEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/FiltrationPlantEMIRecipe.java index b9aa51d52..30103e499 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/FiltrationPlantEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/FiltrationPlantEMIRecipe.java @@ -34,7 +34,7 @@ public class FiltrationPlantEMIRecipe implements EmiRecipe { private final OutputItemStackWithPercentages secondaryOutputWithPercentages; public FiltrationPlantEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiStack.of(EPFluids.DIRTY_WATER, FiltrationPlantBlockEntity.DIRTY_WATER_CONSUMPTION_PER_RECIPE)); this.output = Arrays.stream(recipe.value().getMaxOutputCounts()).filter(itemStack -> !itemStack.isEmpty()).map(EmiStack::of).toList(); diff --git a/src/main/java/me/jddev0/ep/integration/emi/FluidTransposerEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/FluidTransposerEMIRecipe.java index 43816095e..e74280ea9 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/FluidTransposerEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/FluidTransposerEMIRecipe.java @@ -29,7 +29,7 @@ public class FluidTransposerEMIRecipe implements EmiRecipe { private final List output; public FluidTransposerEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.mode = recipe.value().getMode(); diff --git a/src/main/java/me/jddev0/ep/integration/emi/MetalPressEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/MetalPressEMIRecipe.java index c426a1815..8368b05f8 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/MetalPressEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/MetalPressEMIRecipe.java @@ -9,7 +9,6 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.recipe.MetalPressRecipe; -import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.RecipeEntry; import net.minecraft.util.Identifier; @@ -27,9 +26,9 @@ public class MetalPressEMIRecipe implements EmiRecipe { private final List output; public MetalPressEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); - this.catalysts = List.of(EmiIngredient.of(Ingredient.ofStacks(recipe.value().getPressMold()))); - this.input = List.of(EmiIngredient.of(recipe.value().getInput(), recipe.value().getInputCount())); + this.id = recipe.id().getValue(); + this.catalysts = List.of(EmiStack.of(recipe.value().getPressMold())); + this.input = List.of(EmiIngredient.of(recipe.value().getInput().input(), recipe.value().getInput().count())); this.output = List.of(EmiStack.of(recipe.value().getOutput())); } diff --git a/src/main/java/me/jddev0/ep/integration/emi/PlantGrowthChamberEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/PlantGrowthChamberEMIRecipe.java index cf6e4728b..c39e9b1ce 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/PlantGrowthChamberEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/PlantGrowthChamberEMIRecipe.java @@ -33,7 +33,7 @@ public class PlantGrowthChamberEMIRecipe implements EmiRecipe { private final int ticks; public PlantGrowthChamberEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(recipe.value().getInput())); this.output = Arrays.stream(recipe.value().getMaxOutputCounts()).map(EmiStack::of).toList(); this.outputsWithPercentages = recipe.value().getOutputs(); @@ -97,7 +97,7 @@ public void addWidgets(WidgetHolder widgets) { Text oddsText = Text.translatable("recipes.energizedpower.transfer.output_percentages"); if(i >= 4 || i + 4 < outputsWithPercentages.length) { - outputSlot.appendTooltip(Text.translatable(outputsWithPercentages[i].output().getTranslationKey()). + outputSlot.appendTooltip(Text.empty().append(outputsWithPercentages[i].output().getName()). append(Text.literal(": ").append(oddsText))); }else { outputSlot.appendTooltip(oddsText); diff --git a/src/main/java/me/jddev0/ep/integration/emi/PlantGrowthChamberFertilizerEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/PlantGrowthChamberFertilizerEMIRecipe.java index 83ddd21fe..c402059af 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/PlantGrowthChamberFertilizerEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/PlantGrowthChamberFertilizerEMIRecipe.java @@ -29,7 +29,7 @@ public class PlantGrowthChamberFertilizerEMIRecipe implements EmiRecipe { private final double energyConsumptionMultiplier; public PlantGrowthChamberFertilizerEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(recipe.value().getInput())); this.speedMultiplier = recipe.value().getSpeedMultiplier(); this.energyConsumptionMultiplier = recipe.value().getEnergyConsumptionMultiplier(); diff --git a/src/main/java/me/jddev0/ep/integration/emi/PressMoldMakerEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/PressMoldMakerEMIRecipe.java index dafcdfdb7..bf8a25b1e 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/PressMoldMakerEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/PressMoldMakerEMIRecipe.java @@ -27,7 +27,7 @@ public class PressMoldMakerEMIRecipe implements EmiRecipe { private final List output; public PressMoldMakerEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(Ingredient.ofItems(Items.CLAY_BALL), recipe.value().getClayCount())); this.output = List.of(EmiStack.of(recipe.value().getOutput())); } diff --git a/src/main/java/me/jddev0/ep/integration/emi/PulverizerEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/PulverizerEMIRecipe.java index 6c1937784..53dec2b2e 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/PulverizerEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/PulverizerEMIRecipe.java @@ -31,7 +31,7 @@ public class PulverizerEMIRecipe implements EmiRecipe { private final PulverizerRecipe.OutputItemStackWithPercentages secondaryOutputWithPercentages; public PulverizerEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(recipe.value().getInput())); this.output = Arrays.stream(recipe.value().getMaxOutputCounts(false)).filter(itemStack -> !itemStack.isEmpty()).map(EmiStack::of).toList(); diff --git a/src/main/java/me/jddev0/ep/integration/emi/SawmillEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/SawmillEMIRecipe.java index 147b6884b..f341616e2 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/SawmillEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/SawmillEMIRecipe.java @@ -25,7 +25,7 @@ public class SawmillEMIRecipe implements EmiRecipe { private final List output; public SawmillEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of(EmiIngredient.of(recipe.value().getInputItem())); EmiStack emiOutputItem = EmiStack.of(recipe.value().getOutputItem()); diff --git a/src/main/java/me/jddev0/ep/integration/emi/StoneSolidifierEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/StoneSolidifierEMIRecipe.java index 753114fe7..62a68a467 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/StoneSolidifierEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/StoneSolidifierEMIRecipe.java @@ -27,7 +27,7 @@ public class StoneSolidifierEMIRecipe implements EmiRecipe { private final List output; public StoneSolidifierEMIRecipe(RecipeEntry recipe) { - this.id = recipe.id(); + this.id = recipe.id().getValue(); this.input = List.of( EmiStack.of(Fluids.WATER, FluidUtils.convertMilliBucketsToDroplets(recipe.value().getWaterAmount())), EmiStack.of(Fluids.LAVA, FluidUtils.convertMilliBucketsToDroplets(recipe.value().getLavaAmount())) diff --git a/src/main/java/me/jddev0/ep/integration/rei/AdvancedAutoCrafterTransferHandler.java b/src/main/java/me/jddev0/ep/integration/rei/AdvancedAutoCrafterTransferHandler.java index cba1ec6ce..978e2d219 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/AdvancedAutoCrafterTransferHandler.java +++ b/src/main/java/me/jddev0/ep/integration/rei/AdvancedAutoCrafterTransferHandler.java @@ -3,20 +3,20 @@ import me.jddev0.ep.networking.ModMessages; import me.jddev0.ep.networking.packet.SetAdvancedAutoCrafterPatternInputSlotsC2SPacket; import me.jddev0.ep.screen.AdvancedAutoCrafterMenu; -import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; import me.shedaniel.rei.api.client.registry.transfer.TransferHandler; import me.shedaniel.rei.api.common.display.Display; -import me.shedaniel.rei.api.common.entry.EntryIngredient; +import me.shedaniel.rei.api.common.display.SimpleGridMenuDisplay; import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.api.common.entry.InputIngredient; import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.CraftingRecipe; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; +import java.util.Optional; public class AdvancedAutoCrafterTransferHandler implements TransferHandler { @Override @@ -25,11 +25,14 @@ public Result handle(Context context) { return Result.createNotApplicable(); Display display = context.getDisplay(); - Object origin = DisplayRegistry.getInstance().getDisplayOrigin(display); - if(!(origin instanceof RecipeEntry recipeEntry) || !(recipeEntry.value() instanceof CraftingRecipe recipe)) + if(!(display instanceof SimpleGridMenuDisplay simpleGridMenuDisplay)) return Result.createNotApplicable(); - if(!recipe.fits(3, 3)) + Optional recipeIdOptional = display.getDisplayLocation(); + if(recipeIdOptional.isEmpty()) + return Result.createNotApplicable(); + + if(simpleGridMenuDisplay.getWidth() > 3 || simpleGridMenuDisplay.getHeight() > 3) return Result.createFailed(Text.translatable("recipes.energizedpower.transfer.too_large")); if(!context.isActuallyCrafting()) @@ -37,30 +40,21 @@ public Result handle(Context context) { List itemStacks = new ArrayList<>(9); - List inputSlots = display.getInputEntries(); + List>> inputSlots = display.getInputIngredients(null, null); int len = Math.min(inputSlots.size(), 9); for(int i = 0;i < len;i++) { - EntryStack entryStack = inputSlots.get(i).stream().findAny().orElse(EntryStacks.of(ItemStack.EMPTY)); + EntryStack entryStack = inputSlots.get(i).get().stream().findAny().orElse(EntryStacks.of(ItemStack.EMPTY)); if(entryStack.getType() != VanillaEntryTypes.ITEM) return Result.createNotApplicable(); itemStacks.add(entryStack.castValue()); - - if((recipe.fits(1, 2) || recipe.fits(1, 3))) { - //1xX recipe: Add 2nd and 3rd column items - itemStacks.add(ItemStack.EMPTY); - itemStacks.add(ItemStack.EMPTY); - }else if((recipe.fits(2, 2) || recipe.fits(2, 3)) && i % 2 == 1) { - //2xX recipe: Add 3rd column item - itemStacks.add(ItemStack.EMPTY); - } } while(itemStacks.size() < 9) itemStacks.add(ItemStack.EMPTY); ModMessages.sendClientPacketToServer(new SetAdvancedAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getPos(), - itemStacks, recipeEntry.id())); + itemStacks, recipeIdOptional.get())); return Result.createSuccessful().blocksFurtherHandling(); } diff --git a/src/main/java/me/jddev0/ep/integration/rei/AdvancedPulverizerCategory.java b/src/main/java/me/jddev0/ep/integration/rei/AdvancedPulverizerCategory.java index b3fa60b46..2e232344c 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/AdvancedPulverizerCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/AdvancedPulverizerCategory.java @@ -19,13 +19,11 @@ import java.util.Locale; public class AdvancedPulverizerCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "advanced_pulverizer"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return AdvancedPulverizerDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/AdvancedPulverizerDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/AdvancedPulverizerDisplay.java index c26a3dce6..3f3a77098 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/AdvancedPulverizerDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/AdvancedPulverizerDisplay.java @@ -1,16 +1,47 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.PulverizerRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.Arrays; import java.util.List; +import java.util.Optional; public record AdvancedPulverizerDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "advanced_pulverizer"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.PULVERIZER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new AdvancedPulverizerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.PULVERIZER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new AdvancedPulverizerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -25,6 +56,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return AdvancedPulverizerCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/AlloyFurnaceCategory.java b/src/main/java/me/jddev0/ep/integration/rei/AlloyFurnaceCategory.java index 8b64e89b2..1d41beb56 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/AlloyFurnaceCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/AlloyFurnaceCategory.java @@ -1,6 +1,5 @@ package me.jddev0.ep.integration.rei; -import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.AlloyFurnaceBlockEntity; import me.shedaniel.math.Point; @@ -19,13 +18,11 @@ import java.util.Locale; public class AlloyFurnaceCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "alloy_furnace"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return AlloyFurnaceDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/AlloyFurnaceDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/AlloyFurnaceDisplay.java index 24be8eff1..07c7f3864 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/AlloyFurnaceDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/AlloyFurnaceDisplay.java @@ -1,21 +1,60 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.recipe.AlloyFurnaceRecipe; +import me.jddev0.ep.recipe.EPRecipes; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.item.ItemStack; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record AlloyFurnaceDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "alloy_furnace"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.ALLOY_FURNACE_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new AlloyFurnaceDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.ALLOY_FURNACE_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new AlloyFurnaceDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return Arrays.stream(recipe.value().getInputs()).map(input -> - EntryIngredients.ofItemStacks(Arrays.stream(input.input().getMatchingStacks()). + EntryIngredients.ofItemStacks(input.input().getMatchingItems().stream(). + map(RegistryEntry::getKeyOrValue). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().getOrThrow(RegistryKeys.ITEM).get(l)), + ItemStack::new + )). map(itemStack -> itemStack.copyWithCount(input.count())). collect(Collectors.toList()))).collect(Collectors.toList()); } @@ -27,6 +66,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return AlloyFurnaceCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/AssemblingMachineCategory.java b/src/main/java/me/jddev0/ep/integration/rei/AssemblingMachineCategory.java index 93f05506c..2a5faae07 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/AssemblingMachineCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/AssemblingMachineCategory.java @@ -17,13 +17,11 @@ import java.util.List; public class AssemblingMachineCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "assembling_machine"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return AssemblingMachineDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/AssemblingMachineDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/AssemblingMachineDisplay.java index 1ed3c31e8..49d6d092f 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/AssemblingMachineDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/AssemblingMachineDisplay.java @@ -1,21 +1,60 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.recipe.AssemblingMachineRecipe; +import me.jddev0.ep.recipe.EPRecipes; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.item.ItemStack; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record AssemblingMachineDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "assembling_machine"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.ASSEMBLING_MACHINE_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new AssemblingMachineDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.ASSEMBLING_MACHINE_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new AssemblingMachineDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return Arrays.stream(recipe.value().getInputs()).map(input -> - EntryIngredients.ofItemStacks(Arrays.stream(input.input().getMatchingStacks()). + EntryIngredients.ofItemStacks(input.input().getMatchingItems().stream(). + map(RegistryEntry::getKeyOrValue). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().getOrThrow(RegistryKeys.ITEM).get(l)), + ItemStack::new + )). map(itemStack -> itemStack.copyWithCount(input.count())). collect(Collectors.toList()))).collect(Collectors.toList()); } @@ -29,6 +68,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return AssemblingMachineCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/AutoCrafterTransferHandler.java b/src/main/java/me/jddev0/ep/integration/rei/AutoCrafterTransferHandler.java index bfc2e243b..ef32c34c9 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/AutoCrafterTransferHandler.java +++ b/src/main/java/me/jddev0/ep/integration/rei/AutoCrafterTransferHandler.java @@ -3,20 +3,20 @@ import me.jddev0.ep.networking.ModMessages; import me.jddev0.ep.networking.packet.SetAutoCrafterPatternInputSlotsC2SPacket; import me.jddev0.ep.screen.AutoCrafterMenu; -import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; import me.shedaniel.rei.api.client.registry.transfer.TransferHandler; import me.shedaniel.rei.api.common.display.Display; -import me.shedaniel.rei.api.common.entry.EntryIngredient; +import me.shedaniel.rei.api.common.display.SimpleGridMenuDisplay; import me.shedaniel.rei.api.common.entry.EntryStack; +import me.shedaniel.rei.api.common.entry.InputIngredient; import me.shedaniel.rei.api.common.entry.type.VanillaEntryTypes; import me.shedaniel.rei.api.common.util.EntryStacks; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.CraftingRecipe; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; +import java.util.Optional; public class AutoCrafterTransferHandler implements TransferHandler { @Override @@ -25,11 +25,14 @@ public Result handle(Context context) { return Result.createNotApplicable(); Display display = context.getDisplay(); - Object origin = DisplayRegistry.getInstance().getDisplayOrigin(display); - if(!(origin instanceof RecipeEntry recipeEntry) || !(recipeEntry.value() instanceof CraftingRecipe recipe)) + if(!(display instanceof SimpleGridMenuDisplay simpleGridMenuDisplay)) return Result.createNotApplicable(); - if(!recipe.fits(3, 3)) + Optional recipeIdOptional = display.getDisplayLocation(); + if(recipeIdOptional.isEmpty()) + return Result.createNotApplicable(); + + if(simpleGridMenuDisplay.getWidth() > 3 || simpleGridMenuDisplay.getHeight() > 3) return Result.createFailed(Text.translatable("recipes.energizedpower.transfer.too_large")); if(!context.isActuallyCrafting()) @@ -37,30 +40,21 @@ public Result handle(Context context) { List itemStacks = new ArrayList<>(9); - List inputSlots = display.getInputEntries(); + List>> inputSlots = display.getInputIngredients(null, null); int len = Math.min(inputSlots.size(), 9); for(int i = 0;i < len;i++) { - EntryStack entryStack = inputSlots.get(i).stream().findAny().orElse(EntryStacks.of(ItemStack.EMPTY)); + EntryStack entryStack = inputSlots.get(i).get().stream().findAny().orElse(EntryStacks.of(ItemStack.EMPTY)); if(entryStack.getType() != VanillaEntryTypes.ITEM) return Result.createNotApplicable(); itemStacks.add(entryStack.castValue()); - - if((recipe.fits(1, 2) || recipe.fits(1, 3))) { - //1xX recipe: Add 2nd and 3rd column items - itemStacks.add(ItemStack.EMPTY); - itemStacks.add(ItemStack.EMPTY); - }else if((recipe.fits(2, 2) || recipe.fits(2, 3)) && i % 2 == 1) { - //2xX recipe: Add 3rd column item - itemStacks.add(ItemStack.EMPTY); - } } while(itemStacks.size() < 9) itemStacks.add(ItemStack.EMPTY); ModMessages.sendClientPacketToServer(new SetAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getPos(), - itemStacks, recipeEntry.id())); + itemStacks, recipeIdOptional.get())); return Result.createSuccessful().blocksFurtherHandling(); } diff --git a/src/main/java/me/jddev0/ep/integration/rei/ChargerCategory.java b/src/main/java/me/jddev0/ep/integration/rei/ChargerCategory.java index 54fcf55a2..a5b28a852 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/ChargerCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/ChargerCategory.java @@ -20,13 +20,11 @@ import java.util.List; public class ChargerCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "charger"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return ChargerDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/ChargerDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/ChargerDisplay.java index 9f3cea3c8..6a6064cd3 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/ChargerDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/ChargerDisplay.java @@ -1,15 +1,46 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.recipe.ChargerRecipe; +import me.jddev0.ep.recipe.EPRecipes; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Optional; public record ChargerDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "charger"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.CHARGER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new ChargerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.CHARGER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new ChargerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -26,6 +57,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return ChargerCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/CompressorCategory.java b/src/main/java/me/jddev0/ep/integration/rei/CompressorCategory.java index a10e7ea26..9a734710c 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/CompressorCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/CompressorCategory.java @@ -17,13 +17,11 @@ import java.util.List; public class CompressorCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "compressor"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return CompressorDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/CompressorDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/CompressorDisplay.java index b9cb92a5d..373c3c4cd 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/CompressorDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/CompressorDisplay.java @@ -1,22 +1,60 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.recipe.CompressorRecipe; +import me.jddev0.ep.recipe.EPRecipes; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.item.ItemStack; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; -import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record CompressorDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "compressor"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.COMPRESSOR_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new CompressorDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.COMPRESSOR_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new CompressorDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( - EntryIngredients.ofItemStacks(Arrays.stream(recipe.value().getInputItem().getMatchingStacks()). - map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). + EntryIngredients.ofItemStacks(recipe.value().getInput().input().getMatchingItems().stream(). + map(RegistryEntry::getKeyOrValue). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().getOrThrow(RegistryKeys.ITEM).get(l)), + ItemStack::new + )). + map(itemStack -> itemStack.copyWithCount(recipe.value().getInput().count())). collect(Collectors.toList())) ); } @@ -30,6 +68,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return CompressorCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/CrusherCategory.java b/src/main/java/me/jddev0/ep/integration/rei/CrusherCategory.java index 7c68aa086..ab91123bf 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/CrusherCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/CrusherCategory.java @@ -17,13 +17,11 @@ import java.util.List; public class CrusherCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "crusher"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return CrusherDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/CrusherDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/CrusherDisplay.java index ddc25dc36..745fbcd59 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/CrusherDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/CrusherDisplay.java @@ -1,15 +1,46 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.recipe.CrusherRecipe; +import me.jddev0.ep.recipe.EPRecipes; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Optional; public record CrusherDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "crusher"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.CRUSHER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new CrusherDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.CRUSHER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new CrusherDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -26,6 +57,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return CrusherCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/CrystalGrowthChamberCategory.java b/src/main/java/me/jddev0/ep/integration/rei/CrystalGrowthChamberCategory.java index a69ea54c6..ec7005dde 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/CrystalGrowthChamberCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/CrystalGrowthChamberCategory.java @@ -17,13 +17,11 @@ import java.util.*; public class CrystalGrowthChamberCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "crystal_growth_chamber"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return CrystalGrowthChamberDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/CrystalGrowthChamberDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/CrystalGrowthChamberDisplay.java index c1839f1a1..857acd969 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/CrystalGrowthChamberDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/CrystalGrowthChamberDisplay.java @@ -1,22 +1,60 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.recipe.CrystalGrowthChamberRecipe; +import me.jddev0.ep.recipe.EPRecipes; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.item.ItemStack; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; -import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record CrystalGrowthChamberDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "crystal_growth_chamber"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.CRYSTAL_GROWTH_CHAMBER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new CrystalGrowthChamberDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.CRYSTAL_GROWTH_CHAMBER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new CrystalGrowthChamberDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( - EntryIngredients.ofItemStacks(Arrays.stream(recipe.value().getInput().getMatchingStacks()). - map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). + EntryIngredients.ofItemStacks(recipe.value().getInput().input().getMatchingItems().stream(). + map(RegistryEntry::getKeyOrValue). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().getOrThrow(RegistryKeys.ITEM).get(l)), + ItemStack::new + )). + map(itemStack -> itemStack.copyWithCount(recipe.value().getInput().count())). collect(Collectors.toList())) ); } @@ -30,6 +68,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return CrystalGrowthChamberCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/DispenserCategory.java b/src/main/java/me/jddev0/ep/integration/rei/DispenserCategory.java index 157f56db9..5890c04c1 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/DispenserCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/DispenserCategory.java @@ -1,6 +1,5 @@ package me.jddev0.ep.integration.rei; -import me.jddev0.ep.api.EPAPI; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.gui.Renderer; @@ -16,13 +15,11 @@ import java.util.List; public class DispenserCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "dispenser"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return DispenserDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/DispenserDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/DispenserDisplay.java index 0cda7e587..2e48a6eaf 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/DispenserDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/DispenserDisplay.java @@ -1,16 +1,23 @@ package me.jddev0.ep.integration.rei; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.item.EPItems; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Optional; public class DispenserDisplay implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "dispenser"); + @Override public List getInputEntries() { return List.of( @@ -28,6 +35,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return DispenserCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.empty(); + } + + @Override + public @Nullable DisplaySerializer getSerializer() { + return null; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIClientPlugin.java b/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIClientPlugin.java new file mode 100644 index 000000000..53ea62068 --- /dev/null +++ b/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIClientPlugin.java @@ -0,0 +1,228 @@ +package me.jddev0.ep.integration.rei; + +import me.jddev0.ep.block.EPBlocks; +import me.jddev0.ep.item.EPItems; +import me.jddev0.ep.recipe.*; +import me.jddev0.ep.screen.*; +import me.jddev0.ep.screen.base.EnergyStorageContainerScreen; +import me.jddev0.ep.screen.base.IUpgradeModuleMenu; +import me.shedaniel.math.Rectangle; +import me.shedaniel.rei.api.client.plugins.REIClientPlugin; +import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; +import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; +import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry; +import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry; +import me.shedaniel.rei.api.common.category.CategoryIdentifier; +import me.shedaniel.rei.api.common.util.EntryIngredients; +import me.shedaniel.rei.api.common.util.EntryStacks; +import me.shedaniel.rei.plugin.common.BuiltinPlugin; +import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; +import net.minecraft.client.gui.screen.ingame.Generic3x3ContainerScreen; +import net.minecraft.item.Items; +import net.minecraft.recipe.StonecuttingRecipe; + +public class EnergizedPowerREIClientPlugin implements REIClientPlugin { + @Override + public String getPluginProviderName() { + return "EnergizedPowerClient"; + } + + @Override + public void registerCategories(CategoryRegistry registry) { + registry.addWorkstations(BuiltinPlugin.CRAFTING, EntryStacks.of(EPBlocks.AUTO_CRAFTER_ITEM)); + + registry.addWorkstations(BuiltinPlugin.CRAFTING, EntryStacks.of(EPBlocks.ADVANCED_AUTO_CRAFTER_ITEM)); + + registry.addWorkstations(BuiltinPlugin.SMELTING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM)); + registry.addWorkstations(BuiltinPlugin.BLASTING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM)); + registry.addWorkstations(BuiltinPlugin.SMOKING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM)); + + registry.addWorkstations(BuiltinPlugin.SMELTING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM)); + registry.addWorkstations(BuiltinPlugin.BLASTING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM)); + registry.addWorkstations(BuiltinPlugin.SMOKING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM)); + + registry.addWorkstations(BuiltinPlugin.STONE_CUTTING, EntryStacks.of(EPBlocks.AUTO_STONECUTTER_ITEM)); + + registry.addWorkstations(BuiltinPlugin.FUEL, EntryStacks.of(EPBlocks.COAL_ENGINE_ITEM)); + + registry.addWorkstations(BuiltinPlugin.FUEL, EntryStacks.of(EPItems.INVENTORY_COAL_ENGINE)); + + registry.add(new ChargerCategory()); + registry.addWorkstations(ChargerDisplay.CATEGORY, EntryStacks.of(EPBlocks.CHARGER_ITEM), + EntryStacks.of(EPBlocks.ADVANCED_CHARGER_ITEM)); + + registry.add(new CrusherCategory()); + registry.addWorkstations(CrusherDisplay.CATEGORY, EntryStacks.of(EPBlocks.CRUSHER_ITEM), + EntryStacks.of(EPBlocks.ADVANCED_CRUSHER_ITEM)); + + registry.add(new PulverizerCategory()); + registry.addWorkstations(PulverizerDisplay.CATEGORY, EntryStacks.of(EPBlocks.PULVERIZER_ITEM)); + + registry.add(new AdvancedPulverizerCategory()); + registry.addWorkstations(AdvancedPulverizerDisplay.CATEGORY, EntryStacks.of(EPBlocks.ADVANCED_PULVERIZER_ITEM)); + + registry.add(new SawmillCategory()); + registry.addWorkstations(SawmillDisplay.CATEGORY, EntryStacks.of(EPBlocks.SAWMILL_ITEM)); + + registry.add(new CompressorCategory()); + registry.addWorkstations(CompressorDisplay.CATEGORY, EntryStacks.of(EPBlocks.COMPRESSOR_ITEM)); + + registry.add(new MetalPressCategory()); + registry.addWorkstations(MetalPressDisplay.CATEGORY, EntryStacks.of(EPBlocks.METAL_PRESS_ITEM)); + + registry.add(new AssemblingMachineCategory()); + registry.addWorkstations(AssemblingMachineDisplay.CATEGORY, EntryStacks.of(EPBlocks.ASSEMBLING_MACHINE_ITEM)); + + registry.add(new PlantGrowthChamberCategory()); + registry.addWorkstations(PlantGrowthChamberDisplay.CATEGORY, EntryStacks.of(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM)); + + registry.add(new PlantGrowthChamberFertilizerCategory()); + registry.addWorkstations(PlantGrowthChamberFertilizerDisplay.CATEGORY, EntryStacks.of(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM)); + + registry.add(new EnergizerCategory()); + registry.addWorkstations(EnergizerDisplay.CATEGORY, EntryStacks.of(EPBlocks.ENERGIZER_ITEM)); + + registry.add(new CrystalGrowthChamberCategory()); + registry.addWorkstations(CrystalGrowthChamberDisplay.CATEGORY, EntryStacks.of(EPBlocks.CRYSTAL_GROWTH_CHAMBER_ITEM)); + + registry.add(new PressMoldMakerCategory()); + registry.addWorkstations(PressMoldMakerDisplay.CATEGORY, EntryStacks.of(EPBlocks.PRESS_MOLD_MAKER_ITEM)); + registry.addWorkstations(PressMoldMakerDisplay.CATEGORY, EntryStacks.of(EPBlocks.AUTO_PRESS_MOLD_MAKER_ITEM)); + + registry.add(new AlloyFurnaceCategory()); + registry.addWorkstations(AlloyFurnaceDisplay.CATEGORY, EntryStacks.of(EPBlocks.ALLOY_FURNACE_ITEM)); + registry.addWorkstations(AlloyFurnaceDisplay.CATEGORY, EntryStacks.of(EPBlocks.INDUCTION_SMELTER_ITEM)); + + registry.add(new StoneSolidifierCategory()); + registry.addWorkstations(StoneSolidifierDisplay.CATEGORY, EntryStacks.of(EPBlocks.STONE_SOLIDIFIER_ITEM)); + + registry.add(new FiltrationPlantCategory()); + registry.addWorkstations(FiltrationPlantDisplay.CATEGORY, EntryStacks.of(EPBlocks.FILTRATION_PLANT_ITEM)); + + registry.add(new FluidTransposerCategory()); + registry.addWorkstations(FluidTransposerDisplay.CATEGORY, EntryStacks.of(EPBlocks.FLUID_TRANSPOSER_ITEM)); + + + registry.add(new InWorldCategory()); + registry.addWorkstations(InWorldDisplay.CATEGORY, EntryIngredients.ofItemTag(ConventionalItemTags.SHEAR_TOOLS)); + + registry.add(new DispenserCategory()); + registry.addWorkstations(DispenserDisplay.CATEGORY, EntryIngredients.of(Items.DISPENSER)); + } + + @Override + public void registerTransferHandlers(TransferHandlerRegistry registry) { + registry.register(new AutoCrafterTransferHandler()); + + registry.register(new AdvancedAutoCrafterTransferHandler()); + + registry.register(new SelectableRecipeMachineTransferHandler<>(AutoPressMoldMakerMenu.class, + PressMoldMakerRecipe.class)); + + registry.register(new SelectableRecipeMachineTransferHandler<>(AutoStonecutterMenu.class, + StonecuttingRecipe.class)); + + registry.register(new SelectableRecipeMachineTransferHandler<>(StoneSolidifierMenu.class, + StoneSolidifierRecipe.class)); + + registry.register(new SelectableRecipeMachineTransferHandler<>(FiltrationPlantMenu.class, + FiltrationPlantRecipe.class)); + } + + @Override + public void registerDisplays(DisplayRegistry registry) { + registry.add(new InWorldDisplay()); + registry.add(new DispenserDisplay()); + } + + @Override + public void registerScreens(ScreenRegistry registry) { + registerRecipeClickArea(registry, new Rectangle(89, 34, 24, 17), + AutoCrafterScreen.class, BuiltinPlugin.CRAFTING); + + registerRecipeClickArea(registry, new Rectangle(89, 34, 24, 17), + AdvancedAutoCrafterScreen.class, BuiltinPlugin.CRAFTING); + + registerRecipeClickArea(registry, new Rectangle(80, 34, 24, 17), + PoweredFurnaceScreen.class, BuiltinPlugin.SMELTING, BuiltinPlugin.BLASTING, BuiltinPlugin.SMOKING); + + registerRecipeClickArea(registry, new Rectangle(43, 34, 18, 18), + AdvancedPoweredFurnaceScreen.class, BuiltinPlugin.SMELTING, BuiltinPlugin.BLASTING, BuiltinPlugin.SMOKING); + registerRecipeClickArea(registry, new Rectangle(97, 34, 18, 18), + AdvancedPoweredFurnaceScreen.class, BuiltinPlugin.SMELTING, BuiltinPlugin.BLASTING, BuiltinPlugin.SMOKING); + registerRecipeClickArea(registry, new Rectangle(151, 34, 18, 18), + AdvancedPoweredFurnaceScreen.class, BuiltinPlugin.SMELTING, BuiltinPlugin.BLASTING, BuiltinPlugin.SMOKING); + + registerRecipeClickArea(registry, new Rectangle(84, 43, 20, 17), + AutoStonecutterScreen.class, BuiltinPlugin.STONE_CUTTING); + + registerRecipeClickArea(registry, new Rectangle(79, 25, 18, 17), + CoalEngineScreen.class, BuiltinPlugin.FUEL); + + registry.registerContainerClickArea(new Rectangle(35, 36, 15, 15), + AlloyFurnaceScreen.class, BuiltinPlugin.FUEL); + + registerRecipeClickArea(registry, new Rectangle(25, 16, 40, 54), + ChargerScreen.class, ChargerDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(111, 16, 58, 54), + ChargerScreen.class, ChargerDisplay.CATEGORY); + + registerRecipeClickArea(registry, new Rectangle(80, 34, 24, 17), + CrusherScreen.class, CrusherDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(90, 34, 24, 17), + AdvancedCrusherScreen.class, CrusherDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(68, 34, 24, 17), + PulverizerScreen.class, PulverizerDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(90, 34, 24, 17), + AdvancedPulverizerScreen.class, AdvancedPulverizerDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(68, 34, 24, 17), + SawmillScreen.class, SawmillDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(79, 30, 26, 25), + CompressorScreen.class, CompressorDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(80, 41, 24, 10), + MetalPressScreen.class, MetalPressDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(100, 36, 24, 17), + AssemblingMachineScreen.class, AssemblingMachineDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(94, 34, 24, 17), + PlantGrowthChamberScreen.class, PlantGrowthChamberDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(34, 16, 18, 17), + PlantGrowthChamberScreen.class, PlantGrowthChamberFertilizerDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(34, 53, 18, 17), + PlantGrowthChamberScreen.class, PlantGrowthChamberFertilizerDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(89, 34, 24, 17), + EnergizerScreen.class, EnergizerDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(80, 34, 24, 17), + CrystalGrowthChamberScreen.class, CrystalGrowthChamberDisplay.CATEGORY); + registry.registerContainerClickArea(new Rectangle(7, 34, 18, 18), + PressMoldMakerScreen.class, PressMoldMakerDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(84, 43, 20, 17), + AutoPressMoldMakerScreen.class, PressMoldMakerDisplay.CATEGORY); + registry.registerContainerClickArea(new Rectangle(79, 34, 24, 17), + AlloyFurnaceScreen.class, AlloyFurnaceDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(104, 34, 24, 17), + InductionSmelterScreen.class, AlloyFurnaceDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(69, 45, 20, 14), + StoneSolidifierScreen.class, StoneSolidifierDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(123, 45, 20, 14), + StoneSolidifierScreen.class, StoneSolidifierDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(67, 35, 78, 8), + FiltrationPlantScreen.class, FiltrationPlantDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(67, 62, 78, 8), + FiltrationPlantScreen.class, FiltrationPlantDisplay.CATEGORY); + registerRecipeClickArea(registry, new Rectangle(114, 19, 20, 14), + FluidTransposerScreen.class, FluidTransposerDisplay.CATEGORY); + + registry.registerContainerClickArea(new Rectangle(7, 16, 54, 54), + Generic3x3ContainerScreen.class, DispenserDisplay.CATEGORY); + registry.registerContainerClickArea(new Rectangle(115, 16, 54, 54), + Generic3x3ContainerScreen.class, DispenserDisplay.CATEGORY); + } + + private > void + registerRecipeClickArea(ScreenRegistry registry, final Rectangle area, final Class containerScreenClass, + final CategoryIdentifier... recipeTypes) { + registry.registerClickArea(containerScreenClass, UpgradeModuleScreenClickArea.createRecipeClickArea( + containerScreenClass, area, recipeTypes + )); + } +} diff --git a/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIPlugin.java b/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIPlugin.java index f31357ca1..7eed09ea5 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIPlugin.java +++ b/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIPlugin.java @@ -1,248 +1,55 @@ package me.jddev0.ep.integration.rei; -import me.jddev0.ep.block.EPBlocks; -import me.jddev0.ep.item.EPItems; import me.jddev0.ep.recipe.*; -import me.jddev0.ep.screen.*; -import me.jddev0.ep.screen.base.EnergyStorageContainerScreen; -import me.jddev0.ep.screen.base.IUpgradeModuleMenu; -import me.shedaniel.math.Rectangle; -import me.shedaniel.rei.api.client.plugins.REIClientPlugin; -import me.shedaniel.rei.api.client.registry.category.CategoryRegistry; -import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; -import me.shedaniel.rei.api.client.registry.screen.ScreenRegistry; -import me.shedaniel.rei.api.client.registry.transfer.TransferHandlerRegistry; -import me.shedaniel.rei.api.common.category.CategoryIdentifier; -import me.shedaniel.rei.api.common.util.EntryIngredients; -import me.shedaniel.rei.api.common.util.EntryStacks; -import me.shedaniel.rei.plugin.common.BuiltinPlugin; -import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; -import net.minecraft.client.gui.screen.ingame.Generic3x3ContainerScreen; -import net.minecraft.item.Items; -import net.minecraft.recipe.StonecuttingRecipe; +import me.shedaniel.rei.api.common.display.DisplaySerializerRegistry; +import me.shedaniel.rei.api.common.plugins.REICommonPlugin; +import me.shedaniel.rei.api.common.registry.display.ServerDisplayRegistry; -public class EnergizedPowerREIPlugin implements REIClientPlugin { +public class EnergizedPowerREIPlugin implements REICommonPlugin { @Override public String getPluginProviderName() { return "EnergizedPower"; } @Override - public void registerCategories(CategoryRegistry registry) { - registry.addWorkstations(BuiltinPlugin.CRAFTING, EntryStacks.of(EPBlocks.AUTO_CRAFTER_ITEM)); - - registry.addWorkstations(BuiltinPlugin.CRAFTING, EntryStacks.of(EPBlocks.ADVANCED_AUTO_CRAFTER_ITEM)); - - registry.addWorkstations(BuiltinPlugin.SMELTING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM)); - registry.addWorkstations(BuiltinPlugin.BLASTING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM)); - registry.addWorkstations(BuiltinPlugin.SMOKING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM)); - - registry.addWorkstations(BuiltinPlugin.SMELTING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM)); - registry.addWorkstations(BuiltinPlugin.BLASTING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM)); - registry.addWorkstations(BuiltinPlugin.SMOKING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM)); - - registry.addWorkstations(BuiltinPlugin.STONE_CUTTING, EntryStacks.of(EPBlocks.AUTO_STONECUTTER_ITEM)); - - registry.addWorkstations(BuiltinPlugin.FUEL, EntryStacks.of(EPBlocks.COAL_ENGINE_ITEM)); - - registry.addWorkstations(BuiltinPlugin.FUEL, EntryStacks.of(EPItems.INVENTORY_COAL_ENGINE)); - - registry.add(new ChargerCategory()); - registry.addWorkstations(ChargerCategory.CATEGORY, EntryStacks.of(EPBlocks.CHARGER_ITEM), - EntryStacks.of(EPBlocks.ADVANCED_CHARGER_ITEM)); - - registry.add(new CrusherCategory()); - registry.addWorkstations(CrusherCategory.CATEGORY, EntryStacks.of(EPBlocks.CRUSHER_ITEM), - EntryStacks.of(EPBlocks.ADVANCED_CRUSHER_ITEM)); - - registry.add(new PulverizerCategory()); - registry.addWorkstations(PulverizerCategory.CATEGORY, EntryStacks.of(EPBlocks.PULVERIZER_ITEM)); - - registry.add(new AdvancedPulverizerCategory()); - registry.addWorkstations(AdvancedPulverizerCategory.CATEGORY, EntryStacks.of(EPBlocks.ADVANCED_PULVERIZER_ITEM)); - - registry.add(new SawmillCategory()); - registry.addWorkstations(SawmillCategory.CATEGORY, EntryStacks.of(EPBlocks.SAWMILL_ITEM)); - - registry.add(new CompressorCategory()); - registry.addWorkstations(CompressorCategory.CATEGORY, EntryStacks.of(EPBlocks.COMPRESSOR_ITEM)); - - registry.add(new MetalPressCategory()); - registry.addWorkstations(MetalPressCategory.CATEGORY, EntryStacks.of(EPBlocks.METAL_PRESS_ITEM)); - - registry.add(new AssemblingMachineCategory()); - registry.addWorkstations(AssemblingMachineCategory.CATEGORY, EntryStacks.of(EPBlocks.ASSEMBLING_MACHINE_ITEM)); - - registry.add(new PlantGrowthChamberCategory()); - registry.addWorkstations(PlantGrowthChamberCategory.CATEGORY, EntryStacks.of(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM)); - - registry.add(new PlantGrowthChamberFertilizerCategory()); - registry.addWorkstations(PlantGrowthChamberFertilizerCategory.CATEGORY, EntryStacks.of(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM)); - - registry.add(new EnergizerCategory()); - registry.addWorkstations(EnergizerCategory.CATEGORY, EntryStacks.of(EPBlocks.ENERGIZER_ITEM)); - - registry.add(new CrystalGrowthChamberCategory()); - registry.addWorkstations(CrystalGrowthChamberCategory.CATEGORY, EntryStacks.of(EPBlocks.CRYSTAL_GROWTH_CHAMBER_ITEM)); - - registry.add(new PressMoldMakerCategory()); - registry.addWorkstations(PressMoldMakerCategory.CATEGORY, EntryStacks.of(EPBlocks.PRESS_MOLD_MAKER_ITEM)); - registry.addWorkstations(PressMoldMakerCategory.CATEGORY, EntryStacks.of(EPBlocks.AUTO_PRESS_MOLD_MAKER_ITEM)); - - registry.add(new AlloyFurnaceCategory()); - registry.addWorkstations(AlloyFurnaceCategory.CATEGORY, EntryStacks.of(EPBlocks.ALLOY_FURNACE_ITEM)); - registry.addWorkstations(AlloyFurnaceCategory.CATEGORY, EntryStacks.of(EPBlocks.INDUCTION_SMELTER_ITEM)); - - registry.add(new StoneSolidifierCategory()); - registry.addWorkstations(StoneSolidifierCategory.CATEGORY, EntryStacks.of(EPBlocks.STONE_SOLIDIFIER_ITEM)); - - registry.add(new FiltrationPlantCategory()); - registry.addWorkstations(FiltrationPlantCategory.CATEGORY, EntryStacks.of(EPBlocks.FILTRATION_PLANT_ITEM)); - - registry.add(new FluidTransposerCategory()); - registry.addWorkstations(FluidTransposerCategory.CATEGORY, EntryStacks.of(EPBlocks.FLUID_TRANSPOSER_ITEM)); - - - registry.add(new InWorldCategory()); - registry.addWorkstations(InWorldCategory.CATEGORY, EntryIngredients.ofItemTag(ConventionalItemTags.SHEAR_TOOLS)); - - registry.add(new DispenserCategory()); - registry.addWorkstations(DispenserCategory.CATEGORY, EntryIngredients.of(Items.DISPENSER)); - } - - @Override - public void registerTransferHandlers(TransferHandlerRegistry registry) { - registry.register(new AutoCrafterTransferHandler()); - - registry.register(new AdvancedAutoCrafterTransferHandler()); - - registry.register(new SelectableRecipeMachineTransferHandler<>(AutoPressMoldMakerMenu.class, - PressMoldMakerRecipe.class)); - - registry.register(new SelectableRecipeMachineTransferHandler<>(AutoStonecutterMenu.class, - StonecuttingRecipe.class)); - - registry.register(new SelectableRecipeMachineTransferHandler<>(StoneSolidifierMenu.class, - StoneSolidifierRecipe.class)); - - registry.register(new SelectableRecipeMachineTransferHandler<>(FiltrationPlantMenu.class, - FiltrationPlantRecipe.class)); - } - - @Override - public void registerDisplays(DisplayRegistry registry) { - registry.registerRecipeFiller(ChargerRecipe.class, ChargerRecipe.Type.INSTANCE, ChargerDisplay::new); - registry.registerRecipeFiller(CrusherRecipe.class, CrusherRecipe.Type.INSTANCE, CrusherDisplay::new); - registry.registerRecipeFiller(PulverizerRecipe.class, PulverizerRecipe.Type.INSTANCE, PulverizerDisplay::new); - registry.registerRecipeFiller(PulverizerRecipe.class, PulverizerRecipe.Type.INSTANCE, AdvancedPulverizerDisplay::new); - registry.registerRecipeFiller(SawmillRecipe.class, SawmillRecipe.Type.INSTANCE, SawmillDisplay::new); - registry.registerRecipeFiller(CompressorRecipe.class, CompressorRecipe.Type.INSTANCE, CompressorDisplay::new); - registry.registerRecipeFiller(MetalPressRecipe.class, MetalPressRecipe.Type.INSTANCE, MetalPressDisplay::new); - registry.registerRecipeFiller(AssemblingMachineRecipe.class, AssemblingMachineRecipe.Type.INSTANCE, AssemblingMachineDisplay::new); - registry.registerRecipeFiller(PlantGrowthChamberRecipe.class, PlantGrowthChamberRecipe.Type.INSTANCE, - PlantGrowthChamberDisplay::new); - registry.registerRecipeFiller(PlantGrowthChamberFertilizerRecipe.class, PlantGrowthChamberFertilizerRecipe.Type.INSTANCE, - PlantGrowthChamberFertilizerDisplay::new); - registry.registerRecipeFiller(EnergizerRecipe.class, EnergizerRecipe.Type.INSTANCE, EnergizerDisplay::new); - registry.registerRecipeFiller(CrystalGrowthChamberRecipe.class, CrystalGrowthChamberRecipe.Type.INSTANCE, CrystalGrowthChamberDisplay::new); - registry.registerRecipeFiller(PressMoldMakerRecipe.class, PressMoldMakerRecipe.Type.INSTANCE, PressMoldMakerDisplay::new); - registry.registerRecipeFiller(AlloyFurnaceRecipe.class, AlloyFurnaceRecipe.Type.INSTANCE, AlloyFurnaceDisplay::new); - registry.registerRecipeFiller(StoneSolidifierRecipe.class, StoneSolidifierRecipe.Type.INSTANCE, StoneSolidifierDisplay::new); - registry.registerRecipeFiller(FiltrationPlantRecipe.class, FiltrationPlantRecipe.Type.INSTANCE, FiltrationPlantDisplay::new); - registry.registerRecipeFiller(FluidTransposerRecipe.class, FluidTransposerRecipe.Type.INSTANCE, FluidTransposerDisplay::new); - - registry.add(new InWorldDisplay()); - registry.add(new DispenserDisplay()); + public void registerDisplays(ServerDisplayRegistry registry) { + registry.beginRecipeFiller(ChargerRecipe.class).filterType(EPRecipes.CHARGER_TYPE).fill(ChargerDisplay::new); + registry.beginRecipeFiller(CrusherRecipe.class).filterType(EPRecipes.CRUSHER_TYPE).fill(CrusherDisplay::new); + registry.beginRecipeFiller(PulverizerRecipe.class).filterType(EPRecipes.PULVERIZER_TYPE).fill(PulverizerDisplay::new); + registry.beginRecipeFiller(PulverizerRecipe.class).filterType(EPRecipes.PULVERIZER_TYPE).fill(AdvancedPulverizerDisplay::new); + registry.beginRecipeFiller(SawmillRecipe.class).filterType(EPRecipes.SAWMILL_TYPE).fill(SawmillDisplay::new); + registry.beginRecipeFiller(CompressorRecipe.class).filterType(EPRecipes.COMPRESSOR_TYPE).fill(CompressorDisplay::new); + registry.beginRecipeFiller(MetalPressRecipe.class).filterType(EPRecipes.METAL_PRESS_TYPE).fill(MetalPressDisplay::new); + registry.beginRecipeFiller(AssemblingMachineRecipe.class).filterType(EPRecipes.ASSEMBLING_MACHINE_TYPE).fill(AssemblingMachineDisplay::new); + registry.beginRecipeFiller(PlantGrowthChamberRecipe.class).filterType(EPRecipes.PLANT_GROWTH_CHAMBER_TYPE).fill(PlantGrowthChamberDisplay::new); + registry.beginRecipeFiller(PlantGrowthChamberFertilizerRecipe.class).filterType(EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_TYPE).fill(PlantGrowthChamberFertilizerDisplay::new); + registry.beginRecipeFiller(EnergizerRecipe.class).filterType(EPRecipes.ENERGIZER_TYPE).fill(EnergizerDisplay::new); + registry.beginRecipeFiller(CrystalGrowthChamberRecipe.class).filterType(EPRecipes.CRYSTAL_GROWTH_CHAMBER_TYPE).fill(CrystalGrowthChamberDisplay::new); + registry.beginRecipeFiller(PressMoldMakerRecipe.class).filterType(EPRecipes.PRESS_MOLD_MAKER_TYPE).fill(PressMoldMakerDisplay::new); + registry.beginRecipeFiller(AlloyFurnaceRecipe.class).filterType(EPRecipes.ALLOY_FURNACE_TYPE).fill(AlloyFurnaceDisplay::new); + registry.beginRecipeFiller(StoneSolidifierRecipe.class).filterType(EPRecipes.STONE_SOLIDIFIER_TYPE).fill(StoneSolidifierDisplay::new); + registry.beginRecipeFiller(FiltrationPlantRecipe.class).filterType(EPRecipes.FILTRATION_PLANT_TYPE).fill(FiltrationPlantDisplay::new); + registry.beginRecipeFiller(FluidTransposerRecipe.class).filterType(EPRecipes.FLUID_TRANSPOSER_TYPE).fill(FluidTransposerDisplay::new); } @Override - public void registerScreens(ScreenRegistry registry) { - registerRecipeClickArea(registry, new Rectangle(89, 34, 24, 17), - AutoCrafterScreen.class, BuiltinPlugin.CRAFTING); - - registerRecipeClickArea(registry, new Rectangle(89, 34, 24, 17), - AdvancedAutoCrafterScreen.class, BuiltinPlugin.CRAFTING); - - registerRecipeClickArea(registry, new Rectangle(80, 34, 24, 17), - PoweredFurnaceScreen.class, BuiltinPlugin.SMELTING, BuiltinPlugin.BLASTING, BuiltinPlugin.SMOKING); - - registerRecipeClickArea(registry, new Rectangle(43, 34, 18, 18), - AdvancedPoweredFurnaceScreen.class, BuiltinPlugin.SMELTING, BuiltinPlugin.BLASTING, BuiltinPlugin.SMOKING); - registerRecipeClickArea(registry, new Rectangle(97, 34, 18, 18), - AdvancedPoweredFurnaceScreen.class, BuiltinPlugin.SMELTING, BuiltinPlugin.BLASTING, BuiltinPlugin.SMOKING); - registerRecipeClickArea(registry, new Rectangle(151, 34, 18, 18), - AdvancedPoweredFurnaceScreen.class, BuiltinPlugin.SMELTING, BuiltinPlugin.BLASTING, BuiltinPlugin.SMOKING); - - registerRecipeClickArea(registry, new Rectangle(84, 43, 20, 17), - AutoStonecutterScreen.class, BuiltinPlugin.STONE_CUTTING); - - registerRecipeClickArea(registry, new Rectangle(79, 25, 18, 17), - CoalEngineScreen.class, BuiltinPlugin.FUEL); - - registry.registerContainerClickArea(new Rectangle(35, 36, 15, 15), - AlloyFurnaceScreen.class, BuiltinPlugin.FUEL); - - registerRecipeClickArea(registry, new Rectangle(25, 16, 40, 54), - ChargerScreen.class, ChargerCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(111, 16, 58, 54), - ChargerScreen.class, ChargerCategory.CATEGORY); - - registerRecipeClickArea(registry, new Rectangle(80, 34, 24, 17), - CrusherScreen.class, CrusherCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(90, 34, 24, 17), - AdvancedCrusherScreen.class, CrusherCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(68, 34, 24, 17), - PulverizerScreen.class, PulverizerCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(90, 34, 24, 17), - AdvancedPulverizerScreen.class, AdvancedPulverizerCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(68, 34, 24, 17), - SawmillScreen.class, SawmillCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(79, 30, 26, 25), - CompressorScreen.class, CompressorCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(80, 41, 24, 10), - MetalPressScreen.class, MetalPressCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(100, 36, 24, 17), - AssemblingMachineScreen.class, AssemblingMachineCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(94, 34, 24, 17), - PlantGrowthChamberScreen.class, PlantGrowthChamberCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(34, 16, 18, 17), - PlantGrowthChamberScreen.class, PlantGrowthChamberFertilizerCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(34, 53, 18, 17), - PlantGrowthChamberScreen.class, PlantGrowthChamberFertilizerCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(89, 34, 24, 17), - EnergizerScreen.class, EnergizerCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(80, 34, 24, 17), - CrystalGrowthChamberScreen.class, CrystalGrowthChamberCategory.CATEGORY); - registry.registerContainerClickArea(new Rectangle(7, 34, 18, 18), - PressMoldMakerScreen.class, PressMoldMakerCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(84, 43, 20, 17), - AutoPressMoldMakerScreen.class, PressMoldMakerCategory.CATEGORY); - registry.registerContainerClickArea(new Rectangle(79, 34, 24, 17), - AlloyFurnaceScreen.class, AlloyFurnaceCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(104, 34, 24, 17), - InductionSmelterScreen.class, AlloyFurnaceCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(69, 45, 20, 14), - StoneSolidifierScreen.class, StoneSolidifierCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(123, 45, 20, 14), - StoneSolidifierScreen.class, StoneSolidifierCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(67, 35, 78, 8), - FiltrationPlantScreen.class, FiltrationPlantCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(67, 62, 78, 8), - FiltrationPlantScreen.class, FiltrationPlantCategory.CATEGORY); - registerRecipeClickArea(registry, new Rectangle(114, 19, 20, 14), - FluidTransposerScreen.class, FluidTransposerCategory.CATEGORY); - - registry.registerContainerClickArea(new Rectangle(7, 16, 54, 54), - Generic3x3ContainerScreen.class, DispenserCategory.CATEGORY); - registry.registerContainerClickArea(new Rectangle(115, 16, 54, 54), - Generic3x3ContainerScreen.class, DispenserCategory.CATEGORY); - } - - private > void - registerRecipeClickArea(ScreenRegistry registry, final Rectangle area, final Class containerScreenClass, - final CategoryIdentifier... recipeTypes) { - registry.registerClickArea(containerScreenClass, UpgradeModuleScreenClickArea.createRecipeClickArea( - containerScreenClass, area, recipeTypes - )); + public void registerDisplaySerializer(DisplaySerializerRegistry registry) { + registry.register(ChargerDisplay.CATEGORY.getIdentifier(), ChargerDisplay.SERIALIZER); + registry.register(CrusherDisplay.CATEGORY.getIdentifier(), CrusherDisplay.SERIALIZER); + registry.register(PulverizerDisplay.CATEGORY.getIdentifier(), PulverizerDisplay.SERIALIZER); + registry.register(AdvancedPulverizerDisplay.CATEGORY.getIdentifier(), AdvancedPulverizerDisplay.SERIALIZER); + registry.register(SawmillDisplay.CATEGORY.getIdentifier(), SawmillDisplay.SERIALIZER); + registry.register(CompressorDisplay.CATEGORY.getIdentifier(), CompressorDisplay.SERIALIZER); + registry.register(MetalPressDisplay.CATEGORY.getIdentifier(), MetalPressDisplay.SERIALIZER); + registry.register(AssemblingMachineDisplay.CATEGORY.getIdentifier(), AssemblingMachineDisplay.SERIALIZER); + registry.register(PlantGrowthChamberDisplay.CATEGORY.getIdentifier(), PlantGrowthChamberDisplay.SERIALIZER); + registry.register(PlantGrowthChamberFertilizerDisplay.CATEGORY.getIdentifier(), PlantGrowthChamberFertilizerDisplay.SERIALIZER); + registry.register(EnergizerDisplay.CATEGORY.getIdentifier(), EnergizerDisplay.SERIALIZER); + registry.register(CrystalGrowthChamberDisplay.CATEGORY.getIdentifier(), CrystalGrowthChamberDisplay.SERIALIZER); + registry.register(PressMoldMakerDisplay.CATEGORY.getIdentifier(), PressMoldMakerDisplay.SERIALIZER); + registry.register(AlloyFurnaceDisplay.CATEGORY.getIdentifier(), AlloyFurnaceDisplay.SERIALIZER); + registry.register(StoneSolidifierDisplay.CATEGORY.getIdentifier(), StoneSolidifierDisplay.SERIALIZER); + registry.register(FiltrationPlantDisplay.CATEGORY.getIdentifier(), FiltrationPlantDisplay.SERIALIZER); + registry.register(FluidTransposerDisplay.CATEGORY.getIdentifier(), FluidTransposerDisplay.SERIALIZER); } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/EnergizerCategory.java b/src/main/java/me/jddev0/ep/integration/rei/EnergizerCategory.java index b79a2d6b8..5002540a9 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/EnergizerCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/EnergizerCategory.java @@ -20,13 +20,11 @@ import java.util.List; public class EnergizerCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "energizer"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return EnergizerDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/EnergizerDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/EnergizerDisplay.java index 819338873..6b7b44256 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/EnergizerDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/EnergizerDisplay.java @@ -1,15 +1,46 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.EnergizerRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Optional; public record EnergizerDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "energizer"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.ENERGIZER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new EnergizerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.ENERGIZER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new EnergizerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -26,6 +57,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return EnergizerCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/FiltrationPlantCategory.java b/src/main/java/me/jddev0/ep/integration/rei/FiltrationPlantCategory.java index ccf8a62fe..641e2fd91 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/FiltrationPlantCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/FiltrationPlantCategory.java @@ -1,6 +1,5 @@ package me.jddev0.ep.integration.rei; -import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.block.EPBlocks; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; @@ -18,13 +17,11 @@ import java.util.Locale; public class FiltrationPlantCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "filtration_plant"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return FiltrationPlantDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/FiltrationPlantDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/FiltrationPlantDisplay.java index 5b1ef59d3..b399b4446 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/FiltrationPlantDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/FiltrationPlantDisplay.java @@ -1,18 +1,49 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.block.entity.FiltrationPlantBlockEntity; import me.jddev0.ep.fluid.EPFluids; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.FiltrationPlantRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.Arrays; import java.util.List; +import java.util.Optional; public record FiltrationPlantDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "filtration_plant"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.FILTRATION_PLANT_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new FiltrationPlantDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.FILTRATION_PLANT_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new FiltrationPlantDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -27,6 +58,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return FiltrationPlantCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/FluidTransposerCategory.java b/src/main/java/me/jddev0/ep/integration/rei/FluidTransposerCategory.java index 99729bfb0..b1ece10a3 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/FluidTransposerCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/FluidTransposerCategory.java @@ -18,13 +18,11 @@ import java.util.List; public class FluidTransposerCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "fluid_transposer"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return FluidTransposerDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/FluidTransposerDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/FluidTransposerDisplay.java index fbcb778e9..14d8bc38c 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/FluidTransposerDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/FluidTransposerDisplay.java @@ -1,17 +1,48 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.block.entity.FluidTransposerBlockEntity; import me.jddev0.ep.fluid.FluidStack; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.FluidTransposerRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Optional; public record FluidTransposerDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "fluid_transposer"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.FLUID_TRANSPOSER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new FluidTransposerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.FLUID_TRANSPOSER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new FluidTransposerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { FluidStack fluid = recipe.value().getFluid(); @@ -48,6 +79,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return FluidTransposerCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/InWorldCategory.java b/src/main/java/me/jddev0/ep/integration/rei/InWorldCategory.java index 17e68d335..73da942c6 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/InWorldCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/InWorldCategory.java @@ -1,6 +1,5 @@ package me.jddev0.ep.integration.rei; -import me.jddev0.ep.api.EPAPI; import me.shedaniel.math.Point; import me.shedaniel.math.Rectangle; import me.shedaniel.rei.api.client.gui.Renderer; @@ -16,13 +15,11 @@ import java.util.List; public class InWorldCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "in_world"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return InWorldDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/InWorldDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/InWorldDisplay.java index e1a947ec0..75a1c54ef 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/InWorldDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/InWorldDisplay.java @@ -1,16 +1,23 @@ package me.jddev0.ep.integration.rei; +import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.item.EPItems; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags; import net.minecraft.registry.tag.ItemTags; +import net.minecraft.util.Identifier; +import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.Optional; public class InWorldDisplay implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "in_world"); + @Override public List getInputEntries() { return List.of( @@ -28,6 +35,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return InWorldCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.empty(); + } + + @Override + public @Nullable DisplaySerializer getSerializer() { + return null; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/MetalPressCategory.java b/src/main/java/me/jddev0/ep/integration/rei/MetalPressCategory.java index 91783e818..d9acb71cf 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/MetalPressCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/MetalPressCategory.java @@ -17,13 +17,11 @@ import java.util.List; public class MetalPressCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "metal_press"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return MetalPressDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/MetalPressDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/MetalPressDisplay.java index 9b74f3b9b..92fe2fbd6 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/MetalPressDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/MetalPressDisplay.java @@ -1,23 +1,61 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.MetalPressRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; +import me.shedaniel.rei.api.common.display.basic.BasicDisplay; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.item.ItemStack; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; +import net.minecraft.util.Identifier; -import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record MetalPressDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "metal_press"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.METAL_PRESS_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new MetalPressDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.METAL_PRESS_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new MetalPressDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( EntryIngredients.of(recipe.value().getPressMold()), - EntryIngredients.ofItemStacks(Arrays.stream(recipe.value().getInput().getMatchingStacks()). - map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). + EntryIngredients.ofItemStacks(recipe.value().getInput().input().getMatchingItems().stream(). + map(RegistryEntry::getKeyOrValue). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().getOrThrow(RegistryKeys.ITEM).get(l)), + ItemStack::new + )). + map(itemStack -> itemStack.copyWithCount(recipe.value().getInput().count())). collect(Collectors.toList())) ); } @@ -31,6 +69,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return MetalPressCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberCategory.java b/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberCategory.java index 0d204b912..457bedcca 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberCategory.java @@ -22,13 +22,11 @@ import java.util.Locale; public class PlantGrowthChamberCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "plant_growth_chamber"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return PlantGrowthChamberDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberDisplay.java index 56a52ddd4..5420d9666 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberDisplay.java @@ -1,16 +1,47 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.PlantGrowthChamberRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.Arrays; import java.util.List; +import java.util.Optional; public record PlantGrowthChamberDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "plant_growth_chamber"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.PLANT_GROWTH_CHAMBER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new PlantGrowthChamberDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.PLANT_GROWTH_CHAMBER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new PlantGrowthChamberDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -25,6 +56,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return PlantGrowthChamberCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberFertilizerCategory.java b/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberFertilizerCategory.java index 783108e0b..628adf017 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberFertilizerCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberFertilizerCategory.java @@ -17,13 +17,11 @@ import java.util.List; public class PlantGrowthChamberFertilizerCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "plant_growth_chamber_fertilizer"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return PlantGrowthChamberFertilizerDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberFertilizerDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberFertilizerDisplay.java index 50bf9f111..1a07c8864 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberFertilizerDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PlantGrowthChamberFertilizerDisplay.java @@ -1,15 +1,46 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.PlantGrowthChamberFertilizerRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Optional; public record PlantGrowthChamberFertilizerDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "plant_growth_chamber_fertilizer"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new PlantGrowthChamberFertilizerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new PlantGrowthChamberFertilizerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -24,6 +55,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return PlantGrowthChamberFertilizerCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerCategory.java b/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerCategory.java index dbe8970fd..e66096174 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerCategory.java @@ -16,13 +16,11 @@ import java.util.List; public class PressMoldMakerCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "press_mold_maker"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return PressMoldMakerDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerDisplay.java index e41d86d9c..cc0e19874 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerDisplay.java @@ -1,17 +1,48 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.PressMoldMakerRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Optional; public record PressMoldMakerDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "press_mold_maker"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.PRESS_MOLD_MAKER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new PressMoldMakerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.PRESS_MOLD_MAKER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new PressMoldMakerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -28,6 +59,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return PressMoldMakerCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/PulverizerCategory.java b/src/main/java/me/jddev0/ep/integration/rei/PulverizerCategory.java index 1e0838c96..30373505d 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PulverizerCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PulverizerCategory.java @@ -16,13 +16,11 @@ import java.util.*; public class PulverizerCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "pulverizer"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return PulverizerDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/PulverizerDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/PulverizerDisplay.java index 20a4f45f6..1587f9e84 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PulverizerDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PulverizerDisplay.java @@ -1,16 +1,47 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.PulverizerRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.Arrays; import java.util.List; +import java.util.Optional; public record PulverizerDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "pulverizer"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.PULVERIZER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new PulverizerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.PULVERIZER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new PulverizerDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -25,6 +56,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return PulverizerCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/SawmillCategory.java b/src/main/java/me/jddev0/ep/integration/rei/SawmillCategory.java index 7ad03eb29..6755d4f30 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/SawmillCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/SawmillCategory.java @@ -17,13 +17,11 @@ import java.util.List; public class SawmillCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "sawmill"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return SawmillDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/SawmillDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/SawmillDisplay.java index 1a2c6384d..8614adac6 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/SawmillDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/SawmillDisplay.java @@ -1,15 +1,46 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.SawmillRecipe; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Optional; public record SawmillDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "sawmill"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.SAWMILL_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new SawmillDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.SAWMILL_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new SawmillDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -27,6 +58,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return SawmillCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/integration/rei/SelectableRecipeMachineTransferHandler.java b/src/main/java/me/jddev0/ep/integration/rei/SelectableRecipeMachineTransferHandler.java index 0eff42805..6eacb30cd 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/SelectableRecipeMachineTransferHandler.java +++ b/src/main/java/me/jddev0/ep/integration/rei/SelectableRecipeMachineTransferHandler.java @@ -3,12 +3,13 @@ import me.jddev0.ep.networking.ModMessages; import me.jddev0.ep.networking.packet.SetCurrentRecipeIdC2SPacket; import me.jddev0.ep.screen.base.IConfigurableMenu; -import me.shedaniel.rei.api.client.registry.display.DisplayRegistry; import me.shedaniel.rei.api.client.registry.transfer.TransferHandler; import me.shedaniel.rei.api.common.display.Display; import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.ScreenHandler; +import net.minecraft.util.Identifier; + +import java.util.Optional; public class SelectableRecipeMachineTransferHandler > @@ -30,14 +31,14 @@ public Result handle(Context context) { M container = (M)context.getMenu(); Display display = context.getDisplay(); - Object origin = DisplayRegistry.getInstance().getDisplayOrigin(display); - if(!(origin instanceof RecipeEntry recipeEntry) || !recipeClass.isAssignableFrom(recipeEntry.value().getClass())) + Optional recipeIdOptional = display.getDisplayLocation(); + if(recipeIdOptional.isEmpty()) return Result.createNotApplicable(); if(!context.isActuallyCrafting()) return Result.createSuccessful().blocksFurtherHandling(); - ModMessages.sendClientPacketToServer(new SetCurrentRecipeIdC2SPacket(container.getBlockEntity().getPos(), recipeEntry.id())); + ModMessages.sendClientPacketToServer(new SetCurrentRecipeIdC2SPacket(container.getBlockEntity().getPos(), recipeIdOptional.get())); return Result.createSuccessful().blocksFurtherHandling(); } diff --git a/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierCategory.java b/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierCategory.java index b3c4464c5..44f3924f7 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierCategory.java @@ -16,13 +16,11 @@ import java.util.List; public class StoneSolidifierCategory implements DisplayCategory { - public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "stone_solidifier"); - private static final int PADDING = 5; @Override public CategoryIdentifier getCategoryIdentifier() { - return CATEGORY; + return StoneSolidifierDisplay.CATEGORY; } @Override diff --git a/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierDisplay.java b/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierDisplay.java index 75929566e..e7ba0958b 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierDisplay.java @@ -1,17 +1,48 @@ package me.jddev0.ep.integration.rei; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.recipe.StoneSolidifierRecipe; import me.jddev0.ep.util.FluidUtils; import me.shedaniel.rei.api.common.category.CategoryIdentifier; import me.shedaniel.rei.api.common.display.Display; +import me.shedaniel.rei.api.common.display.DisplaySerializer; import me.shedaniel.rei.api.common.entry.EntryIngredient; import me.shedaniel.rei.api.common.util.EntryIngredients; import net.minecraft.fluid.Fluids; +import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.RecipeEntry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import java.util.List; +import java.util.Optional; public record StoneSolidifierDisplay(RecipeEntry recipe) implements Display { + public static final CategoryIdentifier CATEGORY = CategoryIdentifier.of(EPAPI.MOD_ID, "stone_solidifier"); + public static final DisplaySerializer SERIALIZER = DisplaySerializer.of( + RecordCodecBuilder.mapCodec((instance) -> { + return instance.group(Identifier.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().getValue(); + }), EPRecipes.STONE_SOLIDIFIER_SERIALIZER.codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new StoneSolidifierDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + ))); + }), + PacketCodec.tuple( + Identifier.PACKET_CODEC, + display -> display.recipe.id().getValue(), + EPRecipes.STONE_SOLIDIFIER_SERIALIZER.packetCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new StoneSolidifierDisplay(new RecipeEntry<>( + RegistryKey.of(RegistryKeys.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -29,6 +60,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return StoneSolidifierCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().getValue()); + } + + @Override + public DisplaySerializer getSerializer() { + return SERIALIZER; } } diff --git a/src/main/java/me/jddev0/ep/item/AdvancedBatteryBoxMinecartItem.java b/src/main/java/me/jddev0/ep/item/AdvancedBatteryBoxMinecartItem.java index c25acc48d..7fe907e06 100644 --- a/src/main/java/me/jddev0/ep/item/AdvancedBatteryBoxMinecartItem.java +++ b/src/main/java/me/jddev0/ep/item/AdvancedBatteryBoxMinecartItem.java @@ -114,6 +114,6 @@ public ActionResult useOnBlock(ItemUsageContext useOnContext) { } itemStack.decrement(1); - return ActionResult.success(level.isClient); + return level.isClient?ActionResult.SUCCESS:ActionResult.SUCCESS_SERVER; } } diff --git a/src/main/java/me/jddev0/ep/item/BatteryBoxMinecartItem.java b/src/main/java/me/jddev0/ep/item/BatteryBoxMinecartItem.java index 722e75d54..2cb0c7ce2 100644 --- a/src/main/java/me/jddev0/ep/item/BatteryBoxMinecartItem.java +++ b/src/main/java/me/jddev0/ep/item/BatteryBoxMinecartItem.java @@ -114,6 +114,6 @@ public ActionResult useOnBlock(ItemUsageContext useOnContext) { } itemStack.decrement(1); - return ActionResult.success(level.isClient); + return level.isClient?ActionResult.SUCCESS:ActionResult.SUCCESS_SERVER; } } diff --git a/src/main/java/me/jddev0/ep/item/BatteryItem.java b/src/main/java/me/jddev0/ep/item/BatteryItem.java index 89832d603..add14d63d 100644 --- a/src/main/java/me/jddev0/ep/item/BatteryItem.java +++ b/src/main/java/me/jddev0/ep/item/BatteryItem.java @@ -9,15 +9,14 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.world.World; import java.util.List; public class BatteryItem extends EnergizedPowerEnergyItem { private final Tier tier; - public BatteryItem(Tier tier) { - super(new Settings().maxCount(1), tier.getCapacity(), tier.getMaxTransfer(), tier.getMaxTransfer()); + public BatteryItem(Settings props, Tier tier) { + super(props.maxCount(1), tier.getCapacity(), tier.getMaxTransfer(), tier.getMaxTransfer()); this.tier = tier; } diff --git a/src/main/java/me/jddev0/ep/item/CutterItem.java b/src/main/java/me/jddev0/ep/item/CutterItem.java index 06a9cda02..bb1505e25 100644 --- a/src/main/java/me/jddev0/ep/item/CutterItem.java +++ b/src/main/java/me/jddev0/ep/item/CutterItem.java @@ -4,23 +4,17 @@ import net.minecraft.block.BlockState; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolItem; -import net.minecraft.item.ToolMaterials; +import net.minecraft.item.ToolMaterial; import net.minecraft.util.Unit; import net.minecraft.util.math.random.Random; import me.jddev0.ep.block.CableBlock; -public class CutterItem extends ToolItem { +public class CutterItem extends Item { private final Random random = Random.create(); - public CutterItem(ToolMaterials tier, Item.Settings props) { - super(tier, props.component(EPDataComponentTypes.NO_REPAIR, Unit.INSTANCE)); - } - - @Override - public boolean canRepair(ItemStack itemStack, ItemStack ingredient) { - //TODO improve [Equivalent to setNoRepair needed] - return false; + public CutterItem(ToolMaterial tier, Item.Settings props) { + super(props.component(EPDataComponentTypes.NO_REPAIR, Unit.INSTANCE). + maxDamage(tier.durability()).repairable(tier.repairItems()).enchantable(tier.enchantmentValue())); } @Override @@ -38,11 +32,6 @@ public ItemStack getRecipeRemainder(ItemStack itemStack) { return copy; } - @Override - public boolean hasRecipeRemainder() { - return true; - } - @Override public float getMiningSpeed(ItemStack itemStack, BlockState blockState) { if(blockState.getBlock() instanceof CableBlock) diff --git a/src/main/java/me/jddev0/ep/item/EPItems.java b/src/main/java/me/jddev0/ep/item/EPItems.java index 8e4552754..a22ad0505 100644 --- a/src/main/java/me/jddev0/ep/item/EPItems.java +++ b/src/main/java/me/jddev0/ep/item/EPItems.java @@ -5,297 +5,267 @@ import me.jddev0.ep.item.energy.EnergizedPowerEnergyItem; import me.jddev0.ep.item.energy.EnergizedPowerEnergyItemStorage; import net.minecraft.item.Item; -import net.minecraft.item.ToolMaterials; +import net.minecraft.item.ToolMaterial; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.util.Identifier; import team.reborn.energy.api.EnergyStorage; +import java.util.function.Function; + public final class EPItems { private EPItems() {} - public static Item registerItem(String name, Item item) { - return Registry.register(Registries.ITEM, EPAPI.id(name), item); + public static Item registerItem(String name) { + return registerItem(name, Item::new, new Item.Settings()); } - public static final Item ENERGIZED_COPPER_INGOT = registerItem("energized_copper_ingot", - new Item(new Item.Settings())); - public static final Item ENERGIZED_GOLD_INGOT = registerItem("energized_gold_ingot", - new Item(new Item.Settings())); + public static Item registerItem(String name, Item.Settings props) { + return registerItem(name, Item::new, props); + } - public static final Item ENERGIZED_COPPER_PLATE = registerItem("energized_copper_plate", - new Item(new Item.Settings())); - public static final Item ENERGIZED_GOLD_PLATE = registerItem("energized_gold_plate", - new Item(new Item.Settings())); + public static Item registerItem(String name, Function factory) { + return registerItem(name, factory, new Item.Settings()); + } + + public static T registerItem(String name, Function factory, Item.Settings props) { + Identifier itemId = EPAPI.id(name); + return Registry.register(Registries.ITEM, itemId, factory.apply(props. + registryKey(RegistryKey.of(RegistryKeys.ITEM, itemId)))); + } - public static final Item ENERGIZED_COPPER_WIRE = registerItem("energized_copper_wire", - new Item(new Item.Settings())); - public static final Item ENERGIZED_GOLD_WIRE = registerItem("energized_gold_wire", - new Item(new Item.Settings())); + public static final Item ENERGIZED_COPPER_INGOT = registerItem("energized_copper_ingot"); + public static final Item ENERGIZED_GOLD_INGOT = registerItem("energized_gold_ingot"); - public static final Item SILICON = registerItem("silicon", - new Item(new Item.Settings())); + public static final Item ENERGIZED_COPPER_PLATE = registerItem("energized_copper_plate"); + public static final Item ENERGIZED_GOLD_PLATE = registerItem("energized_gold_plate"); - public static final Item STONE_PEBBLE = registerItem("stone_pebble", - new Item(new Item.Settings())); + public static final Item ENERGIZED_COPPER_WIRE = registerItem("energized_copper_wire"); + public static final Item ENERGIZED_GOLD_WIRE = registerItem("energized_gold_wire"); - public static final Item RAW_TIN = registerItem("raw_tin", - new Item(new Item.Settings())); + public static final Item SILICON = registerItem("silicon"); - public static final Item TIN_DUST = registerItem("tin_dust", - new Item(new Item.Settings())); - public static final Item COPPER_DUST = registerItem("copper_dust", - new Item(new Item.Settings())); - public static final Item IRON_DUST = registerItem("iron_dust", - new Item(new Item.Settings())); - public static final Item GOLD_DUST = registerItem("gold_dust", - new Item(new Item.Settings())); + public static final Item STONE_PEBBLE = registerItem("stone_pebble"); - public static final Item TIN_NUGGET = registerItem("tin_nugget", - new Item(new Item.Settings())); + public static final Item RAW_TIN = registerItem("raw_tin"); - public static final Item TIN_INGOT = registerItem("tin_ingot", - new Item(new Item.Settings())); + public static final Item TIN_DUST = registerItem("tin_dust"); + public static final Item COPPER_DUST = registerItem("copper_dust"); + public static final Item IRON_DUST = registerItem("iron_dust"); + public static final Item GOLD_DUST = registerItem("gold_dust"); - public static final Item TIN_PLATE = registerItem("tin_plate", - new Item(new Item.Settings())); - public static final Item COPPER_PLATE = registerItem("copper_plate", - new Item(new Item.Settings())); - public static final Item IRON_PLATE = registerItem("iron_plate", - new Item(new Item.Settings())); - public static final Item GOLD_PLATE = registerItem("gold_plate", - new Item(new Item.Settings())); + public static final Item TIN_NUGGET = registerItem("tin_nugget"); - public static final Item STEEL_INGOT = registerItem("steel_ingot", - new Item(new Item.Settings())); + public static final Item TIN_INGOT = registerItem("tin_ingot"); - public static final Item REDSTONE_ALLOY_INGOT = registerItem("redstone_alloy_ingot", - new Item(new Item.Settings())); + public static final Item TIN_PLATE = registerItem("tin_plate"); + public static final Item COPPER_PLATE = registerItem("copper_plate"); + public static final Item IRON_PLATE = registerItem("iron_plate"); + public static final Item GOLD_PLATE = registerItem("gold_plate"); - public static final Item ADVANCED_ALLOY_INGOT = registerItem("advanced_alloy_ingot", - new Item(new Item.Settings())); + public static final Item STEEL_INGOT = registerItem("steel_ingot"); - public static final Item ADVANCED_ALLOY_PLATE = registerItem("advanced_alloy_plate", - new Item(new Item.Settings())); + public static final Item REDSTONE_ALLOY_INGOT = registerItem("redstone_alloy_ingot"); - public static final Item IRON_GEAR = registerItem("iron_gear", - new Item(new Item.Settings())); + public static final Item ADVANCED_ALLOY_INGOT = registerItem("advanced_alloy_ingot"); - public static final Item IRON_ROD = registerItem("iron_rod", - new Item(new Item.Settings())); + public static final Item ADVANCED_ALLOY_PLATE = registerItem("advanced_alloy_plate"); - public static final Item TIN_WIRE = registerItem("tin_wire", - new Item(new Item.Settings())); - public static final Item COPPER_WIRE = registerItem("copper_wire", - new Item(new Item.Settings())); - public static final Item GOLD_WIRE = registerItem("gold_wire", - new Item(new Item.Settings())); + public static final Item IRON_GEAR = registerItem("iron_gear"); - public static final Item SAWDUST = registerItem("sawdust", - new Item(new Item.Settings())); + public static final Item IRON_ROD = registerItem("iron_rod"); - public static final Item CHARCOAL_DUST = registerItem("charcoal_dust", - new Item(new Item.Settings())); + public static final Item TIN_WIRE = registerItem("tin_wire"); + public static final Item COPPER_WIRE = registerItem("copper_wire"); + public static final Item GOLD_WIRE = registerItem("gold_wire"); - public static final Item BASIC_FERTILIZER = registerItem("basic_fertilizer", - new Item(new Item.Settings())); + public static final Item SAWDUST = registerItem("sawdust"); - public static final Item GOOD_FERTILIZER = registerItem("good_fertilizer", - new Item(new Item.Settings())); + public static final Item CHARCOAL_DUST = registerItem("charcoal_dust"); - public static final Item ADVANCED_FERTILIZER = registerItem("advanced_fertilizer", - new Item(new Item.Settings())); + public static final Item BASIC_FERTILIZER = registerItem("basic_fertilizer"); - public static final Item RAW_GEAR_PRESS_MOLD = registerItem("raw_gear_press_mold", - new Item(new Item.Settings())); - public static final Item RAW_ROD_PRESS_MOLD = registerItem("raw_rod_press_mold", - new Item(new Item.Settings())); - public static final Item RAW_WIRE_PRESS_MOLD = registerItem("raw_wire_press_mold", - new Item(new Item.Settings())); + public static final Item GOOD_FERTILIZER = registerItem("good_fertilizer"); + + public static final Item ADVANCED_FERTILIZER = registerItem("advanced_fertilizer"); + + public static final Item RAW_GEAR_PRESS_MOLD = registerItem("raw_gear_press_mold"); + public static final Item RAW_ROD_PRESS_MOLD = registerItem("raw_rod_press_mold"); + public static final Item RAW_WIRE_PRESS_MOLD = registerItem("raw_wire_press_mold"); public static final Item GEAR_PRESS_MOLD = registerItem("gear_press_mold", - new Item(new Item.Settings().maxDamage(2000))); + new Item.Settings().maxDamage(2000)); public static final Item ROD_PRESS_MOLD = registerItem("rod_press_mold", - new Item(new Item.Settings().maxDamage(2000))); + new Item.Settings().maxDamage(2000)); public static final Item WIRE_PRESS_MOLD = registerItem("wire_press_mold", - new Item(new Item.Settings().maxDamage(2000))); - - public static final Item BASIC_SOLAR_CELL = registerItem("basic_solar_cell", - new Item(new Item.Settings())); - public static final Item ADVANCED_SOLAR_CELL = registerItem("advanced_solar_cell", - new Item(new Item.Settings())); - public static final Item REINFORCED_ADVANCED_SOLAR_CELL = registerItem("reinforced_advanced_solar_cell", - new Item(new Item.Settings())); - - public static final Item BASIC_CIRCUIT = registerItem("basic_circuit", - new Item(new Item.Settings())); - public static final Item ADVANCED_CIRCUIT = registerItem("advanced_circuit", - new Item(new Item.Settings())); - public static final Item PROCESSING_UNIT = registerItem("processing_unit", - new Item(new Item.Settings())); + new Item.Settings().maxDamage(2000)); + + public static final Item BASIC_SOLAR_CELL = registerItem("basic_solar_cell"); + public static final Item ADVANCED_SOLAR_CELL = registerItem("advanced_solar_cell"); + public static final Item REINFORCED_ADVANCED_SOLAR_CELL = registerItem("reinforced_advanced_solar_cell"); + + public static final Item BASIC_CIRCUIT = registerItem("basic_circuit"); + public static final Item ADVANCED_CIRCUIT = registerItem("advanced_circuit"); + public static final Item PROCESSING_UNIT = registerItem("processing_unit"); public static final Item TELEPORTER_MATRIX = registerItem("teleporter_matrix", - new TeleporterMatrixItem(new Item.Settings())); - public static final Item TELEPORTER_PROCESSING_UNIT = registerItem("teleporter_processing_unit", - new Item(new Item.Settings())); + TeleporterMatrixItem::new); + public static final Item TELEPORTER_PROCESSING_UNIT = registerItem("teleporter_processing_unit"); - public static final Item BASIC_UPGRADE_MODULE = registerItem("basic_upgrade_module", - new Item(new Item.Settings())); - public static final Item ADVANCED_UPGRADE_MODULE = registerItem("advanced_upgrade_module", - new Item(new Item.Settings())); - public static final Item REINFORCED_ADVANCED_UPGRADE_MODULE = registerItem("reinforced_advanced_upgrade_module", - new Item(new Item.Settings())); + public static final Item BASIC_UPGRADE_MODULE = registerItem("basic_upgrade_module"); + public static final Item ADVANCED_UPGRADE_MODULE = registerItem("advanced_upgrade_module"); + public static final Item REINFORCED_ADVANCED_UPGRADE_MODULE = registerItem("reinforced_advanced_upgrade_module"); public static final Item SPEED_UPGRADE_MODULE_1 = registerItem("speed_upgrade_module_1", - new SpeedUpgradeModuleItem(new Item.Settings(), 1)); + props -> new SpeedUpgradeModuleItem(props, 1)); public static final Item SPEED_UPGRADE_MODULE_2 = registerItem("speed_upgrade_module_2", - new SpeedUpgradeModuleItem(new Item.Settings(), 2)); + props -> new SpeedUpgradeModuleItem(props, 2)); public static final Item SPEED_UPGRADE_MODULE_3 = registerItem("speed_upgrade_module_3", - new SpeedUpgradeModuleItem(new Item.Settings(), 3)); + props -> new SpeedUpgradeModuleItem(props, 3)); public static final Item SPEED_UPGRADE_MODULE_4 = registerItem("speed_upgrade_module_4", - new SpeedUpgradeModuleItem(new Item.Settings(), 4)); + props -> new SpeedUpgradeModuleItem(props, 4)); public static final Item SPEED_UPGRADE_MODULE_5 = registerItem("speed_upgrade_module_5", - new SpeedUpgradeModuleItem(new Item.Settings(), 5)); + props -> new SpeedUpgradeModuleItem(props, 5)); public static final Item ENERGY_EFFICIENCY_UPGRADE_MODULE_1 = registerItem("energy_efficiency_upgrade_module_1", - new EnergyEfficiencyUpgradeModuleItem(new Item.Settings(), 1)); + props -> new EnergyEfficiencyUpgradeModuleItem(props, 1)); public static final Item ENERGY_EFFICIENCY_UPGRADE_MODULE_2 = registerItem("energy_efficiency_upgrade_module_2", - new EnergyEfficiencyUpgradeModuleItem(new Item.Settings(), 2)); + props -> new EnergyEfficiencyUpgradeModuleItem(props, 2)); public static final Item ENERGY_EFFICIENCY_UPGRADE_MODULE_3 = registerItem("energy_efficiency_upgrade_module_3", - new EnergyEfficiencyUpgradeModuleItem(new Item.Settings(), 3)); + props -> new EnergyEfficiencyUpgradeModuleItem(props, 3)); public static final Item ENERGY_EFFICIENCY_UPGRADE_MODULE_4 = registerItem("energy_efficiency_upgrade_module_4", - new EnergyEfficiencyUpgradeModuleItem(new Item.Settings(), 4)); + props -> new EnergyEfficiencyUpgradeModuleItem(props, 4)); public static final Item ENERGY_EFFICIENCY_UPGRADE_MODULE_5 = registerItem("energy_efficiency_upgrade_module_5", - new EnergyEfficiencyUpgradeModuleItem(new Item.Settings(), 5)); + props -> new EnergyEfficiencyUpgradeModuleItem(props, 5)); public static final Item ENERGY_CAPACITY_UPGRADE_MODULE_1 = registerItem("energy_capacity_upgrade_module_1", - new EnergyCapacityUpgradeModuleItem(new Item.Settings(), 1)); + props -> new EnergyCapacityUpgradeModuleItem(props, 1)); public static final Item ENERGY_CAPACITY_UPGRADE_MODULE_2 = registerItem("energy_capacity_upgrade_module_2", - new EnergyCapacityUpgradeModuleItem(new Item.Settings(), 2)); + props -> new EnergyCapacityUpgradeModuleItem(props, 2)); public static final Item ENERGY_CAPACITY_UPGRADE_MODULE_3 = registerItem("energy_capacity_upgrade_module_3", - new EnergyCapacityUpgradeModuleItem(new Item.Settings(), 3)); + props -> new EnergyCapacityUpgradeModuleItem(props, 3)); public static final Item ENERGY_CAPACITY_UPGRADE_MODULE_4 = registerItem("energy_capacity_upgrade_module_4", - new EnergyCapacityUpgradeModuleItem(new Item.Settings(), 4)); + props -> new EnergyCapacityUpgradeModuleItem(props, 4)); public static final Item ENERGY_CAPACITY_UPGRADE_MODULE_5 = registerItem("energy_capacity_upgrade_module_5", - new EnergyCapacityUpgradeModuleItem(new Item.Settings(), 5)); + props -> new EnergyCapacityUpgradeModuleItem(props, 5)); public static final Item DURATION_UPGRADE_MODULE_1 = registerItem("duration_upgrade_module_1", - new DurationUpgradeModuleItem(new Item.Settings(), 1)); + props -> new DurationUpgradeModuleItem(props, 1)); public static final Item DURATION_UPGRADE_MODULE_2 = registerItem("duration_upgrade_module_2", - new DurationUpgradeModuleItem(new Item.Settings(), 2)); + props -> new DurationUpgradeModuleItem(props, 2)); public static final Item DURATION_UPGRADE_MODULE_3 = registerItem("duration_upgrade_module_3", - new DurationUpgradeModuleItem(new Item.Settings(), 3)); + props -> new DurationUpgradeModuleItem(props, 3)); public static final Item DURATION_UPGRADE_MODULE_4 = registerItem("duration_upgrade_module_4", - new DurationUpgradeModuleItem(new Item.Settings(), 4)); + props -> new DurationUpgradeModuleItem(props, 4)); public static final Item DURATION_UPGRADE_MODULE_5 = registerItem("duration_upgrade_module_5", - new DurationUpgradeModuleItem(new Item.Settings(), 5)); + props -> new DurationUpgradeModuleItem(props, 5)); public static final Item DURATION_UPGRADE_MODULE_6 = registerItem("duration_upgrade_module_6", - new DurationUpgradeModuleItem(new Item.Settings(), 6)); + props -> new DurationUpgradeModuleItem(props, 6)); public static final Item RANGE_UPGRADE_MODULE_1 = registerItem("range_upgrade_module_1", - new RangeUpgradeModuleItem(new Item.Settings(), 1)); + props -> new RangeUpgradeModuleItem(props, 1)); public static final Item RANGE_UPGRADE_MODULE_2 = registerItem("range_upgrade_module_2", - new RangeUpgradeModuleItem(new Item.Settings(), 2)); + props -> new RangeUpgradeModuleItem(props, 2)); public static final Item RANGE_UPGRADE_MODULE_3 = registerItem("range_upgrade_module_3", - new RangeUpgradeModuleItem(new Item.Settings(), 3)); + props -> new RangeUpgradeModuleItem(props, 3)); public static final Item EXTRACTION_DEPTH_UPGRADE_MODULE_1 = registerItem("extraction_depth_upgrade_module_1", - new ExtractionDepthUpgradeModuleItem(new Item.Settings(), 1)); + props -> new ExtractionDepthUpgradeModuleItem(props, 1)); public static final Item EXTRACTION_DEPTH_UPGRADE_MODULE_2 = registerItem("extraction_depth_upgrade_module_2", - new ExtractionDepthUpgradeModuleItem(new Item.Settings(), 2)); + props -> new ExtractionDepthUpgradeModuleItem(props, 2)); public static final Item EXTRACTION_DEPTH_UPGRADE_MODULE_3 = registerItem("extraction_depth_upgrade_module_3", - new ExtractionDepthUpgradeModuleItem(new Item.Settings(), 3)); + props -> new ExtractionDepthUpgradeModuleItem(props, 3)); public static final Item EXTRACTION_DEPTH_UPGRADE_MODULE_4 = registerItem("extraction_depth_upgrade_module_4", - new ExtractionDepthUpgradeModuleItem(new Item.Settings(), 4)); + props -> new ExtractionDepthUpgradeModuleItem(props, 4)); public static final Item EXTRACTION_DEPTH_UPGRADE_MODULE_5 = registerItem("extraction_depth_upgrade_module_5", - new ExtractionDepthUpgradeModuleItem(new Item.Settings(), 5)); + props -> new ExtractionDepthUpgradeModuleItem(props, 5)); public static final Item BLAST_FURNACE_UPGRADE_MODULE = registerItem("blast_furnace_upgrade_module", - new FurnaceModeUpgradeModuleItem(new Item.Settings(), 1)); + props -> new FurnaceModeUpgradeModuleItem(props, 1)); public static final Item SMOKER_UPGRADE_MODULE = registerItem("smoker_upgrade_module", - new FurnaceModeUpgradeModuleItem(new Item.Settings(), 2)); + props -> new FurnaceModeUpgradeModuleItem(props, 2)); public static final Item MOON_LIGHT_UPGRADE_MODULE_1 = registerItem("moon_light_upgrade_module_1", - new MoonLightUpgradeModuleItem(new Item.Settings(), 1)); + props -> new MoonLightUpgradeModuleItem(props, 1)); public static final Item MOON_LIGHT_UPGRADE_MODULE_2 = registerItem("moon_light_upgrade_module_2", - new MoonLightUpgradeModuleItem(new Item.Settings(), 2)); + props -> new MoonLightUpgradeModuleItem(props, 2)); public static final Item MOON_LIGHT_UPGRADE_MODULE_3 = registerItem("moon_light_upgrade_module_3", - new MoonLightUpgradeModuleItem(new Item.Settings(), 3)); + props -> new MoonLightUpgradeModuleItem(props, 3)); public static final Item ENERGIZED_POWER_BOOK = registerItem("energized_power_book", - new EnergizedPowerBookItem(new Item.Settings().maxCount(1))); + EnergizedPowerBookItem::new, new Item.Settings().maxCount(1)); public static final Item CABLE_INSULATOR = registerItem("cable_insulator", - new CableInsulatorItem(new Item.Settings())); + CableInsulatorItem::new); public static final Item CHARCOAL_FILTER = registerItem("charcoal_filter", - new Item(new Item.Settings().maxDamage(200))); + new Item.Settings().maxDamage(200)); - public static final Item SAW_BLADE = registerItem("saw_blade", - new Item(new Item.Settings())); + public static final Item SAW_BLADE = registerItem("saw_blade"); - public static final Item CRYSTAL_MATRIX = registerItem("crystal_matrix", - new Item(new Item.Settings())); + public static final Item CRYSTAL_MATRIX = registerItem("crystal_matrix"); - public static final Item ENERGIZED_CRYSTAL_MATRIX = registerItem("energized_crystal_matrix", - new Item(new Item.Settings())); + public static final Item ENERGIZED_CRYSTAL_MATRIX = registerItem("energized_crystal_matrix"); public static final Item INVENTORY_COAL_ENGINE = registerItem("inventory_coal_engine", - new InventoryCoalEngineItem(new Item.Settings().maxCount(1))); + InventoryCoalEngineItem::new, new Item.Settings().maxCount(1)); public static final Item INVENTORY_CHARGER = registerItem("inventory_charger", - new InventoryChargerItem(new Item.Settings().maxCount(1))); + InventoryChargerItem::new, new Item.Settings().maxCount(1)); public static final Item INVENTORY_TELEPORTER = registerItem("inventory_teleporter", - new InventoryTeleporterItem(new Item.Settings().maxCount(1))); + InventoryTeleporterItem::new, new Item.Settings().maxCount(1)); public static final Item BATTERY_1 = registerItem("battery_1", - new BatteryItem(BatteryItem.Tier.BATTERY_1)); + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_1)); public static final Item BATTERY_2 = registerItem("battery_2", - new BatteryItem(BatteryItem.Tier.BATTERY_2)); + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_2)); public static final Item BATTERY_3 = registerItem("battery_3", - new BatteryItem(BatteryItem.Tier.BATTERY_3)); + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_3)); public static final Item BATTERY_4 = registerItem("battery_4", - new BatteryItem(BatteryItem.Tier.BATTERY_4)); + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_4)); public static final Item BATTERY_5 = registerItem("battery_5", - new BatteryItem(BatteryItem.Tier.BATTERY_5)); + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_5)); public static final Item BATTERY_6 = registerItem("battery_6", - new BatteryItem(BatteryItem.Tier.BATTERY_6)); + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_6)); public static final Item BATTERY_7 = registerItem("battery_7", - new BatteryItem(BatteryItem.Tier.BATTERY_7)); + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_7)); public static final Item BATTERY_8 = registerItem("battery_8", - new BatteryItem(BatteryItem.Tier.BATTERY_8)); + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_8)); public static final Item CREATIVE_BATTERY = registerItem("creative_battery", - new CreativeBatteryItem(new Item.Settings().maxCount(1))); + CreativeBatteryItem::new, new Item.Settings().maxCount(1)); public static final Item ENERGY_ANALYZER = registerItem("energy_analyzer", - new EnergyAnalyzerItem(new Item.Settings().maxCount(1))); + EnergyAnalyzerItem::new, new Item.Settings().maxCount(1)); public static final Item FLUID_ANALYZER = registerItem("fluid_analyzer", - new FluidAnalyzerItem(new Item.Settings().maxCount(1))); + FluidAnalyzerItem::new, new Item.Settings().maxCount(1)); public static final Item WOODEN_HAMMER = registerItem("wooden_hammer", - new HammerItem(ToolMaterials.WOOD, new Item.Settings())); + props -> new HammerItem(ToolMaterial.WOOD, props)); public static final Item STONE_HAMMER = registerItem("stone_hammer", - new HammerItem(ToolMaterials.STONE, new Item.Settings())); + props -> new HammerItem(ToolMaterial.STONE, props)); public static final Item IRON_HAMMER = registerItem("iron_hammer", - new HammerItem(ToolMaterials.IRON, new Item.Settings())); + props -> new HammerItem(ToolMaterial.IRON, props)); public static final Item GOLDEN_HAMMER = registerItem("golden_hammer", - new HammerItem(ToolMaterials.GOLD, new Item.Settings())); + props -> new HammerItem(ToolMaterial.GOLD, props)); public static final Item DIAMOND_HAMMER = registerItem("diamond_hammer", - new HammerItem(ToolMaterials.DIAMOND, new Item.Settings())); + props -> new HammerItem(ToolMaterial.DIAMOND, props)); public static final Item NETHERITE_HAMMER = registerItem("netherite_hammer", - new HammerItem(ToolMaterials.NETHERITE, new Item.Settings().fireproof())); + props -> new HammerItem(ToolMaterial.NETHERITE, props), new Item.Settings().fireproof()); public static final Item CUTTER = registerItem("cutter", - new CutterItem(ToolMaterials.IRON, new Item.Settings())); + props -> new CutterItem(ToolMaterial.IRON, props)); public static final Item WRENCH = registerItem("wrench", - new WrenchItem(new Item.Settings().maxCount(1))); + WrenchItem::new, new Item.Settings().maxCount(1)); public static final Item BATTERY_BOX_MINECART = registerItem("battery_box_minecart", - new BatteryBoxMinecartItem(new Item.Settings().maxCount(1))); + BatteryBoxMinecartItem::new, new Item.Settings().maxCount(1)); public static final Item ADVANCED_BATTERY_BOX_MINECART = registerItem("advanced_battery_box_minecart", - new AdvancedBatteryBoxMinecartItem(new Item.Settings().maxCount(1))); + AdvancedBatteryBoxMinecartItem::new, new Item.Settings().maxCount(1)); //Register energy storage for items static { diff --git a/src/main/java/me/jddev0/ep/item/EnergizedPowerBookItem.java b/src/main/java/me/jddev0/ep/item/EnergizedPowerBookItem.java index b2eb32ff4..5a1dd2518 100644 --- a/src/main/java/me/jddev0/ep/item/EnergizedPowerBookItem.java +++ b/src/main/java/me/jddev0/ep/item/EnergizedPowerBookItem.java @@ -13,10 +13,10 @@ import net.minecraft.item.tooltip.TooltipType; import net.minecraft.registry.Registries; import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; import net.minecraft.util.Identifier; -import net.minecraft.util.TypedActionResult; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -41,13 +41,13 @@ public void appendTooltip(ItemStack stack, Item.TooltipContext context, List use(World level, PlayerEntity player, Hand interactionHand) { + public ActionResult use(World level, PlayerEntity player, Hand interactionHand) { ItemStack itemStack = player.getStackInHand(interactionHand); if(level.isClient()) showBookViewScreen(null); - return TypedActionResult.success(itemStack, level.isClient()); + return (level.isClient()?ActionResult.SUCCESS:ActionResult.SUCCESS_SERVER).withNewHandStack(itemStack); } @Override diff --git a/src/main/java/me/jddev0/ep/item/EnergyAnalyzerItem.java b/src/main/java/me/jddev0/ep/item/EnergyAnalyzerItem.java index c92ddeb51..b7fedd080 100644 --- a/src/main/java/me/jddev0/ep/item/EnergyAnalyzerItem.java +++ b/src/main/java/me/jddev0/ep/item/EnergyAnalyzerItem.java @@ -47,8 +47,8 @@ private void useItem(ItemStack itemStack, PlayerEntity player, List lines) setEnergy(itemStack, getEnergy(itemStack) - ENERGY_CONSUMPTION_PER_USE); for(Text component:lines) - player.sendMessage(component); - player.sendMessage(Text.empty()); + player.sendMessage(component, false); + player.sendMessage(Text.empty(), false); } private void addOutputTextForEnergyStorage(List components, @Nullable EnergyStorage energyStorage, boolean blockFaceSpecificInformation) { diff --git a/src/main/java/me/jddev0/ep/item/FluidAnalyzerItem.java b/src/main/java/me/jddev0/ep/item/FluidAnalyzerItem.java index 0710b1e24..ee9e2e464 100644 --- a/src/main/java/me/jddev0/ep/item/FluidAnalyzerItem.java +++ b/src/main/java/me/jddev0/ep/item/FluidAnalyzerItem.java @@ -52,8 +52,8 @@ private void useItem(ItemStack itemStack, PlayerEntity player, List lines) setEnergy(itemStack, getEnergy(itemStack) - ENERGY_CONSUMPTION_PER_USE); for(Text component:lines) - player.sendMessage(component); - player.sendMessage(Text.empty()); + player.sendMessage(component, false); + player.sendMessage(Text.empty(), false); } private void addOutputTextForFluidStorage(List components, @Nullable Storage fluidStorage, boolean blockFaceSpecificInformation) { diff --git a/src/main/java/me/jddev0/ep/item/HammerItem.java b/src/main/java/me/jddev0/ep/item/HammerItem.java index 19c2b3632..64a11fb79 100644 --- a/src/main/java/me/jddev0/ep/item/HammerItem.java +++ b/src/main/java/me/jddev0/ep/item/HammerItem.java @@ -3,22 +3,16 @@ import me.jddev0.ep.component.EPDataComponentTypes; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ToolItem; -import net.minecraft.item.ToolMaterials; +import net.minecraft.item.ToolMaterial; import net.minecraft.util.Unit; import net.minecraft.util.math.random.Random; -public class HammerItem extends ToolItem { +public class HammerItem extends Item { private final Random random = Random.create(); - public HammerItem(ToolMaterials tier, Item.Settings props) { - super(tier, props.component(EPDataComponentTypes.NO_REPAIR, Unit.INSTANCE)); - } - - @Override - public boolean canRepair(ItemStack itemStack, ItemStack ingredient) { - //TODO improve [Equivalent to setNoRepair needed] - return false; + public HammerItem(ToolMaterial tier, Item.Settings props) { + super(props.component(EPDataComponentTypes.NO_REPAIR, Unit.INSTANCE). + maxDamage(tier.durability()).repairable(tier.repairItems()).enchantable(tier.enchantmentValue())); } @Override @@ -35,9 +29,4 @@ public ItemStack getRecipeRemainder(ItemStack itemStack) { return copy; } - - @Override - public boolean hasRecipeRemainder() { - return true; - } } diff --git a/src/main/java/me/jddev0/ep/item/InventoryChargerItem.java b/src/main/java/me/jddev0/ep/item/InventoryChargerItem.java index 42044e0bb..00b64af8b 100644 --- a/src/main/java/me/jddev0/ep/item/InventoryChargerItem.java +++ b/src/main/java/me/jddev0/ep/item/InventoryChargerItem.java @@ -20,9 +20,9 @@ import net.minecraft.screen.NamedScreenHandlerFactory; import net.minecraft.screen.ScreenHandler; import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.MathHelper; import net.minecraft.world.World; @@ -45,18 +45,18 @@ public InventoryChargerItem(Item.Settings props) { } @Override - public TypedActionResult use(World level, PlayerEntity player, Hand hand) { + public ActionResult use(World level, PlayerEntity player, Hand hand) { ItemStack itemStack = player.getStackInHand(hand); if(hand == Hand.OFF_HAND) - return TypedActionResult.pass(itemStack); + return ActionResult.PASS; if(level.isClient()) - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); player.openHandledScreen(this); - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); } @Override diff --git a/src/main/java/me/jddev0/ep/item/InventoryCoalEngineItem.java b/src/main/java/me/jddev0/ep/item/InventoryCoalEngineItem.java index 58a9c4f01..7dea19b3a 100644 --- a/src/main/java/me/jddev0/ep/item/InventoryCoalEngineItem.java +++ b/src/main/java/me/jddev0/ep/item/InventoryCoalEngineItem.java @@ -5,7 +5,6 @@ import me.jddev0.ep.config.ModConfigs; import me.jddev0.ep.item.energy.EnergizedPowerEnergyItem; import me.jddev0.ep.util.EnergyUtils; -import net.fabricmc.fabric.api.registry.FuelRegistry; import net.fabricmc.fabric.api.transfer.v1.context.ContainerItemContext; import net.fabricmc.fabric.api.transfer.v1.item.InventoryStorage; import net.fabricmc.fabric.api.transfer.v1.transaction.Transaction; @@ -17,9 +16,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.tooltip.TooltipType; import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; import net.minecraft.world.World; import team.reborn.energy.api.EnergyStorage; import team.reborn.energy.api.EnergyStorageUtil; @@ -202,8 +201,7 @@ public void inventoryTick(ItemStack itemStack, World level, Entity entity, int s continue; ItemStack testItemStack = inventory.getStack(i); - Integer burnTime = FuelRegistry.INSTANCE.get(testItemStack.getItem()); - long energyProduction = burnTime == null?-1:burnTime; + long energyProduction = level.getFuelRegistry().getFuelTicks(testItemStack); if(energyProduction <= 0) continue; @@ -235,15 +233,15 @@ public void inventoryTick(ItemStack itemStack, World level, Entity entity, int s } @Override - public TypedActionResult use(World level, PlayerEntity player, Hand hand) { + public ActionResult use(World level, PlayerEntity player, Hand hand) { ItemStack itemStack = player.getStackInHand(hand); if(level.isClient()) - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); itemStack.set(EPDataComponentTypes.ACTIVE, !isActive(itemStack)); - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); } private void resetProgress(ItemStack itemStack) { diff --git a/src/main/java/me/jddev0/ep/item/InventoryTeleporterItem.java b/src/main/java/me/jddev0/ep/item/InventoryTeleporterItem.java index 8e64e8ac3..88d7222a5 100644 --- a/src/main/java/me/jddev0/ep/item/InventoryTeleporterItem.java +++ b/src/main/java/me/jddev0/ep/item/InventoryTeleporterItem.java @@ -19,9 +19,9 @@ import net.minecraft.screen.ScreenHandler; import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.text.Text; +import net.minecraft.util.ActionResult; import net.minecraft.util.Formatting; import net.minecraft.util.Hand; -import net.minecraft.util.TypedActionResult; import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; import org.jetbrains.annotations.NotNull; @@ -39,21 +39,21 @@ public InventoryTeleporterItem(Item.Settings props) { } @Override - public TypedActionResult use(World level, PlayerEntity player, Hand hand) { + public ActionResult use(World level, PlayerEntity player, Hand hand) { ItemStack itemStack = player.getStackInHand(hand); if(hand == Hand.OFF_HAND) - return TypedActionResult.pass(itemStack); + return ActionResult.PASS; if(level.isClient() || !(player instanceof ServerPlayerEntity serverPlayer)) - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); if(player.isSneaking()) player.openHandledScreen(this); else teleportPlayer(itemStack, serverPlayer); - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); } @Override diff --git a/src/main/java/me/jddev0/ep/item/TeleporterMatrixItem.java b/src/main/java/me/jddev0/ep/item/TeleporterMatrixItem.java index 276770091..524752e73 100644 --- a/src/main/java/me/jddev0/ep/item/TeleporterMatrixItem.java +++ b/src/main/java/me/jddev0/ep/item/TeleporterMatrixItem.java @@ -98,11 +98,11 @@ public ActionResult useOnBlock(ItemUsageContext useOnContext) { } @Override - public TypedActionResult use(World level, PlayerEntity player, Hand interactionHand) { + public ActionResult use(World level, PlayerEntity player, Hand interactionHand) { ItemStack itemStack = player.getStackInHand(interactionHand); if(level.isClient()) - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); if(itemStack.contains(EPDataComponentTypes.DIMENSIONAL_POSITION)) itemStack.remove(EPDataComponentTypes.DIMENSIONAL_POSITION); @@ -114,7 +114,7 @@ public TypedActionResult use(World level, PlayerEntity player, Hand i )); } - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); } @Override @@ -149,7 +149,7 @@ public void appendTooltip(ItemStack stack, Item.TooltipContext context, List use(World level, PlayerEntity player, Hand interactionHand) { + public ActionResult use(World level, PlayerEntity player, Hand interactionHand) { ItemStack itemStack = player.getStackInHand(interactionHand); if(level.isClient()) - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); cycleCurrentFace(itemStack, (ServerPlayerEntity)player); - return TypedActionResult.success(itemStack); + return ActionResult.SUCCESS.withNewHandStack(itemStack); } @Override diff --git a/src/main/java/me/jddev0/ep/loading/EnergizedPowerBookReloadListener.java b/src/main/java/me/jddev0/ep/loading/EnergizedPowerBookReloadListener.java index c979724f0..a72441572 100644 --- a/src/main/java/me/jddev0/ep/loading/EnergizedPowerBookReloadListener.java +++ b/src/main/java/me/jddev0/ep/loading/EnergizedPowerBookReloadListener.java @@ -1,10 +1,12 @@ package me.jddev0.ep.loading; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; +import com.google.gson.*; +import com.mojang.datafixers.util.Pair; import com.mojang.logging.LogUtils; +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.DynamicOps; +import com.mojang.serialization.JsonOps; import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.EnergizedPowerBookScreen; import net.fabricmc.api.EnvType; @@ -24,7 +26,7 @@ import java.util.stream.Stream; @Environment(EnvType.CLIENT) -public class EnergizedPowerBookReloadListener extends JsonDataLoader implements IdentifiableResourceReloadListener { +public class EnergizedPowerBookReloadListener extends JsonDataLoader implements IdentifiableResourceReloadListener { private static final Logger LOGGER = LogUtils.getLogger(); @Override @@ -33,7 +35,17 @@ public Identifier getFabricId() { } public EnergizedPowerBookReloadListener() { - super(new GsonBuilder().create(), "book_pages"); + super(new Codec<>() { + @Override + public DataResult> decode(DynamicOps ops, T input) { + return DataResult.success(Pair.of(ops.convertTo(JsonOps.INSTANCE, input), input)); + } + + @Override + public DataResult encode(JsonElement input, DynamicOps ops, T prefix) { + return DataResult.error(() -> "Not implemented"); + } + }, "book_pages"); } @Override @@ -45,7 +57,7 @@ public Stream>> streamAllRegistryKeys() { } @Override - public Optional> getOptionalWrapper(RegistryKey> registryRef) { + public Optional> getOptional(RegistryKey> registryRef) { return Optional.empty(); } }; diff --git a/src/main/java/me/jddev0/ep/mixin/entity/PlayerTeleporterCrashFixMixin.java b/src/main/java/me/jddev0/ep/mixin/entity/PlayerTeleporterCrashFixMixin.java new file mode 100644 index 000000000..1adb8009a --- /dev/null +++ b/src/main/java/me/jddev0/ep/mixin/entity/PlayerTeleporterCrashFixMixin.java @@ -0,0 +1,18 @@ +package me.jddev0.ep.mixin.entity; + +import net.minecraft.entity.Entity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +import java.util.ArrayList; +import java.util.List; + +@Mixin(Entity.class) +public abstract class PlayerTeleporterCrashFixMixin { + @ModifyVariable(method = "checkBlockCollision", at = @At("HEAD")) + private List copyQueuedCollisionChecks(List queuedCollisionChecks) { + //Fixes ConcurrentModificationException thrown in "Entity.checkBlockCollision()" if Teleporter or Inventory Teleporter is used + return new ArrayList<>(queuedCollisionChecks); + } +} diff --git a/src/main/java/me/jddev0/ep/mixin/recipe/ServerRecipeManagerGetter.java b/src/main/java/me/jddev0/ep/mixin/recipe/ServerRecipeManagerGetter.java new file mode 100644 index 000000000..efb13ddb3 --- /dev/null +++ b/src/main/java/me/jddev0/ep/mixin/recipe/ServerRecipeManagerGetter.java @@ -0,0 +1,12 @@ +package me.jddev0.ep.mixin.recipe; + +import net.minecraft.recipe.PreparedRecipes; +import net.minecraft.recipe.ServerRecipeManager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(ServerRecipeManager.class) +public interface ServerRecipeManagerGetter { + @Accessor("preparedRecipes") + PreparedRecipes getPreparedRecipes(); +} diff --git a/src/main/java/me/jddev0/ep/networking/ModMessages.java b/src/main/java/me/jddev0/ep/networking/ModMessages.java index 38abdff97..d9376c756 100644 --- a/src/main/java/me/jddev0/ep/networking/ModMessages.java +++ b/src/main/java/me/jddev0/ep/networking/ModMessages.java @@ -22,7 +22,7 @@ public static void registerTypedPayloads() { PayloadTypeRegistry.playS2C().register(OpenEnergizedPowerBookS2CPacket.ID, OpenEnergizedPowerBookS2CPacket.PACKET_CODEC); PayloadTypeRegistry.playS2C().register(SyncPressMoldMakerRecipeListS2CPacket.ID, SyncPressMoldMakerRecipeListS2CPacket.PACKET_CODEC); PayloadTypeRegistry.playS2C().register(SyncCurrentRecipeS2CPacket.ID, SyncCurrentRecipeS2CPacket.PACKET_CODEC); - PayloadTypeRegistry.playS2C().register(SyncFurnaceRecipeTypeS2CPacket.ID, SyncFurnaceRecipeTypeS2CPacket.PACKET_CODEC); + PayloadTypeRegistry.playS2C().register(SyncIngredientsS2CPacket.ID, SyncIngredientsS2CPacket.PACKET_CODEC); //Client -> Server PayloadTypeRegistry.playC2S().register(PopEnergizedPowerBookFromLecternC2SPacket.ID, PopEnergizedPowerBookFromLecternC2SPacket.PACKET_CODEC); @@ -51,7 +51,7 @@ public static void registerPacketsS2C() { ClientPlayNetworking.registerGlobalReceiver(OpenEnergizedPowerBookS2CPacket.ID, OpenEnergizedPowerBookS2CPacket::receive); ClientPlayNetworking.registerGlobalReceiver(SyncPressMoldMakerRecipeListS2CPacket.ID, SyncPressMoldMakerRecipeListS2CPacket::receive); ClientPlayNetworking.registerGlobalReceiver(SyncCurrentRecipeS2CPacket.ID, SyncCurrentRecipeS2CPacket::receive); - ClientPlayNetworking.registerGlobalReceiver(SyncFurnaceRecipeTypeS2CPacket.ID, SyncFurnaceRecipeTypeS2CPacket::receive); + ClientPlayNetworking.registerGlobalReceiver(SyncIngredientsS2CPacket.ID, SyncIngredientsS2CPacket::receive); } public static void registerPacketsC2S() { diff --git a/src/main/java/me/jddev0/ep/networking/packet/ChangeComparatorModeC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/ChangeComparatorModeC2SPacket.java index e0433638f..c5d9463ca 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/ChangeComparatorModeC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/ChangeComparatorModeC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/ChangeCurrentRecipeIndexC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/ChangeCurrentRecipeIndexC2SPacket.java index df59dd624..549c89001 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/ChangeCurrentRecipeIndexC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/ChangeCurrentRecipeIndexC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/ChangeRedstoneModeC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/ChangeRedstoneModeC2SPacket.java index 979dbb757..c0eddbe4d 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/ChangeRedstoneModeC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/ChangeRedstoneModeC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/CycleAdvancedAutoCrafterRecipeOutputC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/CycleAdvancedAutoCrafterRecipeOutputC2SPacket.java index 025789bd7..6cb1b81a5 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/CycleAdvancedAutoCrafterRecipeOutputC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/CycleAdvancedAutoCrafterRecipeOutputC2SPacket.java @@ -9,7 +9,6 @@ import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/CycleAutoCrafterRecipeOutputC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/CycleAutoCrafterRecipeOutputC2SPacket.java index f73cddb2b..aa39782db 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/CycleAutoCrafterRecipeOutputC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/CycleAutoCrafterRecipeOutputC2SPacket.java @@ -9,7 +9,6 @@ import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; import net.minecraft.screen.ScreenHandler; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/EnergySyncS2CPacket.java b/src/main/java/me/jddev0/ep/networking/packet/EnergySyncS2CPacket.java index 445d947cb..c27bb30de 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/EnergySyncS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/EnergySyncS2CPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; public record EnergySyncS2CPacket(long energy, long capacity, BlockPos pos) implements CustomPayload { diff --git a/src/main/java/me/jddev0/ep/networking/packet/FluidSyncS2CPacket.java b/src/main/java/me/jddev0/ep/networking/packet/FluidSyncS2CPacket.java index 5718cae17..fadf2bc90 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/FluidSyncS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/FluidSyncS2CPacket.java @@ -8,7 +8,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; public record FluidSyncS2CPacket(int tank, FluidStack fluidStack, long capacity, BlockPos pos) implements CustomPayload { diff --git a/src/main/java/me/jddev0/ep/networking/packet/ItemStackSyncS2CPacket.java b/src/main/java/me/jddev0/ep/networking/packet/ItemStackSyncS2CPacket.java index 1f39d8162..339b3fb5b 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/ItemStackSyncS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/ItemStackSyncS2CPacket.java @@ -8,7 +8,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; public record ItemStackSyncS2CPacket(int slot, ItemStack itemStack, BlockPos pos) implements CustomPayload { diff --git a/src/main/java/me/jddev0/ep/networking/packet/OpenEnergizedPowerBookS2CPacket.java b/src/main/java/me/jddev0/ep/networking/packet/OpenEnergizedPowerBookS2CPacket.java index 221313974..6bc55a116 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/OpenEnergizedPowerBookS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/OpenEnergizedPowerBookS2CPacket.java @@ -11,7 +11,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; public record OpenEnergizedPowerBookS2CPacket(BlockPos pos) implements CustomPayload { diff --git a/src/main/java/me/jddev0/ep/networking/packet/PopEnergizedPowerBookFromLecternC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/PopEnergizedPowerBookFromLecternC2SPacket.java index f22a6fa56..72b781ba4 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/PopEnergizedPowerBookFromLecternC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/PopEnergizedPowerBookFromLecternC2SPacket.java @@ -9,7 +9,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterPatternInputSlotsC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterPatternInputSlotsC2SPacket.java index 7f167e5f2..d3bfacaa6 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterPatternInputSlotsC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterPatternInputSlotsC2SPacket.java @@ -9,6 +9,8 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.screen.ScreenHandler; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; @@ -84,7 +86,7 @@ public static void receive(SetAdvancedAutoCrafterPatternInputSlotsC2SPacket data for(int i = 0;i < data.itemStacks.size();i++) advancedAutoCrafterMenu.getPatternSlots()[advancedAutoCrafterMenu.getRecipeIndex()].setStack(i, data.itemStacks.get(i)); - advancedAutoCrafterBlockEntity.setRecipeIdForSetRecipe(data.recipeId); + advancedAutoCrafterBlockEntity.setRecipeIdForSetRecipe(RegistryKey.of(RegistryKeys.RECIPE, data.recipeId)); advancedAutoCrafterBlockEntity.resetProgressAndMarkAsChanged(advancedAutoCrafterMenu.getRecipeIndex()); }); diff --git a/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterRecipeIndexC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterRecipeIndexC2SPacket.java index ce0a6707e..9499663ac 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterRecipeIndexC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterRecipeIndexC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/SetAutoCrafterPatternInputSlotsC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SetAutoCrafterPatternInputSlotsC2SPacket.java index 8a6cf5ba1..548895d25 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetAutoCrafterPatternInputSlotsC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetAutoCrafterPatternInputSlotsC2SPacket.java @@ -9,6 +9,8 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.screen.ScreenHandler; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; @@ -84,7 +86,7 @@ public static void receive(SetAutoCrafterPatternInputSlotsC2SPacket data, Server for(int i = 0;i < data.itemStacks.size();i++) autoCrafterMenu.getPatternSlots().setStack(i, data.itemStacks.get(i)); - autoCrafterBlockEntity.setRecipeIdForSetRecipe(data.recipeId); + autoCrafterBlockEntity.setRecipeIdForSetRecipe(RegistryKey.of(RegistryKeys.RECIPE, data.recipeId)); autoCrafterBlockEntity.resetProgressAndMarkAsChanged(); }); diff --git a/src/main/java/me/jddev0/ep/networking/packet/SetCheckboxC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SetCheckboxC2SPacket.java index 884edf86c..cf1fc3490 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetCheckboxC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetCheckboxC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/SetCreativeFluidTankFluidStackC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SetCreativeFluidTankFluidStackC2SPacket.java index 512a94a32..d981141d0 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetCreativeFluidTankFluidStackC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetCreativeFluidTankFluidStackC2SPacket.java @@ -8,7 +8,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/SetFluidTankFilterC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SetFluidTankFilterC2SPacket.java index 59d1e7335..99ed3dd53 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetFluidTankFilterC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetFluidTankFilterC2SPacket.java @@ -8,7 +8,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/SetTimeFromTimeControllerC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SetTimeFromTimeControllerC2SPacket.java index 80381c234..fc92ba31d 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetTimeFromTimeControllerC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetTimeFromTimeControllerC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/SetWeatherFromWeatherControllerC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SetWeatherFromWeatherControllerC2SPacket.java index 87600bf00..209942a07 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetWeatherFromWeatherControllerC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetWeatherFromWeatherControllerC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/networking/packet/SyncCurrentRecipeS2CPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SyncCurrentRecipeS2CPacket.java index f3ffba24e..ae61198b7 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SyncCurrentRecipeS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SyncCurrentRecipeS2CPacket.java @@ -11,6 +11,8 @@ import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.registry.Registries; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import org.jetbrains.annotations.Nullable; @@ -41,7 +43,7 @@ public SyncCurrentRecipeS2CPacket(RegistryByteBuf buffer) { if(recipeSerializer == null) throw new IllegalArgumentException("Recipe Serializer \"" + recipeSerializerId + "\" does not exist!"); - currentRecipe = buffer.readBoolean()?new RecipeEntry<>(buffer.readIdentifier(), + currentRecipe = buffer.readBoolean()?new RecipeEntry<>(RegistryKey.of(RegistryKeys.RECIPE, buffer.readIdentifier()), recipeSerializer.packetCodec().decode(buffer)):null; } @@ -59,7 +61,7 @@ public void write(RegistryByteBuf buffer) { }else { buffer.writeBoolean(true); - buffer.writeIdentifier(currentRecipe.id()); + buffer.writeIdentifier(currentRecipe.id().getValue()); recipeSerializer.packetCodec().encode(buffer, currentRecipe.value()); } } diff --git a/src/main/java/me/jddev0/ep/networking/packet/SyncFurnaceRecipeTypeS2CPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SyncFurnaceRecipeTypeS2CPacket.java deleted file mode 100644 index 5a4ae8fdb..000000000 --- a/src/main/java/me/jddev0/ep/networking/packet/SyncFurnaceRecipeTypeS2CPacket.java +++ /dev/null @@ -1,70 +0,0 @@ -package me.jddev0.ep.networking.packet; - -import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.recipe.FurnaceRecipeTypePacketUpdate; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; -import net.minecraft.block.entity.BlockEntity; -import net.minecraft.network.RegistryByteBuf; -import net.minecraft.network.codec.PacketCodec; -import net.minecraft.network.packet.CustomPayload; -import net.minecraft.recipe.AbstractCookingRecipe; -import net.minecraft.recipe.RecipeType; -import net.minecraft.registry.Registries; -import net.minecraft.util.Identifier; -import net.minecraft.util.math.BlockPos; -import org.jetbrains.annotations.NotNull; - -public final class SyncFurnaceRecipeTypeS2CPacket implements CustomPayload { - public static final Id ID = - new Id<>(EPAPI.id("sync_furnace_recipe_type")); - public static final PacketCodec PACKET_CODEC = - PacketCodec.of(SyncFurnaceRecipeTypeS2CPacket::write, SyncFurnaceRecipeTypeS2CPacket::new); - - private final RecipeType recipeType; - private final BlockPos pos; - - public SyncFurnaceRecipeTypeS2CPacket(RecipeType recipeType, BlockPos pos) { - this.recipeType = recipeType; - this.pos = pos; - } - - @SuppressWarnings("unchecked") - public SyncFurnaceRecipeTypeS2CPacket(RegistryByteBuf buffer) { - if(buffer.readBoolean()) { - this.recipeType = (RecipeType)Registries.RECIPE_TYPE. - getOrEmpty(buffer.readIdentifier()).orElse(RecipeType.SMELTING); - }else { - this.recipeType = RecipeType.SMELTING; - } - - this.pos = buffer.readBlockPos(); - } - - public void write(RegistryByteBuf buffer) { - Identifier recipeTypeKey = Registries.RECIPE_TYPE.getId(recipeType); - if(recipeTypeKey == null) { - buffer.writeBoolean(false); - }else { - buffer.writeBoolean(true); - buffer.writeIdentifier(recipeTypeKey); - } - buffer.writeBlockPos(pos); - } - - @Override - @NotNull - public Id getId() { - return ID; - } - - public static void receive(SyncFurnaceRecipeTypeS2CPacket data, ClientPlayNetworking.Context context) { - context.client().execute(() -> { - if(context.client().world == null) - return; - - BlockEntity blockEntity = context.client().world.getBlockEntity(data.pos); - if(blockEntity instanceof FurnaceRecipeTypePacketUpdate recipeTypePacketUpdate) - recipeTypePacketUpdate.setRecipeType(data.recipeType); - }); - } -} diff --git a/src/main/java/me/jddev0/ep/networking/packet/SyncIngredientsS2CPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SyncIngredientsS2CPacket.java new file mode 100644 index 000000000..fdccd2939 --- /dev/null +++ b/src/main/java/me/jddev0/ep/networking/packet/SyncIngredientsS2CPacket.java @@ -0,0 +1,73 @@ +package me.jddev0.ep.networking.packet; + +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.IngredientPacketUpdate; +import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; +import net.minecraft.block.entity.BlockEntity; +import net.minecraft.network.RegistryByteBuf; +import net.minecraft.network.codec.PacketCodec; +import net.minecraft.network.packet.CustomPayload; +import net.minecraft.recipe.Ingredient; +import net.minecraft.util.math.BlockPos; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public final class SyncIngredientsS2CPacket implements CustomPayload { + public static final Id ID = + new Id<>(EPAPI.id("sync_ingredients")); + public static final PacketCodec PACKET_CODEC = + PacketCodec.of(SyncIngredientsS2CPacket::write, SyncIngredientsS2CPacket::new); + + private final BlockPos pos; + private final int index; + private final List ingredientList; + + public SyncIngredientsS2CPacket(BlockPos pos, int index, List ingredientList) { + this.pos = pos; + this.index = index; + this.ingredientList = new ArrayList<>(ingredientList); + } + + public SyncIngredientsS2CPacket(RegistryByteBuf buffer) { + pos = buffer.readBlockPos(); + + index = buffer.readInt(); + + int len = buffer.readInt(); + ArrayList ingredientList = new ArrayList<>(len); + for(int i = 0;i < len;i++) + ingredientList.add(Ingredient.PACKET_CODEC.decode(buffer)); + + this.ingredientList = ingredientList; + } + + public void write(RegistryByteBuf buffer) { + buffer.writeBlockPos(pos); + + buffer.writeInt(index); + + buffer.writeInt(ingredientList.size()); + + for(Ingredient ingredient: ingredientList) + Ingredient.PACKET_CODEC.encode(buffer, ingredient); + } + + @Override + @NotNull + public Id getId() { + return ID; + } + + public static void receive(SyncIngredientsS2CPacket data, ClientPlayNetworking.Context context) { + context.client().execute(() -> { + if(context.client().world == null) + return; + + BlockEntity blockEntity = context.client().world.getBlockEntity(data.pos); + if(blockEntity instanceof IngredientPacketUpdate ingredientPacketUpdate) + ingredientPacketUpdate.setIngredients(data.index, new ArrayList<>(data.ingredientList)); + }); + } +} diff --git a/src/main/java/me/jddev0/ep/networking/packet/SyncPressMoldMakerRecipeListS2CPacket.java b/src/main/java/me/jddev0/ep/networking/packet/SyncPressMoldMakerRecipeListS2CPacket.java index c997b1497..a6f39d57e 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SyncPressMoldMakerRecipeListS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SyncPressMoldMakerRecipeListS2CPacket.java @@ -10,7 +10,8 @@ import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; import net.minecraft.recipe.RecipeEntry; -import net.minecraft.util.Identifier; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.util.math.BlockPos; import java.util.List; @@ -35,7 +36,7 @@ public SyncPressMoldMakerRecipeListS2CPacket(RegistryByteBuf buffer) { pos = buffer.readBlockPos(); int size = buffer.readInt(); - recipeList = IntStream.range(0, size).mapToObj(i -> Pair.of(new RecipeEntry<>(buffer.readIdentifier(), + recipeList = IntStream.range(0, size).mapToObj(i -> Pair.of(new RecipeEntry<>(RegistryKey.of(RegistryKeys.RECIPE, buffer.readIdentifier()), PressMoldMakerRecipe.Serializer.INSTANCE.packetCodec().decode(buffer)), buffer.readBoolean())). collect(Collectors.toList()); } @@ -45,7 +46,7 @@ public void write(RegistryByteBuf buffer) { buffer.writeInt(recipeList.size()); recipeList.forEach(entry -> { - buffer.writeIdentifier(entry.getFirst().id()); + buffer.writeIdentifier(entry.getFirst().id().getValue()); PressMoldMakerRecipe.Serializer.INSTANCE.packetCodec().encode(buffer, entry.getFirst().value()); buffer.writeBoolean(entry.getSecond()); }); diff --git a/src/main/java/me/jddev0/ep/networking/packet/UseTeleporterC2SPacket.java b/src/main/java/me/jddev0/ep/networking/packet/UseTeleporterC2SPacket.java index 4868241d0..fc0384307 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/UseTeleporterC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/UseTeleporterC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.network.packet.CustomPayload; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkSectionPos; import net.minecraft.world.World; diff --git a/src/main/java/me/jddev0/ep/paintings/EPPaintingVariants.java b/src/main/java/me/jddev0/ep/paintings/EPPaintingVariants.java index 066a91667..41dd37619 100644 --- a/src/main/java/me/jddev0/ep/paintings/EPPaintingVariants.java +++ b/src/main/java/me/jddev0/ep/paintings/EPPaintingVariants.java @@ -5,6 +5,9 @@ import net.minecraft.registry.Registerable; import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; +import net.minecraft.text.Text; + +import java.util.Optional; public final class EPPaintingVariants { private EPPaintingVariants() {} @@ -24,6 +27,8 @@ public static RegistryKey registerKey(String name) { private static void register(Registerable context, RegistryKey key, int width, int height) { - context.register(key, new PaintingVariant(width, height, key.getValue())); + context.register(key, new PaintingVariant(width, height, key.getValue(), + Optional.of(Text.translatable("painting.energizedpower." + key.getValue().getPath() + ".title")), + Optional.of(Text.translatable("painting.energizedpower." + key.getValue().getPath() + ".author")))); } } diff --git a/src/main/java/me/jddev0/ep/recipe/AlloyFurnaceRecipe.java b/src/main/java/me/jddev0/ep/recipe/AlloyFurnaceRecipe.java index 42ecaf307..c0371fb67 100644 --- a/src/main/java/me/jddev0/ep/recipe/AlloyFurnaceRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/AlloyFurnaceRecipe.java @@ -3,15 +3,13 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.ArrayCodec; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; @@ -19,9 +17,11 @@ import net.minecraft.util.math.random.Random; import net.minecraft.world.World; +import java.util.Arrays; +import java.util.List; import java.util.Optional; -public class AlloyFurnaceRecipe implements Recipe { +public class AlloyFurnaceRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final OutputItemStackWithPercentages secondaryOutput; private final IngredientWithCount[] inputs; @@ -123,33 +123,44 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return ItemStack.EMPTY; + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.ALLOY_FURNACE_CATEGORY; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.ALLOY_FURNACE_ITEM); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public List getIngredients() { + return Arrays.stream(inputs).map(IngredientWithCount::input).toList(); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return Arrays.stream(inputs).map(IngredientWithCount::input).anyMatch(ingredient -> ingredient.test(itemStack)); + } + + @Override + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack) || (secondaryOutput != null && + ItemStack.areItemsAndComponentsEqual(secondaryOutput.output(), itemStack)); } public static final class Type implements RecipeType { @@ -166,11 +177,11 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("alloy_furnace"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), OutputItemStackWithPercentages.CODEC_NONEMPTY.optionalFieldOf("secondaryOutput").forGetter((recipe) -> { + }), OutputItemStackWithPercentages.CODEC_NONEMPTY.optionalFieldOf("secondaryResult").forGetter((recipe) -> { return Optional.ofNullable(recipe.secondaryOutput.isEmpty()?null:recipe.secondaryOutput); - }), new ArrayCodec<>(IngredientWithCount.CODEC_NONEMPTY, IngredientWithCount[]::new).fieldOf("inputs").forGetter((recipe) -> { + }), new ArrayCodec<>(IngredientWithCount.CODEC, IngredientWithCount[]::new).fieldOf("ingredients").forGetter((recipe) -> { return recipe.inputs; }), Codecs.POSITIVE_INT.fieldOf("ticks").forGetter((recipe) -> { return recipe.ticks; @@ -195,7 +206,7 @@ private static AlloyFurnaceRecipe read(RegistryByteBuf buffer) { int len = buffer.readInt(); IngredientWithCount[] inputs = new IngredientWithCount[len]; for(int i = 0;i < len;i++) - inputs[i] = IngredientWithCount.OPTIONAL_STREAM_CODEC.decode(buffer); + inputs[i] = IngredientWithCount.STREAM_CODEC.decode(buffer); int ticks = buffer.readInt(); @@ -209,7 +220,7 @@ private static AlloyFurnaceRecipe read(RegistryByteBuf buffer) { private static void write(RegistryByteBuf buffer, AlloyFurnaceRecipe recipe) { buffer.writeInt(recipe.inputs.length); for(int i = 0; i < recipe.inputs.length; i++) - IngredientWithCount.OPTIONAL_STREAM_CODEC.encode(buffer, recipe.inputs[i]); + IngredientWithCount.STREAM_CODEC.encode(buffer, recipe.inputs[i]); buffer.writeInt(recipe.ticks); diff --git a/src/main/java/me/jddev0/ep/recipe/AssemblingMachineRecipe.java b/src/main/java/me/jddev0/ep/recipe/AssemblingMachineRecipe.java index b1a22a507..a09099e24 100644 --- a/src/main/java/me/jddev0/ep/recipe/AssemblingMachineRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/AssemblingMachineRecipe.java @@ -3,21 +3,22 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.ArrayCodec; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; import net.minecraft.world.World; -public class AssemblingMachineRecipe implements Recipe { +import java.util.Arrays; +import java.util.List; + +public class AssemblingMachineRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final IngredientWithCount[] inputs; @@ -83,33 +84,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.ASSEMBLING_MACHINE_CATEGORY; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.ASSEMBLING_MACHINE_ITEM); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public List getIngredients() { + return Arrays.stream(inputs).map(IngredientWithCount::input).toList(); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return Arrays.stream(inputs).map(IngredientWithCount::input).anyMatch(ingredient -> ingredient.test(itemStack)); + } + + @Override + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -126,9 +137,9 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("assembling_machine"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), new ArrayCodec<>(IngredientWithCount.CODEC_NONEMPTY, IngredientWithCount[]::new).fieldOf("inputs").forGetter((recipe) -> { + }), new ArrayCodec<>(IngredientWithCount.CODEC, IngredientWithCount[]::new).fieldOf("ingredients").forGetter((recipe) -> { return recipe.inputs; })).apply(instance, AssemblingMachineRecipe::new); }); @@ -150,7 +161,7 @@ private static AssemblingMachineRecipe read(RegistryByteBuf buffer) { int len = buffer.readInt(); IngredientWithCount[] inputs = new IngredientWithCount[len]; for(int i = 0;i < len;i++) - inputs[i] = IngredientWithCount.OPTIONAL_STREAM_CODEC.decode(buffer); + inputs[i] = IngredientWithCount.STREAM_CODEC.decode(buffer); ItemStack output = ItemStack.OPTIONAL_PACKET_CODEC.decode(buffer); @@ -160,7 +171,7 @@ private static AssemblingMachineRecipe read(RegistryByteBuf buffer) { private static void write(RegistryByteBuf buffer, AssemblingMachineRecipe recipe) { buffer.writeInt(recipe.inputs.length); for(int i = 0; i < recipe.inputs.length; i++) - IngredientWithCount.OPTIONAL_STREAM_CODEC.encode(buffer, recipe.inputs[i]); + IngredientWithCount.STREAM_CODEC.encode(buffer, recipe.inputs[i]); ItemStack.OPTIONAL_PACKET_CODEC.encode(buffer, recipe.output); } diff --git a/src/main/java/me/jddev0/ep/recipe/ChargerRecipe.java b/src/main/java/me/jddev0/ep/recipe/ChargerRecipe.java index c924e7444..3a73a969b 100644 --- a/src/main/java/me/jddev0/ep/recipe/ChargerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/ChargerRecipe.java @@ -3,20 +3,21 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; -public class ChargerRecipe implements Recipe { +import java.util.List; + +public class ChargerRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final Ingredient input; private final int energyConsumption; @@ -53,40 +54,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.CHARGER_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.CHARGER_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -103,9 +107,9 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("charger"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), Codecs.POSITIVE_INT.fieldOf("energy").forGetter((recipe) -> { return recipe.energyConsumption; diff --git a/src/main/java/me/jddev0/ep/recipe/CompressorRecipe.java b/src/main/java/me/jddev0/ep/recipe/CompressorRecipe.java index cd2f3a813..6b017a4d9 100644 --- a/src/main/java/me/jddev0/ep/recipe/CompressorRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/CompressorRecipe.java @@ -3,48 +3,42 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; -import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; -public class CompressorRecipe implements Recipe { +import java.util.List; + +public class CompressorRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; - private final Ingredient input; - private final int inputCount; + private final IngredientWithCount input; - public CompressorRecipe(ItemStack output, Ingredient input, int inputCount) { + public CompressorRecipe(ItemStack output, IngredientWithCount input) { this.output = output; this.input = input; - this.inputCount = inputCount; } public ItemStack getOutputItem() { return output; } - public Ingredient getInputItem() { + public IngredientWithCount getInput() { return input; } - public int getInputCount() { - return inputCount; - } - @Override public boolean matches(RecipeInput container, World level) { if(level.isClient()) return false; - return input.test(container.getStackInSlot(0)) && container.getStackInSlot(0).getCount() >= inputCount; + return input.input().test(container.getStackInSlot(0)) && container.getStackInSlot(0).getCount() >= input.count(); } @Override @@ -53,40 +47,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.COMPRESSOR_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.COMPRESSOR_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input.input()); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.input().test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -103,12 +100,10 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("compressor"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), IngredientWithCount.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; - }), Codecs.POSITIVE_INT.optionalFieldOf("inputCount", 1).forGetter((recipe) -> { - return recipe.inputCount; })).apply(instance, CompressorRecipe::new); }); @@ -126,16 +121,14 @@ public PacketCodec packetCodec() { } private static CompressorRecipe read(RegistryByteBuf buffer) { - Ingredient input = Ingredient.PACKET_CODEC.decode(buffer); - int inputCount = buffer.readInt(); + IngredientWithCount input = IngredientWithCount.STREAM_CODEC.decode(buffer); ItemStack output = ItemStack.OPTIONAL_PACKET_CODEC.decode(buffer); - return new CompressorRecipe(output, input, inputCount); + return new CompressorRecipe(output, input); } private static void write(RegistryByteBuf buffer, CompressorRecipe recipe) { - Ingredient.PACKET_CODEC.encode(buffer, recipe.input); - buffer.writeInt(recipe.inputCount); + IngredientWithCount.STREAM_CODEC.encode(buffer, recipe.input); ItemStack.OPTIONAL_PACKET_CODEC.encode(buffer, recipe.output); } } diff --git a/src/main/java/me/jddev0/ep/recipe/ContainerRecipeInputWrapper.java b/src/main/java/me/jddev0/ep/recipe/ContainerRecipeInputWrapper.java index 8351f50b8..d3ff4882d 100644 --- a/src/main/java/me/jddev0/ep/recipe/ContainerRecipeInputWrapper.java +++ b/src/main/java/me/jddev0/ep/recipe/ContainerRecipeInputWrapper.java @@ -17,7 +17,7 @@ public ItemStack getStackInSlot(int slot) { } @Override - public int getSize() { + public int size() { return inventory.size(); } } diff --git a/src/main/java/me/jddev0/ep/recipe/CrusherRecipe.java b/src/main/java/me/jddev0/ep/recipe/CrusherRecipe.java index 7f1ed8f79..d474afc7a 100644 --- a/src/main/java/me/jddev0/ep/recipe/CrusherRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/CrusherRecipe.java @@ -3,19 +3,20 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; -public class CrusherRecipe implements Recipe { +import java.util.List; + +public class CrusherRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final Ingredient input; @@ -46,40 +47,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.CRUSHER_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.CRUSHER_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -96,9 +100,9 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("crusher"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; })).apply(instance, CrusherRecipe::new); }); diff --git a/src/main/java/me/jddev0/ep/recipe/CrystalGrowthChamberRecipe.java b/src/main/java/me/jddev0/ep/recipe/CrystalGrowthChamberRecipe.java index 60f352d00..9f1054586 100644 --- a/src/main/java/me/jddev0/ep/recipe/CrystalGrowthChamberRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/CrystalGrowthChamberRecipe.java @@ -3,14 +3,11 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; @@ -18,16 +15,16 @@ import net.minecraft.util.math.random.Random; import net.minecraft.world.World; -public class CrystalGrowthChamberRecipe implements Recipe { +import java.util.List; + +public class CrystalGrowthChamberRecipe implements EnergizedPowerBaseRecipe { private final OutputItemStackWithPercentages output; - private final Ingredient input; - private final int inputCount; + private final IngredientWithCount input; private final int ticks; - public CrystalGrowthChamberRecipe(OutputItemStackWithPercentages output, Ingredient input, int inputCount, int ticks) { + public CrystalGrowthChamberRecipe(OutputItemStackWithPercentages output, IngredientWithCount input, int ticks) { this.output = output; this.input = input; - this.inputCount = inputCount; this.ticks = ticks; } @@ -35,14 +32,10 @@ public OutputItemStackWithPercentages getOutput() { return output; } - public Ingredient getInput() { + public IngredientWithCount getInput() { return input; } - public int getInputCount() { - return inputCount; - } - public int getTicks() { return ticks; } @@ -66,7 +59,7 @@ public boolean matches(RecipeInput container, World level) { if(level.isClient()) return false; - return input.test(container.getStackInSlot(0)) && container.getStackInSlot(0).getCount() >= inputCount; + return input.input().test(container.getStackInSlot(0)) && container.getStackInSlot(0).getCount() >= input.count(); } @Override @@ -75,33 +68,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return ItemStack.EMPTY; + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.CRYSTAL_GROWTH_CHAMBER_CATEGORY; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.CRYSTAL_GROWTH_CHAMBER_ITEM); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public List getIngredients() { + return List.of(input.input()); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.input().test(itemStack); + } + + @Override + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output.output(), itemStack); } public static final class Type implements RecipeType { @@ -118,12 +121,10 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("crystal_growth_chamber"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(OutputItemStackWithPercentages.CODEC_NONEMPTY.fieldOf("output").forGetter((recipe) -> { + return instance.group(OutputItemStackWithPercentages.CODEC_NONEMPTY.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), IngredientWithCount.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; - }), Codecs.POSITIVE_INT.optionalFieldOf("inputCount", 1).forGetter((recipe) -> { - return recipe.inputCount; }), Codecs.POSITIVE_INT.fieldOf("ticks").forGetter((recipe) -> { return recipe.ticks; })).apply(instance, CrystalGrowthChamberRecipe::new); @@ -143,18 +144,16 @@ public PacketCodec packetCodec() { } private static CrystalGrowthChamberRecipe read(RegistryByteBuf buffer) { - Ingredient input = Ingredient.PACKET_CODEC.decode(buffer); - int inputCount = buffer.readInt(); + IngredientWithCount input = IngredientWithCount.STREAM_CODEC.decode(buffer); int ticks = buffer.readInt(); OutputItemStackWithPercentages output = OutputItemStackWithPercentages.OPTIONAL_STREAM_CODEC.decode(buffer); - return new CrystalGrowthChamberRecipe(output, input, inputCount, ticks); + return new CrystalGrowthChamberRecipe(output, input, ticks); } private static void write(RegistryByteBuf buffer, CrystalGrowthChamberRecipe recipe) { - Ingredient.PACKET_CODEC.encode(buffer, recipe.input); - buffer.writeInt(recipe.inputCount); + IngredientWithCount.STREAM_CODEC.encode(buffer, recipe.input); buffer.writeInt(recipe.ticks); OutputItemStackWithPercentages.OPTIONAL_STREAM_CODEC.encode(buffer, recipe.output); diff --git a/src/main/java/me/jddev0/ep/recipe/EPRecipes.java b/src/main/java/me/jddev0/ep/recipe/EPRecipes.java index bb4e02b65..6f2adcd77 100644 --- a/src/main/java/me/jddev0/ep/recipe/EPRecipes.java +++ b/src/main/java/me/jddev0/ep/recipe/EPRecipes.java @@ -4,98 +4,117 @@ import net.minecraft.recipe.Recipe; import net.minecraft.recipe.RecipeSerializer; import net.minecraft.recipe.RecipeType; -import net.minecraft.recipe.SpecialRecipeSerializer; +import net.minecraft.recipe.SpecialCraftingRecipe; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; public final class EPRecipes { private EPRecipes() {} + public static final RecipeBookCategory ENERGIZER_CATEGORY = createRecipeCategory("energizer"); public static final RecipeSerializer ENERGIZER_SERIALIZER = createSerializer("energizer", EnergizerRecipe.Serializer.INSTANCE); public static final RecipeType ENERGIZER_TYPE = createRecipeType("energizer", EnergizerRecipe.Type.INSTANCE); + public static final RecipeBookCategory CHARGER_CATEGORY = createRecipeCategory("charger"); public static final RecipeSerializer CHARGER_SERIALIZER = createSerializer("charger", ChargerRecipe.Serializer.INSTANCE); public static final RecipeType CHARGER_TYPE = createRecipeType("charger", ChargerRecipe.Type.INSTANCE); + public static final RecipeBookCategory CRUSHER_CATEGORY = createRecipeCategory("crusher"); public static final RecipeSerializer CRUSHER_SERIALIZER = createSerializer("crusher", CrusherRecipe.Serializer.INSTANCE); public static final RecipeType CRUSHER_TYPE = createRecipeType("crusher", CrusherRecipe.Type.INSTANCE); + public static final RecipeBookCategory SAWMILL_CATEGORY = createRecipeCategory("sawmill"); public static final RecipeSerializer SAWMILL_SERIALIZER = createSerializer("sawmill", SawmillRecipe.Serializer.INSTANCE); public static final RecipeType SAWMILL_TYPE = createRecipeType("sawmill", SawmillRecipe.Type.INSTANCE); + public static final RecipeBookCategory COMPRESSOR_CATEGORY = createRecipeCategory("compressor"); public static final RecipeSerializer COMPRESSOR_SERIALIZER = createSerializer("compressor", CompressorRecipe.Serializer.INSTANCE); public static final RecipeType COMPRESSOR_TYPE = createRecipeType("compressor", CompressorRecipe.Type.INSTANCE); + public static final RecipeBookCategory PULVERIZER_CATEGORY = createRecipeCategory("pulverizer"); public static final RecipeSerializer PULVERIZER_SERIALIZER = createSerializer("pulverizer", PulverizerRecipe.Serializer.INSTANCE); public static final RecipeType PULVERIZER_TYPE = createRecipeType("pulverizer", PulverizerRecipe.Type.INSTANCE); + public static final RecipeBookCategory PLANT_GROWTH_CHAMBER_CATEGORY = createRecipeCategory("plant_growth_chamber"); public static final RecipeSerializer PLANT_GROWTH_CHAMBER_SERIALIZER = createSerializer("plant_growth_chamber", PlantGrowthChamberRecipe.Serializer.INSTANCE); public static final RecipeType PLANT_GROWTH_CHAMBER_TYPE = createRecipeType("plant_growth_chamber", PlantGrowthChamberRecipe.Type.INSTANCE); + public static final RecipeBookCategory PLANT_GROWTH_CHAMBER_FERTILIZER_CATEGORY = createRecipeCategory("plant_growth_chamber_fertilizer"); public static final RecipeSerializer PLANT_GROWTH_CHAMBER_FERTILIZER_SERIALIZER = createSerializer("plant_growth_chamber_fertilizer", PlantGrowthChamberFertilizerRecipe.Serializer.INSTANCE); public static final RecipeType PLANT_GROWTH_CHAMBER_FERTILIZER_TYPE = createRecipeType("plant_growth_chamber_fertilizer", PlantGrowthChamberFertilizerRecipe.Type.INSTANCE); + public static final RecipeBookCategory HEAT_GENERATOR_CATEGORY = createRecipeCategory("heat_generator"); public static final RecipeSerializer HEAT_GENERATOR_SERIALIZER = createSerializer("heat_generator", HeatGeneratorRecipe.Serializer.INSTANCE); public static final RecipeType HEAT_GENERATOR_TYPE = createRecipeType("heat_generator", HeatGeneratorRecipe.Type.INSTANCE); + public static final RecipeBookCategory THERMAL_GENERATOR_CATEGORY = createRecipeCategory("thermal_generator"); public static final RecipeSerializer THERMAL_GENERATOR_SERIALIZER = createSerializer("thermal_generator", ThermalGeneratorRecipe.Serializer.INSTANCE); public static final RecipeType THERMAL_GENERATOR_TYPE = createRecipeType("thermal_generator", ThermalGeneratorRecipe.Type.INSTANCE); + public static final RecipeBookCategory PRESS_MOLD_MAKER_CATEGORY = createRecipeCategory("press_mold_maker"); public static final RecipeSerializer PRESS_MOLD_MAKER_SERIALIZER = createSerializer("press_mold_maker", PressMoldMakerRecipe.Serializer.INSTANCE); public static final RecipeType PRESS_MOLD_MAKER_TYPE = createRecipeType("press_mold_maker", PressMoldMakerRecipe.Type.INSTANCE); + public static final RecipeBookCategory METAL_PRESS_CATEGORY = createRecipeCategory("metal_press"); public static final RecipeSerializer METAL_PRESS_SERIALIZER = createSerializer("metal_press", MetalPressRecipe.Serializer.INSTANCE); public static final RecipeType METAL_PRESS_TYPE = createRecipeType("metal_press", MetalPressRecipe.Type.INSTANCE); + public static final RecipeBookCategory ASSEMBLING_MACHINE_CATEGORY = createRecipeCategory("assembling_machine"); public static final RecipeSerializer ASSEMBLING_MACHINE_SERIALIZER = createSerializer("assembling_machine", AssemblingMachineRecipe.Serializer.INSTANCE); public static final RecipeType ASSEMBLING_MACHINE_TYPE = createRecipeType("assembling_machine", AssemblingMachineRecipe.Type.INSTANCE); + public static final RecipeBookCategory STONE_SOLIDIFIER_CATEGORY = createRecipeCategory("stone_solidifier"); public static final RecipeSerializer STONE_SOLIDIFIER_SERIALIZER = createSerializer("stone_solidifier", StoneSolidifierRecipe.Serializer.INSTANCE); public static final RecipeType STONE_SOLIDIFIER_TYPE = createRecipeType("stone_solidifier", StoneSolidifierRecipe.Type.INSTANCE); + public static final RecipeBookCategory FILTRATION_PLANT_CATEGORY = createRecipeCategory("filtration_plant"); public static final RecipeSerializer FILTRATION_PLANT_SERIALIZER = createSerializer("filtration_plant", FiltrationPlantRecipe.Serializer.INSTANCE); public static final RecipeType FILTRATION_PLANT_TYPE = createRecipeType("filtration_plant", FiltrationPlantRecipe.Type.INSTANCE); + public static final RecipeBookCategory CRYSTAL_GROWTH_CHAMBER_CATEGORY = createRecipeCategory("crystal_growth_chamber"); public static final RecipeSerializer CRYSTAL_GROWTH_CHAMBER_SERIALIZER = createSerializer("crystal_growth_chamber", CrystalGrowthChamberRecipe.Serializer.INSTANCE); public static final RecipeType CRYSTAL_GROWTH_CHAMBER_TYPE = createRecipeType("crystal_growth_chamber", CrystalGrowthChamberRecipe.Type.INSTANCE); + public static final RecipeBookCategory FLUID_TRANSPOSER_CATEGORY = createRecipeCategory("fluid_transposer"); public static final RecipeSerializer FLUID_TRANSPOSER_SERIALIZER = createSerializer("fluid_transposer", FluidTransposerRecipe.Serializer.INSTANCE); public static final RecipeType FLUID_TRANSPOSER_TYPE = createRecipeType("fluid_transposer", FluidTransposerRecipe.Type.INSTANCE); + public static final RecipeBookCategory ALLOY_FURNACE_CATEGORY = createRecipeCategory("alloy_furnace"); public static final RecipeSerializer ALLOY_FURNACE_SERIALIZER = createSerializer("alloy_furnace", AlloyFurnaceRecipe.Serializer.INSTANCE); public static final RecipeType ALLOY_FURNACE_TYPE = @@ -103,7 +122,7 @@ private EPRecipes() {} public static final RecipeSerializer TELEPORTER_MATRIX_SETTINGS_COPY_SERIALIZER = createSerializer("teleporter_matrix_settings_copy", - new SpecialRecipeSerializer<>(TeleporterMatrixSettingsCopyRecipe::new)); + new SpecialCraftingRecipe.SpecialRecipeSerializer<>(TeleporterMatrixSettingsCopyRecipe::new)); private static > RecipeSerializer createSerializer(String name, RecipeSerializer instance) { return Registry.register(Registries.RECIPE_SERIALIZER, EPAPI.id(name), instance); @@ -111,6 +130,9 @@ private static > RecipeSerializer createSerializer(String private static > RecipeType createRecipeType(String name, RecipeType instance) { return Registry.register(Registries.RECIPE_TYPE, EPAPI.id(name), instance); } + private static RecipeBookCategory createRecipeCategory(String name) { + return Registry.register(Registries.RECIPE_BOOK_CATEGORY, EPAPI.id(name), new RecipeBookCategory()); + } public static void register() { diff --git a/src/main/java/me/jddev0/ep/recipe/EnergizedPowerBaseRecipe.java b/src/main/java/me/jddev0/ep/recipe/EnergizedPowerBaseRecipe.java new file mode 100644 index 000000000..28384c01a --- /dev/null +++ b/src/main/java/me/jddev0/ep/recipe/EnergizedPowerBaseRecipe.java @@ -0,0 +1,16 @@ +package me.jddev0.ep.recipe; + +import net.minecraft.item.ItemStack; +import net.minecraft.recipe.Ingredient; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.input.RecipeInput; + +import java.util.List; + +public interface EnergizedPowerBaseRecipe extends Recipe { + List getIngredients(); + + boolean isIngredient(ItemStack itemStack); + + boolean isResult(ItemStack itemStack); +} diff --git a/src/main/java/me/jddev0/ep/recipe/EnergizerRecipe.java b/src/main/java/me/jddev0/ep/recipe/EnergizerRecipe.java index b9c415a06..073075daf 100644 --- a/src/main/java/me/jddev0/ep/recipe/EnergizerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/EnergizerRecipe.java @@ -3,20 +3,21 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; -public class EnergizerRecipe implements Recipe { +import java.util.List; + +public class EnergizerRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final Ingredient input; private final int energyConsumption; @@ -53,40 +54,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.ENERGIZER_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.ENERGIZER_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -103,9 +107,9 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("energizer"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), Codecs.POSITIVE_INT.fieldOf("energy").forGetter((recipe) -> { return recipe.energyConsumption; diff --git a/src/main/java/me/jddev0/ep/recipe/FiltrationPlantRecipe.java b/src/main/java/me/jddev0/ep/recipe/FiltrationPlantRecipe.java index 493372584..c190e722f 100644 --- a/src/main/java/me/jddev0/ep/recipe/FiltrationPlantRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/FiltrationPlantRecipe.java @@ -3,22 +3,21 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; import net.minecraft.util.math.random.Random; import net.minecraft.world.World; +import java.util.List; import java.util.Optional; -public class FiltrationPlantRecipe implements Recipe { +public class FiltrationPlantRecipe implements EnergizedPowerBaseRecipe { private final OutputItemStackWithPercentages output; private final OutputItemStackWithPercentages secondaryOutput; private final Identifier icon; @@ -77,32 +76,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return ItemStack.EMPTY; + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.FILTRATION_PLANT_CATEGORY; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.FILTRATION_PLANT_ITEM); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return false; + } + + @Override + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output.output(), itemStack) || (secondaryOutput != null && + ItemStack.areItemsAndComponentsEqual(secondaryOutput.output(), itemStack)); } @Override - public RecipeType getType() { + public RecipeType> getType() { return Type.INSTANCE; } @@ -120,9 +130,9 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("filtration_plant"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(OutputItemStackWithPercentages.CODEC_NONEMPTY.fieldOf("output").forGetter((recipe) -> { + return instance.group(OutputItemStackWithPercentages.CODEC_NONEMPTY.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), OutputItemStackWithPercentages.CODEC_NONEMPTY.optionalFieldOf("secondaryOutput").forGetter((recipe) -> { + }), OutputItemStackWithPercentages.CODEC_NONEMPTY.optionalFieldOf("secondaryResult").forGetter((recipe) -> { return Optional.ofNullable(recipe.secondaryOutput.isEmpty()?null:recipe.secondaryOutput); }), Identifier.CODEC.fieldOf("icon").forGetter((recipe) -> { return recipe.icon; diff --git a/src/main/java/me/jddev0/ep/recipe/FluidTransposerRecipe.java b/src/main/java/me/jddev0/ep/recipe/FluidTransposerRecipe.java index 287fed70a..b6c50f62f 100644 --- a/src/main/java/me/jddev0/ep/recipe/FluidTransposerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/FluidTransposerRecipe.java @@ -3,24 +3,22 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.FluidTransposerBlockEntity; import me.jddev0.ep.codec.CodecFix; import me.jddev0.ep.fluid.FluidStack; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; -public class FluidTransposerRecipe implements Recipe { +import java.util.List; + +public class FluidTransposerRecipe implements EnergizedPowerBaseRecipe { private final FluidTransposerBlockEntity.Mode mode; private final ItemStack output; private final Ingredient input; @@ -63,40 +61,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.FLUID_TRANSPOSER_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.FLUID_TRANSPOSER_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -115,9 +116,9 @@ private Serializer() {} private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { return instance.group(FluidTransposerBlockEntity.Mode.CODEC.fieldOf("mode").forGetter((recipe) -> { return recipe.mode; - }), CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + }), CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), FluidStack.CODEC_MILLIBUCKETS.fieldOf("fluid").forGetter((recipe) -> { return recipe.fluid; diff --git a/src/main/java/me/jddev0/ep/recipe/FurnaceRecipeTypePacketUpdate.java b/src/main/java/me/jddev0/ep/recipe/FurnaceRecipeTypePacketUpdate.java deleted file mode 100644 index da7c54dd5..000000000 --- a/src/main/java/me/jddev0/ep/recipe/FurnaceRecipeTypePacketUpdate.java +++ /dev/null @@ -1,11 +0,0 @@ -package me.jddev0.ep.recipe; - -import net.minecraft.recipe.AbstractCookingRecipe; -import net.minecraft.recipe.RecipeType; - -/** - * Used for SyncFurnaceRecipeTypeS2CPacket - */ -public interface FurnaceRecipeTypePacketUpdate { - void setRecipeType(RecipeType recipeType); -} diff --git a/src/main/java/me/jddev0/ep/recipe/HeatGeneratorRecipe.java b/src/main/java/me/jddev0/ep/recipe/HeatGeneratorRecipe.java index aa6213feb..0b70e4273 100644 --- a/src/main/java/me/jddev0/ep/recipe/HeatGeneratorRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/HeatGeneratorRecipe.java @@ -5,22 +5,22 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.ArrayCodec; import net.minecraft.fluid.Fluid; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; import net.minecraft.world.World; -public class HeatGeneratorRecipe implements Recipe { +import java.util.List; + +public class HeatGeneratorRecipe implements EnergizedPowerBaseRecipe { private final Fluid[] input; private final long energyProduction; @@ -48,33 +48,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return ItemStack.EMPTY; + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.HEAT_GENERATOR_CATEGORY; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.HEAT_GENERATOR_ITEM); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public List getIngredients() { + return List.of(); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return false; + } + + @Override + public boolean isResult(ItemStack itemStack) { + return false; } public static final class Type implements RecipeType { @@ -92,7 +102,7 @@ private Serializer() {} private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { return instance.group(Codec.either(new ArrayCodec<>(Registries.FLUID.getCodec(), Fluid[]::new), - Registries.FLUID.getCodec()).fieldOf("input").forGetter((recipe) -> { + Registries.FLUID.getCodec()).fieldOf("ingredient").forGetter((recipe) -> { return recipe.input.length == 1?Either.right(recipe.input[0]):Either.left(recipe.input); }), Codec.LONG.fieldOf("energy").forGetter((recipe) -> { return recipe.energyProduction; diff --git a/src/main/java/me/jddev0/ep/recipe/IngredientPacketUpdate.java b/src/main/java/me/jddev0/ep/recipe/IngredientPacketUpdate.java new file mode 100644 index 000000000..89297af2b --- /dev/null +++ b/src/main/java/me/jddev0/ep/recipe/IngredientPacketUpdate.java @@ -0,0 +1,12 @@ +package me.jddev0.ep.recipe; + +import net.minecraft.recipe.Ingredient; + +import java.util.List; + +/** + * Used for SyncIngredientsS2CPacket + */ +public interface IngredientPacketUpdate { + void setIngredients(int index, List ingredients); +} diff --git a/src/main/java/me/jddev0/ep/recipe/IngredientWithCount.java b/src/main/java/me/jddev0/ep/recipe/IngredientWithCount.java index f1b66bf1d..2025876f2 100644 --- a/src/main/java/me/jddev0/ep/recipe/IngredientWithCount.java +++ b/src/main/java/me/jddev0/ep/recipe/IngredientWithCount.java @@ -10,39 +10,25 @@ import org.jetbrains.annotations.NotNull; public record IngredientWithCount(Ingredient input, int count) { - public static final IngredientWithCount EMPTY = new IngredientWithCount(Ingredient.EMPTY, 0); - public IngredientWithCount(Ingredient input) { this(input, 1); } - public boolean isEmpty() { - return input.isEmpty() || count <= 0; - } - - public static final Codec CODEC_NONEMPTY = RecordCodecBuilder.create((instance) -> { - return instance.group(Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("input").forGetter((input) -> { - return input.input; - }), Codecs.POSITIVE_INT.optionalFieldOf("count", 1).forGetter((input) -> { - return input.count; - })).apply(instance, IngredientWithCount::new); - }); - public static final Codec CODEC = RecordCodecBuilder.create((instance) -> { - return instance.group(Ingredient.ALLOW_EMPTY_CODEC.fieldOf("input").forGetter((input) -> { + return instance.group(Ingredient.CODEC.fieldOf("ingredient").forGetter((input) -> { return input.input; - }), Codec.INT.optionalFieldOf("count", 1).forGetter((input) -> { + }), Codecs.POSITIVE_INT.optionalFieldOf("count", 1).forGetter((input) -> { return input.count; })).apply(instance, IngredientWithCount::new); }); - public static final PacketCodec OPTIONAL_STREAM_CODEC = new PacketCodec<>() { + public static final PacketCodec STREAM_CODEC = new PacketCodec<>() { @Override @NotNull public IngredientWithCount decode(@NotNull RegistryByteBuf buffer) { int count = buffer.readInt(); if(count <= 0) - return IngredientWithCount.EMPTY; + throw new DecoderException("Empty IngredientWithCount not allowed"); Ingredient input = Ingredient.PACKET_CODEC.decode(buffer); return new IngredientWithCount(input, count); @@ -50,32 +36,11 @@ public IngredientWithCount decode(@NotNull RegistryByteBuf buffer) { @Override public void encode(@NotNull RegistryByteBuf buffer, IngredientWithCount ingredient) { - if(ingredient.isEmpty()) { - buffer.writeInt(0); - }else { - buffer.writeInt(ingredient.count); - Ingredient.PACKET_CODEC.encode(buffer, ingredient.input); - } - } - }; - - public static final PacketCodec STREAM_CODEC = new PacketCodec<>() { - @Override - @NotNull - public IngredientWithCount decode(@NotNull RegistryByteBuf buffer) { - IngredientWithCount ingredient = IngredientWithCount.OPTIONAL_STREAM_CODEC.decode(buffer); - if(ingredient.isEmpty()) - throw new DecoderException("Empty IngredientWithCount not allowed"); - - return ingredient; - } - - @Override - public void encode(@NotNull RegistryByteBuf buffer, IngredientWithCount ingredient) { - if(ingredient.isEmpty()) + if(ingredient.count <= 0) throw new DecoderException("Empty IngredientWithCount not allowed"); - IngredientWithCount.OPTIONAL_STREAM_CODEC.encode(buffer, ingredient); + buffer.writeInt(ingredient.count); + Ingredient.PACKET_CODEC.encode(buffer, ingredient.input); } }; } diff --git a/src/main/java/me/jddev0/ep/recipe/MetalPressRecipe.java b/src/main/java/me/jddev0/ep/recipe/MetalPressRecipe.java index 9a62ed74f..a6d3705e6 100644 --- a/src/main/java/me/jddev0/ep/recipe/MetalPressRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/MetalPressRecipe.java @@ -3,32 +3,28 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; -public class MetalPressRecipe implements Recipe { +import java.util.List; + +public class MetalPressRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final ItemStack pressMold; - private final Ingredient input; - private final int inputCount; + private final IngredientWithCount input; - public MetalPressRecipe(ItemStack output, ItemStack pressMold, Ingredient input, int inputCount) { + public MetalPressRecipe(ItemStack output, ItemStack pressMold, IngredientWithCount input) { this.output = output; this.pressMold = pressMold; this.input = input; - this.inputCount = inputCount; } public ItemStack getOutput() { @@ -39,20 +35,16 @@ public ItemStack getPressMold() { return pressMold; } - public Ingredient getInput() { + public IngredientWithCount getInput() { return input; } - public int getInputCount() { - return inputCount; - } - @Override public boolean matches(RecipeInput container, World level) { if(level.isClient()) return false; - return input.test(container.getStackInSlot(0)) && container.getStackInSlot(0).getCount() >= inputCount && + return input.input().test(container.getStackInSlot(0)) && container.getStackInSlot(0).getCount() >= input.count() && ItemStack.areItemsEqual(pressMold, container.getStackInSlot(1)); } @@ -62,33 +54,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.METAL_PRESS_CATEGORY; + } + + @Override + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.METAL_PRESS_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input.input()); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.input().test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -105,14 +107,12 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("metal_press"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; }), CodecFix.ITEM_STACK_CODEC.fieldOf("pressMold").forGetter((recipe) -> { return recipe.pressMold; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), IngredientWithCount.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; - }), Codecs.POSITIVE_INT.optionalFieldOf("inputCount", 1).forGetter((recipe) -> { - return recipe.inputCount; })).apply(instance, MetalPressRecipe::new); }); @@ -130,17 +130,15 @@ public PacketCodec packetCodec() { } private static MetalPressRecipe read(RegistryByteBuf buffer) { - Ingredient input = Ingredient.PACKET_CODEC.decode(buffer); - int inputCount = buffer.readInt(); + IngredientWithCount input = IngredientWithCount.STREAM_CODEC.decode(buffer); ItemStack pressMold = ItemStack.OPTIONAL_PACKET_CODEC.decode(buffer); ItemStack output = ItemStack.OPTIONAL_PACKET_CODEC.decode(buffer); - return new MetalPressRecipe(output, pressMold, input, inputCount); + return new MetalPressRecipe(output, pressMold, input); } private static void write(RegistryByteBuf buffer, MetalPressRecipe recipe) { - Ingredient.PACKET_CODEC.encode(buffer, recipe.input); - buffer.writeInt(recipe.inputCount); + IngredientWithCount.STREAM_CODEC.encode(buffer, recipe.input); ItemStack.OPTIONAL_PACKET_CODEC.encode(buffer, recipe.pressMold); ItemStack.OPTIONAL_PACKET_CODEC.encode(buffer, recipe.output); } diff --git a/src/main/java/me/jddev0/ep/recipe/OutputItemStackWithPercentages.java b/src/main/java/me/jddev0/ep/recipe/OutputItemStackWithPercentages.java index 4c06acb80..8e3fca748 100644 --- a/src/main/java/me/jddev0/ep/recipe/OutputItemStackWithPercentages.java +++ b/src/main/java/me/jddev0/ep/recipe/OutputItemStackWithPercentages.java @@ -49,7 +49,7 @@ public DataResult encode(double[] input, DynamicOps ops, T prefix) { }; public static final Codec CODEC_NONEMPTY = RecordCodecBuilder.create((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((output) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((output) -> { return output.output; }), DOUBLE_ARRAY_CODEC.fieldOf("percentages").forGetter((output) -> { return output.percentages; diff --git a/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberFertilizerRecipe.java b/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberFertilizerRecipe.java index 1813c301f..a94a0b482 100644 --- a/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberFertilizerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberFertilizerRecipe.java @@ -4,21 +4,19 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Ingredient; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.world.World; -public class PlantGrowthChamberFertilizerRecipe implements Recipe { +import java.util.List; + +public class PlantGrowthChamberFertilizerRecipe implements EnergizedPowerBaseRecipe { private final Ingredient input; private final double speedMultiplier; private final double energyConsumptionMultiplier; @@ -55,40 +53,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return ItemStack.EMPTY; + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return false; } public static final class Type implements RecipeType { @@ -105,7 +106,7 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("plant_growth_chamber_fertilizer"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + return instance.group(Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), Codec.DOUBLE.fieldOf("speedMultiplier").forGetter((recipe) -> { return recipe.speedMultiplier; diff --git a/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberRecipe.java b/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberRecipe.java index bf5cc030e..1326f2de9 100644 --- a/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberRecipe.java @@ -3,21 +3,23 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.ArrayCodec; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.dynamic.Codecs; import net.minecraft.util.math.random.Random; import net.minecraft.world.World; -public class PlantGrowthChamberRecipe implements Recipe { +import java.util.Arrays; +import java.util.List; + +public class PlantGrowthChamberRecipe implements EnergizedPowerBaseRecipe { private final OutputItemStackWithPercentages[] outputs; private final Ingredient input; private final int ticks; @@ -80,40 +82,44 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return ItemStack.EMPTY; + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.PLANT_GROWTH_CHAMBER_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return Arrays.stream(outputs).map(OutputItemStackWithPercentages::output). + anyMatch(output -> ItemStack.areItemsAndComponentsEqual(output, itemStack)); } public static final class Type implements RecipeType { @@ -131,9 +137,9 @@ private Serializer() {} private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { return instance.group(new ArrayCodec<>(OutputItemStackWithPercentages.CODEC_NONEMPTY, OutputItemStackWithPercentages[]::new). - fieldOf("outputs").forGetter((recipe) -> { + fieldOf("results").forGetter((recipe) -> { return recipe.outputs; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), Codecs.POSITIVE_INT.fieldOf("ticks").forGetter((recipe) -> { return recipe.ticks; diff --git a/src/main/java/me/jddev0/ep/recipe/PressMoldMakerRecipe.java b/src/main/java/me/jddev0/ep/recipe/PressMoldMakerRecipe.java index 191d34202..491742544 100644 --- a/src/main/java/me/jddev0/ep/recipe/PressMoldMakerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/PressMoldMakerRecipe.java @@ -3,22 +3,22 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; -public class PressMoldMakerRecipe implements Recipe { +import java.util.List; + +public class PressMoldMakerRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final int clayCount; @@ -50,33 +50,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.PRESS_MOLD_MAKER_CATEGORY; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.PRESS_MOLD_MAKER_ITEM); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public List getIngredients() { + return List.of(Ingredient.ofItems(Items.CLAY_BALL)); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return itemStack.isOf(Items.CLAY_BALL); + } + + @Override + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -93,7 +103,7 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("press_mold_maker"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; }), Codecs.POSITIVE_INT.fieldOf("clayCount").forGetter((recipe) -> { return recipe.clayCount; diff --git a/src/main/java/me/jddev0/ep/recipe/PulverizerRecipe.java b/src/main/java/me/jddev0/ep/recipe/PulverizerRecipe.java index 2acbf06aa..462d7fcfb 100644 --- a/src/main/java/me/jddev0/ep/recipe/PulverizerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/PulverizerRecipe.java @@ -7,16 +7,15 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.math.random.Random; import net.minecraft.world.World; @@ -24,7 +23,7 @@ import java.util.List; import java.util.Optional; -public class PulverizerRecipe implements Recipe { +public class PulverizerRecipe implements EnergizedPowerBaseRecipe { private final OutputItemStackWithPercentages output; private final OutputItemStackWithPercentages secondaryOutput; private final Ingredient input; @@ -88,40 +87,44 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return ItemStack.EMPTY; + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.PULVERIZER_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.PULVERIZER_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output.output(), itemStack) || (secondaryOutput != null && + ItemStack.areItemsAndComponentsEqual(secondaryOutput.output(), itemStack)); } public static final class Type implements RecipeType { @@ -138,14 +141,14 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("pulverizer"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(OutputItemStackWithPercentages.createCodec(true).fieldOf("output").forGetter((recipe) -> { + return instance.group(OutputItemStackWithPercentages.createCodec(true).fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), OutputItemStackWithPercentages.createCodec(false).optionalFieldOf("secondaryOutput").forGetter((recipe) -> { + }), OutputItemStackWithPercentages.createCodec(false).optionalFieldOf("secondaryResult").forGetter((recipe) -> { if(recipe.secondaryOutput.output.isEmpty() || recipe.secondaryOutput.percentages.length == 0) return Optional.empty(); return Optional.of(recipe.secondaryOutput); - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; })).apply(instance, (output, secondaryOutput, input) -> new PulverizerRecipe(output, secondaryOutput.orElse(new OutputItemStackWithPercentages(ItemStack.EMPTY, new double[0], new double[0])), @@ -245,7 +248,7 @@ public DataResult encode(double[] input, DynamicOps ops, T prefix) { public static Codec createCodec(boolean atLeastOnePercentageValue) { return RecordCodecBuilder.create((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((output) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((output) -> { return output.output; }), createDoubleArrayCodec(atLeastOnePercentageValue).fieldOf("percentages").forGetter((output) -> { return output.percentages; diff --git a/src/main/java/me/jddev0/ep/recipe/SawmillRecipe.java b/src/main/java/me/jddev0/ep/recipe/SawmillRecipe.java index 54a296a2c..725fd9829 100644 --- a/src/main/java/me/jddev0/ep/recipe/SawmillRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/SawmillRecipe.java @@ -3,22 +3,23 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import me.jddev0.ep.item.EPItems; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; -import net.minecraft.util.collection.DefaultedList; import net.minecraft.util.dynamic.Codecs; import net.minecraft.world.World; + +import java.util.List; import java.util.Optional; -public class SawmillRecipe implements Recipe { +public class SawmillRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final ItemStack secondaryOutput; private final Ingredient input; @@ -59,40 +60,44 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.SAWMILL_CATEGORY; } @Override - public DefaultedList getIngredients() { - DefaultedList ingredients = DefaultedList.ofSize(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.SAWMILL_ITEM); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public List getIngredients() { + return List.of(input); } @Override - public RecipeSerializer getSerializer() { - return SawmillRecipe.Serializer.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeType getType() { - return SawmillRecipe.Type.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack) || (secondaryOutput != null && + ItemStack.areItemsAndComponentsEqual(secondaryOutput, itemStack)); } public static final class Type implements RecipeType { @@ -109,17 +114,17 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("sawmill"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; - }), Ingredient.DISALLOW_EMPTY_CODEC.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; - }), Codecs.NONNEGATIVE_INT.optionalFieldOf("sawdustAmount").forGetter((recipe) -> { + }), Codecs.NON_NEGATIVE_INT.optionalFieldOf("sawdustAmount").forGetter((recipe) -> { if(recipe.secondaryOutput.isEmpty()) return Optional.of(0); return ItemStack.areItemsAndComponentsEqual(recipe.secondaryOutput, new ItemStack(EPItems.SAWDUST))? Optional.of(recipe.secondaryOutput.getCount()):Optional.empty(); - }), CodecFix.ITEM_STACK_CODEC.optionalFieldOf("secondaryOutput").forGetter((recipe) -> { + }), CodecFix.ITEM_STACK_CODEC.optionalFieldOf("secondaryResult").forGetter((recipe) -> { if(recipe.secondaryOutput.isEmpty()) return Optional.empty(); diff --git a/src/main/java/me/jddev0/ep/recipe/StoneSolidifierRecipe.java b/src/main/java/me/jddev0/ep/recipe/StoneSolidifierRecipe.java index fa3a81121..2955dcc8d 100644 --- a/src/main/java/me/jddev0/ep/recipe/StoneSolidifierRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/StoneSolidifierRecipe.java @@ -4,20 +4,20 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.CodecFix; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.util.Identifier; import net.minecraft.world.World; -public class StoneSolidifierRecipe implements Recipe { +import java.util.List; + +public class StoneSolidifierRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final long waterAmount; private final long lavaAmount; @@ -51,33 +51,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return output.copy(); + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.STONE_SOLIDIFIER_CATEGORY; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.STONE_SOLIDIFIER); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public List getIngredients() { + return List.of(); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return false; + } + + @Override + public boolean isResult(ItemStack itemStack) { + return ItemStack.areItemsAndComponentsEqual(output, itemStack); } public static final class Type implements RecipeType { @@ -94,7 +104,7 @@ private Serializer() {} public static final Identifier ID = EPAPI.id("stone_solidifier"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("output").forGetter((recipe) -> { + return instance.group(CodecFix.ITEM_STACK_CODEC.fieldOf("result").forGetter((recipe) -> { return recipe.output; }), Codec.LONG.fieldOf("waterAmount").forGetter((recipe) -> { return recipe.waterAmount; diff --git a/src/main/java/me/jddev0/ep/recipe/TeleporterMatrixSettingsCopyRecipe.java b/src/main/java/me/jddev0/ep/recipe/TeleporterMatrixSettingsCopyRecipe.java index 6eaa24a79..a1a9666e4 100644 --- a/src/main/java/me/jddev0/ep/recipe/TeleporterMatrixSettingsCopyRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/TeleporterMatrixSettingsCopyRecipe.java @@ -21,7 +21,7 @@ public boolean matches(CraftingRecipeInput container, World level) { ItemStack linkedTransportMatrix = ItemStack.EMPTY; int count = 0; - for(int i = 0;i < container.getSize();i++) { + for(int i = 0;i < container.size();i++) { ItemStack itemStack = container.getStackInSlot(i); if(!itemStack.isEmpty()) { if(!itemStack.isOf(EPItems.TELEPORTER_MATRIX)) @@ -50,7 +50,7 @@ public ItemStack craft(CraftingRecipeInput container, RegistryWrapper.WrapperLoo ItemStack linkedTransportMatrix = ItemStack.EMPTY; int count = 0; - for(int i = 0;i < container.getSize();i++) { + for(int i = 0;i < container.size();i++) { ItemStack itemStack = container.getStackInSlot(i); if(!itemStack.isEmpty()) { if(!itemStack.isOf(EPItems.TELEPORTER_MATRIX)) @@ -76,13 +76,8 @@ public ItemStack craft(CraftingRecipeInput container, RegistryWrapper.WrapperLoo } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return new ItemStack(EPItems.TELEPORTER_MATRIX, 2); - } - - @Override - public DefaultedList getRemainder(CraftingRecipeInput container) { - DefaultedList remainders = DefaultedList.ofSize(container.getSize(), ItemStack.EMPTY); + public DefaultedList getRecipeRemainders(CraftingRecipeInput container) { + DefaultedList remainders = DefaultedList.ofSize(container.size(), ItemStack.EMPTY); for(int i = 0; i < remainders.size(); ++i) { ItemStack itemstack = container.getStackInSlot(i); @@ -99,17 +94,7 @@ public DefaultedList getRemainder(CraftingRecipeInput container) { } @Override - public ItemStack createIcon() { - return new ItemStack(EPItems.TELEPORTER_MATRIX); - } - - @Override - public RecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return EPRecipes.TELEPORTER_MATRIX_SETTINGS_COPY_SERIALIZER; } - - @Override - public boolean fits(int width, int height) { - return width * height >= 2; - } } diff --git a/src/main/java/me/jddev0/ep/recipe/ThermalGeneratorRecipe.java b/src/main/java/me/jddev0/ep/recipe/ThermalGeneratorRecipe.java index 4af3eac60..ca2135fc6 100644 --- a/src/main/java/me/jddev0/ep/recipe/ThermalGeneratorRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/ThermalGeneratorRecipe.java @@ -5,22 +5,22 @@ import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.codec.ArrayCodec; import net.minecraft.fluid.Fluid; import net.minecraft.item.ItemStack; import net.minecraft.network.RegistryByteBuf; import net.minecraft.network.codec.PacketCodec; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeSerializer; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.book.RecipeBookCategory; import net.minecraft.recipe.input.RecipeInput; import net.minecraft.registry.RegistryWrapper; import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; import net.minecraft.world.World; -public class ThermalGeneratorRecipe implements Recipe { +import java.util.List; + +public class ThermalGeneratorRecipe implements EnergizedPowerBaseRecipe { private final Fluid[] input; private final long energyProduction; @@ -48,33 +48,43 @@ public ItemStack craft(RecipeInput container, RegistryWrapper.WrapperLookup regi } @Override - public boolean fits(int width, int height) { + public IngredientPlacement getIngredientPlacement() { + return IngredientPlacement.NONE; + } + + @Override + public boolean isIgnoredInRecipeBook() { return true; } @Override - public ItemStack getResult(RegistryWrapper.WrapperLookup registries) { - return ItemStack.EMPTY; + public RecipeBookCategory getRecipeBookCategory() { + return EPRecipes.THERMAL_GENERATOR_CATEGORY; } @Override - public ItemStack createIcon() { - return new ItemStack(EPBlocks.THERMAL_GENERATOR_ITEM); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isIgnoredInRecipeBook() { - return true; + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public List getIngredients() { + return List.of(); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return false; + } + + @Override + public boolean isResult(ItemStack itemStack) { + return false; } public static final class Type implements RecipeType { @@ -92,7 +102,7 @@ private Serializer() {} private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { return instance.group(Codec.either(new ArrayCodec<>(Registries.FLUID.getCodec(), Fluid[]::new), - Registries.FLUID.getCodec()).fieldOf("input").forGetter((recipe) -> { + Registries.FLUID.getCodec()).fieldOf("ingredient").forGetter((recipe) -> { return recipe.input.length == 1?Either.right(recipe.input[0]):Either.left(recipe.input); }), Codec.LONG.fieldOf("energy").forGetter((recipe) -> { return recipe.energyProduction; diff --git a/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerBiomeTags.java b/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerBiomeTags.java index 212430bc8..529d3a946 100644 --- a/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerBiomeTags.java +++ b/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerBiomeTags.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; import net.minecraft.world.biome.Biome; public final class EnergizedPowerBiomeTags { diff --git a/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerItemTags.java b/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerItemTags.java index 0797feedf..d9647d23a 100644 --- a/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerItemTags.java +++ b/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerItemTags.java @@ -4,7 +4,6 @@ import net.minecraft.item.Item; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.tag.TagKey; -import net.minecraft.util.Identifier; public final class EnergizedPowerItemTags { private EnergizedPowerItemTags() {} diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterMenu.java b/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterMenu.java index 86a68def6..e374729de 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterMenu.java @@ -2,9 +2,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.AdvancedAutoCrafterBlockEntity; -import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.inventory.PatternResultSlot; -import me.jddev0.ep.inventory.PatternSlot; import me.jddev0.ep.inventory.*; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterScreen.java index a2e0bc456..3041115bc 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterScreen.java @@ -6,9 +6,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import me.jddev0.ep.networking.packet.*; import java.util.ArrayList; @@ -72,27 +72,27 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 89, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 89, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } private void renderCheckboxes(DrawContext drawContext, int x, int y, int mouseX, int mouseY) { if(handler.isIgnoreNBT()) { //Ignore NBT checkbox - drawContext.drawTexture(TEXTURE, x + 158, y + 16, 176, 70, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 158, y + 16, 176, 70, 11, 11, 256, 256); } if(handler.isSecondaryExtractMode()) { //Extract mode checkbox [2] - drawContext.drawTexture(TEXTURE, x + 158, y + 38, 187, 81, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 158, y + 38, 187, 81, 11, 11, 256, 256); }else { //Extract mode checkbox [1] - drawContext.drawTexture(TEXTURE, x + 158, y + 38, 176, 81, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 158, y + 38, 176, 81, 11, 11, 256, 256); } - drawContext.drawTexture(TEXTURE, x + 96, y + 16, 176 + 11 * handler.getRecipeIndex(), 81, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 96, y + 16, 176 + 11 * handler.getRecipeIndex(), 81, 11, 11, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedChargerMenu.java b/src/main/java/me/jddev0/ep/screen/AdvancedChargerMenu.java index 680b5d96d..429de7a51 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedChargerMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedChargerMenu.java @@ -2,8 +2,8 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.AdvancedAutoCrafterBlockEntity; +import me.jddev0.ep.block.entity.AdvancedChargerBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.ChargerRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -28,7 +28,7 @@ import team.reborn.energy.api.EnergyStorage; import team.reborn.energy.api.EnergyStorageUtil; -public class AdvancedChargerMenu extends UpgradableEnergyStorageMenu +public class AdvancedChargerMenu extends UpgradableEnergyStorageMenu implements IEnergyStorageConsumerIndicatorBarMenu, IConfigurableMenu { private final PropertyDelegate data; @@ -36,7 +36,8 @@ public AdvancedChargerMenu(int id, PlayerInventory inv, BlockPos pos) { this(id, inv.player.getWorld().getBlockEntity(pos), inv, new SimpleInventory(3) { @Override public boolean isValid(int slot, ItemStack stack) { - if(inv.player.getWorld() == null || RecipeUtils.isIngredientOfAny(inv.player.getWorld(), ChargerRecipe.Type.INSTANCE, stack)) + if(RecipeUtils.isIngredientOfAny(((AdvancedChargerBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack)) return true; if(slot >= 0 && slot < 3) { diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedChargerScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedChargerScreen.java index 4108228cf..1b09d5216 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedChargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedChargerScreen.java @@ -6,7 +6,6 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class AdvancedChargerScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedCrusherMenu.java b/src/main/java/me/jddev0/ep/screen/AdvancedCrusherMenu.java index 74406621d..4965e40d8 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedCrusherMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedCrusherMenu.java @@ -6,7 +6,6 @@ import me.jddev0.ep.inventory.ConstraintInsertSlot; import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; -import me.jddev0.ep.recipe.CrusherRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; @@ -35,7 +34,8 @@ public AdvancedCrusherMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), CrusherRecipe.Type.INSTANCE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((AdvancedCrusherBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedCrusherScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedCrusherScreen.java index a6a3e85ca..9586fed5c 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedCrusherScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedCrusherScreen.java @@ -6,9 +6,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -39,12 +39,12 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y, int tank) { - drawContext.drawTexture(TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52, 256, 256); } private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 90, y + 34, 176, 106, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 90, y + 34, 176, 106, handler.getScaledProgressArrowSize(), 17, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceMenu.java b/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceMenu.java index d01ce7984..79391c9d3 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceMenu.java @@ -36,8 +36,7 @@ private AdvancedPoweredFurnaceMenu(int id, PlayerInventory inv, AdvancedPoweredF @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), - blockEntity.getRecipeForFurnaceModeUpgrade(), stack); + case 0, 1, 2 -> RecipeUtils.isIngredientOfAny(blockEntity.getIngredientsOfRecipes(), stack); case 3, 4, 5 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceScreen.java index 567ebb512..a3f4dbf57 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class AdvancedPoweredFurnaceScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -31,6 +31,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrows(DrawContext drawContext, int x, int y) { for(int i = 0;i < 3;i++) if(handler.isCraftingActive(i)) - drawContext.drawTexture(TEXTURE, x + 45 + 54 * i, y + 35, 176, 53, 12, handler.getScaledProgressArrowSize(i)); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 45 + 54 * i, y + 35, 176, 53, 12, handler.getScaledProgressArrowSize(i), 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerMenu.java b/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerMenu.java index 21fc3725e..95b137f3a 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerMenu.java @@ -6,7 +6,6 @@ import me.jddev0.ep.inventory.ConstraintInsertSlot; import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; -import me.jddev0.ep.recipe.PulverizerRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; @@ -35,7 +34,8 @@ public AdvancedPulverizerMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), PulverizerRecipe.Type.INSTANCE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((AdvancedPulverizerBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1, 2 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerScreen.java index 9d2ae3682..3b69f0a9a 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerScreen.java @@ -6,9 +6,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -39,12 +39,12 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(int tank, DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52, 256, 256); } private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 90, y + 34, 176, 106, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 90, y + 34, 176, 106, handler.getScaledProgressArrowSize(), 17, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedUnchargerScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedUnchargerScreen.java index 04570d76e..aef384bb5 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedUnchargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedUnchargerScreen.java @@ -6,7 +6,6 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class AdvancedUnchargerScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { diff --git a/src/main/java/me/jddev0/ep/screen/AlloyFurnaceMenu.java b/src/main/java/me/jddev0/ep/screen/AlloyFurnaceMenu.java index 5a4158e2f..bff7a625b 100644 --- a/src/main/java/me/jddev0/ep/screen/AlloyFurnaceMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AlloyFurnaceMenu.java @@ -3,17 +3,14 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.AlloyFurnaceBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.AlloyFurnaceRecipe; -import me.jddev0.ep.recipe.IngredientWithCount; import me.jddev0.ep.util.ByteUtils; -import net.fabricmc.fabric.api.registry.FuelRegistry; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.ArrayPropertyDelegate; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.ScreenHandler; @@ -22,8 +19,6 @@ import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import java.util.Arrays; - public class AlloyFurnaceMenu extends ScreenHandler { private final AlloyFurnaceBlockEntity blockEntity; private final World level; @@ -34,15 +29,9 @@ public AlloyFurnaceMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> inv.player.getWorld().getRecipeManager(). - listAllOfType(AlloyFurnaceRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(AlloyFurnaceRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); - case 3 -> { - Integer burnTime = FuelRegistry.INSTANCE.get(stack.getItem()); - yield burnTime != null && burnTime > 0; - } + case 0, 1, 2 -> RecipeUtils.isIngredientOfAny(((AlloyFurnaceBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); + case 3 -> inv.player.getWorld().getFuelRegistry().getFuelTicks(stack) > 0; case 4, 5 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/AlloyFurnaceScreen.java b/src/main/java/me/jddev0/ep/screen/AlloyFurnaceScreen.java index ef9405d91..e3860049e 100644 --- a/src/main/java/me/jddev0/ep/screen/AlloyFurnaceScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AlloyFurnaceScreen.java @@ -5,8 +5,9 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -23,12 +24,12 @@ public AlloyFurnaceScreen(AlloyFurnaceMenu menu, PlayerInventory inventory, Text @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); renderProgressFlame(drawContext, x, y); renderProgressArrow(drawContext, x, y); @@ -37,13 +38,13 @@ protected void drawBackground(DrawContext drawContext, float partialTick, int mo private void renderProgressFlame(DrawContext drawContext, int x, int y) { if(handler.isBurningFuel()) { int pos = handler.getScaledProgressFlameSize(); - drawContext.drawTexture(TEXTURE, x + 36, y + 37 + 14 - pos, 176, 14 - pos, 14, pos); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 36, y + 37 + 14 - pos, 176, 14 - pos, 14, pos, 256, 256); } } private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 79, y + 34, 176, 14, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 79, y + 34, 176, 14, handler.getScaledProgressArrowSize(), 17, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/AssemblingMachineMenu.java b/src/main/java/me/jddev0/ep/screen/AssemblingMachineMenu.java index 06351060d..5c590e975 100644 --- a/src/main/java/me/jddev0/ep/screen/AssemblingMachineMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AssemblingMachineMenu.java @@ -3,31 +3,27 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.AssemblingMachineBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.AssemblingMachineRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; -import me.jddev0.ep.recipe.IngredientWithCount; import me.jddev0.ep.screen.base.IConfigurableMenu; import me.jddev0.ep.screen.base.IEnergyStorageConsumerIndicatorBarMenu; import me.jddev0.ep.screen.base.UpgradableEnergyStorageMenu; import me.jddev0.ep.util.ByteUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.ArrayPropertyDelegate; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.slot.Slot; import net.minecraft.util.math.BlockPos; -import java.util.Arrays; - public class AssemblingMachineMenu extends UpgradableEnergyStorageMenu implements IEnergyStorageConsumerIndicatorBarMenu, IConfigurableMenu { private final PropertyDelegate data; @@ -37,11 +33,8 @@ public AssemblingMachineMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0, 1, 2, 3 -> inv.player.getWorld() == null || inv.player.getWorld().getRecipeManager(). - listAllOfType(AssemblingMachineRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(AssemblingMachineRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); + case 0, 1, 2, 3 -> RecipeUtils.isIngredientOfAny(((AssemblingMachineBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 4 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/AssemblingMachineScreen.java b/src/main/java/me/jddev0/ep/screen/AssemblingMachineScreen.java index 116291ab6..a9dc7a939 100644 --- a/src/main/java/me/jddev0/ep/screen/AssemblingMachineScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AssemblingMachineScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class AssemblingMachineScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -35,6 +35,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 100, y + 36, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 100, y + 36, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/AutoCrafterMenu.java b/src/main/java/me/jddev0/ep/screen/AutoCrafterMenu.java index b09e9327e..72444e84a 100644 --- a/src/main/java/me/jddev0/ep/screen/AutoCrafterMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AutoCrafterMenu.java @@ -2,9 +2,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.AutoCrafterBlockEntity; -import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.inventory.PatternResultSlot; -import me.jddev0.ep.inventory.PatternSlot; import me.jddev0.ep.inventory.*; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; diff --git a/src/main/java/me/jddev0/ep/screen/AutoCrafterScreen.java b/src/main/java/me/jddev0/ep/screen/AutoCrafterScreen.java index a8f86651e..524a6e9ca 100644 --- a/src/main/java/me/jddev0/ep/screen/AutoCrafterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AutoCrafterScreen.java @@ -7,9 +7,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -67,24 +67,24 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 89, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 89, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } private void renderCheckboxes(DrawContext drawContext, int x, int y, int mouseX, int mouseY) { if(handler.isIgnoreNBT()) { //Ignore NBT checkbox - drawContext.drawTexture(TEXTURE, x + 158, y + 16, 176, 70, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 158, y + 16, 176, 70, 11, 11, 256, 256); } if(handler.isSecondaryExtractMode()) { //Extract mode checkbox [2] - drawContext.drawTexture(TEXTURE, x + 158, y + 38, 187, 81, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 158, y + 38, 187, 81, 11, 11, 256, 256); }else { //Extract mode checkbox [1] - drawContext.drawTexture(TEXTURE, x + 158, y + 38, 176, 81, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 158, y + 38, 176, 81, 11, 11, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/AutoPressMoldMakerScreen.java b/src/main/java/me/jddev0/ep/screen/AutoPressMoldMakerScreen.java index 0518fabc1..d8ab1da5a 100644 --- a/src/main/java/me/jddev0/ep/screen/AutoPressMoldMakerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AutoPressMoldMakerScreen.java @@ -6,13 +6,13 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.recipe.RecipeEntry; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -40,7 +40,7 @@ protected void renderCurrentRecipeTooltip(DrawContext drawContext, int mouseX, i components.add(Text.translatable("tooltip.energizedpower.count_with_item.txt", output.getCount(), output.getName())); components.add(Text.translatable("tooltip.energizedpower.press_mold_maker.btn.recipes", currentRecipe.value().getClayCount(), - Text.translatable(Items.CLAY_BALL.getTranslationKey())).formatted(Formatting.ITALIC)); + Items.CLAY_BALL.getName()).formatted(Formatting.ITALIC)); drawContext.drawTooltip(textRenderer, components, Optional.empty(), mouseX, mouseY); } @@ -58,7 +58,7 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 84, y + 43, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 84, y + 43, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/AutoStonecutterMenu.java b/src/main/java/me/jddev0/ep/screen/AutoStonecutterMenu.java index af26425f9..522c1e21e 100644 --- a/src/main/java/me/jddev0/ep/screen/AutoStonecutterMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AutoStonecutterMenu.java @@ -21,7 +21,6 @@ import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; -import net.minecraft.recipe.RecipeType; import net.minecraft.recipe.StonecuttingRecipe; import net.minecraft.registry.tag.ItemTags; import net.minecraft.screen.ArrayPropertyDelegate; @@ -39,7 +38,8 @@ public AutoStonecutterMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), RecipeType.STONECUTTING, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((AutoStonecutterBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1 -> stack.isIn(ItemTags.PICKAXES); case 2 -> false; default -> super.isValid(slot, stack); diff --git a/src/main/java/me/jddev0/ep/screen/AutoStonecutterScreen.java b/src/main/java/me/jddev0/ep/screen/AutoStonecutterScreen.java index d29b04b98..375ac61f9 100644 --- a/src/main/java/me/jddev0/ep/screen/AutoStonecutterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AutoStonecutterScreen.java @@ -5,13 +5,14 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; import net.minecraft.recipe.StonecuttingRecipe; +import net.minecraft.recipe.display.SlotDisplayContexts; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -29,12 +30,14 @@ public AutoStonecutterScreen(AutoStonecutterMenu menu, PlayerInventory inventory @Override protected ItemStack getRecipeIcon(RecipeEntry currentRecipe) { - return currentRecipe.value().getResult(handler.getBlockEntity().getWorld().getRegistryManager()); + return currentRecipe.value().getDisplays().get(0).result(). + getFirst(SlotDisplayContexts.createParameters(handler.getBlockEntity().getWorld())); } @Override protected void renderCurrentRecipeTooltip(DrawContext drawContext, int mouseX, int mouseY, RecipeEntry currentRecipe) { - ItemStack output = currentRecipe.value().getResult(handler.getBlockEntity().getWorld().getRegistryManager()); + ItemStack output = currentRecipe.value().getDisplays().get(0).result(). + getFirst(SlotDisplayContexts.createParameters(handler.getBlockEntity().getWorld())); if(!output.isEmpty()) { List components = new ArrayList<>(2); components.add(Text.translatable("tooltip.energizedpower.count_with_item.txt", output.getCount(), @@ -58,7 +61,7 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 84, y + 43, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 84, y + 43, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/BlockPlacerScreen.java b/src/main/java/me/jddev0/ep/screen/BlockPlacerScreen.java index c10603b97..102df81f8 100644 --- a/src/main/java/me/jddev0/ep/screen/BlockPlacerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/BlockPlacerScreen.java @@ -7,9 +7,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -55,7 +55,7 @@ private void renderCheckboxes(DrawContext drawContext, int x, int y, int mouseX, if(handler.isInverseRotation()) { //Inverse rotation checkbox - drawContext.drawTexture(TEXTURE, x + 158, y + 16, 176, 53, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 158, y + 16, 176, 53, 11, 11, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/ChargerMenu.java b/src/main/java/me/jddev0/ep/screen/ChargerMenu.java index 19825a522..32743c5eb 100644 --- a/src/main/java/me/jddev0/ep/screen/ChargerMenu.java +++ b/src/main/java/me/jddev0/ep/screen/ChargerMenu.java @@ -3,7 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.ChargerBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.ChargerRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -36,7 +35,8 @@ public ChargerMenu(int id, PlayerInventory inv, BlockPos pos) { this(id, inv.player.getWorld().getBlockEntity(pos), inv, new SimpleInventory(1) { @Override public boolean isValid(int slot, ItemStack stack) { - if(inv.player.getWorld() == null || RecipeUtils.isIngredientOfAny(inv.player.getWorld(), ChargerRecipe.Type.INSTANCE, stack)) + if(RecipeUtils.isIngredientOfAny(((ChargerBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack)) return true; if(slot == 0) { diff --git a/src/main/java/me/jddev0/ep/screen/ChargerScreen.java b/src/main/java/me/jddev0/ep/screen/ChargerScreen.java index bcb482dd0..baa19250b 100644 --- a/src/main/java/me/jddev0/ep/screen/ChargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ChargerScreen.java @@ -6,7 +6,6 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class ChargerScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { diff --git a/src/main/java/me/jddev0/ep/screen/ChargingStationScreen.java b/src/main/java/me/jddev0/ep/screen/ChargingStationScreen.java index 45be2b2ad..d59475d12 100644 --- a/src/main/java/me/jddev0/ep/screen/ChargingStationScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ChargingStationScreen.java @@ -6,7 +6,6 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class ChargingStationScreen extends UpgradableEnergyStorageContainerScreen { diff --git a/src/main/java/me/jddev0/ep/screen/CoalEngineMenu.java b/src/main/java/me/jddev0/ep/screen/CoalEngineMenu.java index 523cc1400..1e0311d33 100644 --- a/src/main/java/me/jddev0/ep/screen/CoalEngineMenu.java +++ b/src/main/java/me/jddev0/ep/screen/CoalEngineMenu.java @@ -12,7 +12,6 @@ import me.jddev0.ep.screen.base.IEnergyStorageProducerIndicatorBarMenu; import me.jddev0.ep.screen.base.UpgradableEnergyStorageMenu; import me.jddev0.ep.util.ByteUtils; -import net.fabricmc.fabric.api.registry.FuelRegistry; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; @@ -32,10 +31,8 @@ public CoalEngineMenu(int id, PlayerInventory inv, BlockPos pos) { this(id, inv.player.getWorld().getBlockEntity(pos), inv, new SimpleInventory(1) { @Override public boolean isValid(int slot, ItemStack stack) { - if(slot == 0) { - Integer burnTime = FuelRegistry.INSTANCE.get(stack.getItem()); - return burnTime != null && burnTime > 0; - } + if(slot == 0) + return inv.player.getWorld().getFuelRegistry().getFuelTicks(stack) > 0; return super.isValid(slot, stack); } diff --git a/src/main/java/me/jddev0/ep/screen/CoalEngineScreen.java b/src/main/java/me/jddev0/ep/screen/CoalEngineScreen.java index df225d0b4..56d6af755 100644 --- a/src/main/java/me/jddev0/ep/screen/CoalEngineScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CoalEngineScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class CoalEngineScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -31,7 +31,7 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressFlame(DrawContext drawContext, int x, int y) { if(handler.isProducingActive()) { int pos = handler.getScaledProgressFlameSize(); - drawContext.drawTexture(TEXTURE, x + 81, y + 28 + pos, 176, 53 + pos, 14, 14 - pos); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 81, y + 28 + pos, 176, 53 + pos, 14, 14 - pos, 256, 256); } } } diff --git a/src/main/java/me/jddev0/ep/screen/CompressorMenu.java b/src/main/java/me/jddev0/ep/screen/CompressorMenu.java index 2baadf4a0..16167222c 100644 --- a/src/main/java/me/jddev0/ep/screen/CompressorMenu.java +++ b/src/main/java/me/jddev0/ep/screen/CompressorMenu.java @@ -3,7 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.CompressorBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.CompressorRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -34,7 +33,8 @@ public CompressorMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), CompressorRecipe.Type.INSTANCE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((CompressorBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/CompressorScreen.java b/src/main/java/me/jddev0/ep/screen/CompressorScreen.java index aef70b781..2812e9d36 100644 --- a/src/main/java/me/jddev0/ep/screen/CompressorScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CompressorScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class CompressorScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -30,6 +30,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 79, y + 30, 176, 53, handler.getScaledProgressArrowSize(), 25); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 79, y + 30, 176, 53, handler.getScaledProgressArrowSize(), 25, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/CreativeBatteryBoxScreen.java b/src/main/java/me/jddev0/ep/screen/CreativeBatteryBoxScreen.java index 5ed99a868..8b25a3473 100644 --- a/src/main/java/me/jddev0/ep/screen/CreativeBatteryBoxScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CreativeBatteryBoxScreen.java @@ -7,8 +7,9 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.sound.SoundEvents; @@ -54,12 +55,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); renderCheckboxes(drawContext, x, y, mouseX, mouseY); renderCheckboxLabels(drawContext, x, y, mouseX, mouseY); @@ -69,13 +70,13 @@ private void renderCheckboxes(DrawContext drawContext, int x, int y, int mouseX, if(handler.isEnergyProduction()) { //Energy Production checkbox - drawContext.drawTexture(TEXTURE, x + 10, y + 28, 176, 0, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 10, y + 28, 176, 0, 11, 11, 256, 256); } if(handler.isEnergyConsumption()) { //Energy Consumption checkbox - drawContext.drawTexture(TEXTURE, x + 10, y + 46, 176, 0, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 10, y + 46, 176, 0, 11, 11, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/CreativeFluidTankScreen.java b/src/main/java/me/jddev0/ep/screen/CreativeFluidTankScreen.java index 481640357..7a9212af5 100644 --- a/src/main/java/me/jddev0/ep/screen/CreativeFluidTankScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CreativeFluidTankScreen.java @@ -13,8 +13,9 @@ import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.storage.Storage; import net.fabricmc.fabric.api.transfer.v1.storage.StorageView; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; @@ -74,19 +75,19 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); renderFluidMeterContent(drawContext, handler.getFluid(0), handler.getTankCapacity(0), x + 48, y + 17, 80, 52); renderFluidMeterOverlay(drawContext, x, y); } private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + 48, y + 17, 176, 0, 80, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 48, y + 17, 176, 0, 80, 52, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/CrusherMenu.java b/src/main/java/me/jddev0/ep/screen/CrusherMenu.java index 9810cf466..34b95fbbe 100644 --- a/src/main/java/me/jddev0/ep/screen/CrusherMenu.java +++ b/src/main/java/me/jddev0/ep/screen/CrusherMenu.java @@ -3,7 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.CrusherBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.CrusherRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -34,7 +33,8 @@ public CrusherMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), CrusherRecipe.Type.INSTANCE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((CrusherBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/CrusherScreen.java b/src/main/java/me/jddev0/ep/screen/CrusherScreen.java index 87236a70a..9dbfc80ab 100644 --- a/src/main/java/me/jddev0/ep/screen/CrusherScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CrusherScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class CrusherScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -30,6 +30,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 80, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 80, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberMenu.java b/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberMenu.java index b48ddaf1a..9541a4b64 100644 --- a/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberMenu.java +++ b/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberMenu.java @@ -3,7 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.CrystalGrowthChamberBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.CrystalGrowthChamberRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -13,13 +12,13 @@ import me.jddev0.ep.screen.base.IEnergyStorageConsumerIndicatorBarMenu; import me.jddev0.ep.screen.base.UpgradableEnergyStorageMenu; import me.jddev0.ep.util.ByteUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.ArrayPropertyDelegate; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.slot.Slot; @@ -34,10 +33,8 @@ public CrystalGrowthChamberMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> inv.player.getWorld() == null || inv.player.getWorld().getRecipeManager(). - listAllOfType(CrystalGrowthChamberRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(CrystalGrowthChamberRecipe::getInput). - anyMatch(ingredient -> ingredient.test(stack)); + case 0 -> RecipeUtils.isIngredientOfAny(((CrystalGrowthChamberBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberScreen.java b/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberScreen.java index 6f774c2b7..7468b5d5c 100644 --- a/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class CrystalGrowthChamberScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -31,6 +31,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 80, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 80, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/DrainScreen.java b/src/main/java/me/jddev0/ep/screen/DrainScreen.java index a3d554dfb..faada49c0 100644 --- a/src/main/java/me/jddev0/ep/screen/DrainScreen.java +++ b/src/main/java/me/jddev0/ep/screen/DrainScreen.java @@ -5,6 +5,7 @@ import me.jddev0.ep.util.FluidUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.*; import net.minecraft.entity.player.PlayerInventory; @@ -28,19 +29,19 @@ public DrainScreen(DrainMenu menu, PlayerInventory inventory, Text component) { @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); renderFluidMeterContent(drawContext, handler.getFluid(), handler.getTankCapacity(), x + 80, y + 17, 16, 52); renderFluidMeterOverlay(drawContext, x, y); } private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + 80, y + 17, 176, 0, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 80, y + 17, 176, 0, 16, 52, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/EnergizedPowerBookScreen.java b/src/main/java/me/jddev0/ep/screen/EnergizedPowerBookScreen.java index c690a2202..2d5ef6b7c 100644 --- a/src/main/java/me/jddev0/ep/screen/EnergizedPowerBookScreen.java +++ b/src/main/java/me/jddev0/ep/screen/EnergizedPowerBookScreen.java @@ -10,21 +10,19 @@ import net.fabricmc.api.Environment; import net.minecraft.block.Block; import net.minecraft.block.entity.LecternBlockEntity; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.PageTurnWidget; -import net.minecraft.client.render.DiffuseLighting; -import net.minecraft.client.render.GameRenderer; -import net.minecraft.client.render.OverlayTexture; -import net.minecraft.client.render.VertexConsumerProvider; +import net.minecraft.client.render.*; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.render.model.BakedModel; -import net.minecraft.client.render.model.json.ModelTransformationMode; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.client.texture.TextureManager; import net.minecraft.client.util.NarratorManager; import net.minecraft.item.ItemStack; +import net.minecraft.item.ModelTransformationMode; import net.minecraft.registry.Registries; import net.minecraft.screen.PlayerScreenHandler; import net.minecraft.screen.ScreenTexts; @@ -307,7 +305,8 @@ public boolean handleTextClick(Style style) { @Override public void renderBackground(DrawContext drawContext, int mouseX, int mouseY, float delta) { super.renderBackground(drawContext, mouseX, mouseY, delta); - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); if(formattedPages == null) @@ -315,11 +314,11 @@ public void renderBackground(DrawContext drawContext, int mouseX, int mouseY, fl int startX = (width - 226) / 2; if(currentPage == 0) { - drawContext.drawTexture(FRONT_COVER, startX, 2, 0, 0, 226, 230); + drawContext.drawTexture(RenderLayer::getGuiTextured, FRONT_COVER, startX, 2, 0, 0, 226, 230, 256, 256); }else if(currentPage == getPageCount() - 1) { - drawContext.drawTexture(BACK_COVER, startX, 2, 0, 0, 226, 230); + drawContext.drawTexture(RenderLayer::getGuiTextured, BACK_COVER, startX, 2, 0, 0, 226, 230, 256, 256); }else { - drawContext.drawTexture(TEXTURE, startX, 2, 0, 0, 226, 230); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, startX, 2, 0, 0, 226, 230, 256, 256); } if(!isCurrentPageCached) { @@ -433,7 +432,7 @@ private void renderImageCentered(DrawContext drawContext, Identifier image, int y = (int)((230 - 256 * scaleFactor) * .5f) + 2; drawContext.getMatrices().scale(scaleFactor, scaleFactor, 1.f); - drawContext.drawTexture(image, (int)((width / scaleFactor - 256) * .5f), (int)(y / scaleFactor), 0, 0, 256, 256); + drawContext.drawTexture(RenderLayer::getGuiTextured, image, (int)((width / scaleFactor - 256) * .5f), (int)(y / scaleFactor), 0, 0, 256, 256, 256, 256); drawContext.getMatrices().scale(1/scaleFactor, 1/scaleFactor, 1.f); } diff --git a/src/main/java/me/jddev0/ep/screen/EnergizerMenu.java b/src/main/java/me/jddev0/ep/screen/EnergizerMenu.java index 70f2cec0b..f41305671 100644 --- a/src/main/java/me/jddev0/ep/screen/EnergizerMenu.java +++ b/src/main/java/me/jddev0/ep/screen/EnergizerMenu.java @@ -3,7 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.EnergizerBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.EnergizerRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -34,7 +33,8 @@ public EnergizerMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), EnergizerRecipe.Type.INSTANCE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((EnergizerBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/EnergizerScreen.java b/src/main/java/me/jddev0/ep/screen/EnergizerScreen.java index 1148e8ec2..375ebcb69 100644 --- a/src/main/java/me/jddev0/ep/screen/EnergizerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/EnergizerScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class EnergizerScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -31,12 +31,12 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 89, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 89, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } private void renderActiveOverlay(DrawContext drawContext, int x, int y) { if(handler.isCrafting()) { - drawContext.drawTexture(TEXTURE, x + 31, y + 18, 176, 70, 50, 50); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 31, y + 18, 176, 70, 50, 50, 256, 256); } } } diff --git a/src/main/java/me/jddev0/ep/screen/FiltrationPlantScreen.java b/src/main/java/me/jddev0/ep/screen/FiltrationPlantScreen.java index ef91bfc0e..ee164c28b 100644 --- a/src/main/java/me/jddev0/ep/screen/FiltrationPlantScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FiltrationPlantScreen.java @@ -7,6 +7,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; @@ -86,13 +87,13 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(int tank, DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52, 256, 256); } private void renderProgressArrows(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) { for(int i = 0;i < 2;i++) { - drawContext.drawTexture(TEXTURE, x + 67, y + 34 + 27*i, 176, 106, handler.getScaledProgressArrowSize(), 9); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 67, y + 34 + 27*i, 176, 106, handler.getScaledProgressArrowSize(), 9, 256, 256); } } } diff --git a/src/main/java/me/jddev0/ep/screen/FluidDrainerScreen.java b/src/main/java/me/jddev0/ep/screen/FluidDrainerScreen.java index 03d91f8ae..905e603f0 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidDrainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidDrainerScreen.java @@ -6,9 +6,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -34,7 +34,7 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + 152, y + 17, 176, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 152, y + 17, 176, 53, 16, 52, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/FluidFillerScreen.java b/src/main/java/me/jddev0/ep/screen/FluidFillerScreen.java index 993fb5572..f560a822e 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidFillerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidFillerScreen.java @@ -6,9 +6,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -34,7 +34,7 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + 152, y + 17, 176, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 152, y + 17, 176, 53, 16, 52, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/FluidPumpScreen.java b/src/main/java/me/jddev0/ep/screen/FluidPumpScreen.java index 6d40293b1..967c025e6 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidPumpScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidPumpScreen.java @@ -8,11 +8,11 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.fluid.FluidState; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import java.util.ArrayList; @@ -49,7 +49,7 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + 206, y + 17, 230, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 206, y + 17, 230, 53, 16, 52, 256, 256); } private void renderInfoText(DrawContext drawContext, int x, int y) { diff --git a/src/main/java/me/jddev0/ep/screen/FluidTankScreen.java b/src/main/java/me/jddev0/ep/screen/FluidTankScreen.java index 5cb6cc666..d3e4cc880 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidTankScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidTankScreen.java @@ -15,6 +15,7 @@ import net.fabricmc.fabric.api.transfer.v1.fluid.FluidVariant; import net.fabricmc.fabric.api.transfer.v1.storage.Storage; import net.fabricmc.fabric.api.transfer.v1.storage.StorageView; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.render.*; import net.minecraft.client.sound.PositionedSoundInstance; @@ -82,12 +83,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); for(int i = 0;i < 2;i++) { if(i == 0) @@ -103,16 +104,16 @@ protected void drawBackground(DrawContext drawContext, float partialTick, int mo private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y, int tank) { if(tank == 0) - drawContext.drawTexture(TEXTURE, x + 80, y + 17, 176, 0, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 80, y + 17, 176, 0, 16, 52, 256, 256); else if(tank == 1) - drawContext.drawTexture(TEXTURE, x + 152, y + 35, 176, 64, 16, 16); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 152, y + 35, 176, 64, 16, 16, 256, 256); } private void renderCheckboxes(DrawContext drawContext, int x, int y, int mouseX, int mouseY) { if(handler.isIgnoreNBT()) { //Ignore NBT checkbox - drawContext.drawTexture(TEXTURE, x + 158, y + 16, 176, 53, 11, 11); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 158, y + 16, 176, 53, 11, 11, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/FluidTransposerMenu.java b/src/main/java/me/jddev0/ep/screen/FluidTransposerMenu.java index 4bef9e576..c88a361d6 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidTransposerMenu.java +++ b/src/main/java/me/jddev0/ep/screen/FluidTransposerMenu.java @@ -9,7 +9,6 @@ import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; -import me.jddev0.ep.recipe.EPRecipes; import me.jddev0.ep.screen.base.IConfigurableMenu; import me.jddev0.ep.screen.base.IEnergyStorageConsumerIndicatorBarMenu; import me.jddev0.ep.screen.base.UpgradableEnergyStorageMenu; @@ -35,7 +34,8 @@ public FluidTransposerMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), EPRecipes.FLUID_TRANSPOSER_TYPE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((FluidTransposerBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/FluidTransposerScreen.java b/src/main/java/me/jddev0/ep/screen/FluidTransposerScreen.java index b2c211bc8..68c3d482b 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidTransposerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidTransposerScreen.java @@ -9,11 +9,11 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -62,12 +62,12 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + 152, y + 17, 176, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 152, y + 17, 176, 53, 16, 52, 256, 256); } private void renderButtons(DrawContext drawContext, int x, int y, int mouseX, int mouseY) { if(isPointWithinBounds(114, 47, 20, 20, mouseX, mouseY)) - drawContext.drawTexture(TEXTURE, x + 114, y + 47, 176, 135, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 114, y + 47, 176, 135, 20, 20, 256, 256); ItemStack output = new ItemStack(handler.getMode() == FluidTransposerBlockEntity.Mode.EMPTYING?Items.BUCKET:Items.WATER_BUCKET); drawContext.getMatrices().push(); @@ -81,14 +81,14 @@ private void renderButtons(DrawContext drawContext, int x, int y, int mouseX, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { int arrowPosY = handler.getMode() == FluidTransposerBlockEntity.Mode.EMPTYING?106:120; - drawContext.drawTexture(TEXTURE, x + 114, y + 19, 176, arrowPosY, 20, 14); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 114, y + 19, 176, arrowPosY, 20, 14, 256, 256); if(handler.isCraftingActive()) { if(handler.getMode() == FluidTransposerBlockEntity.Mode.EMPTYING) - drawContext.drawTexture(TEXTURE, x + 114, y + 19, 196, arrowPosY, handler.getScaledProgressArrowSize(), 14); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 114, y + 19, 196, arrowPosY, handler.getScaledProgressArrowSize(), 14, 256, 256); else - drawContext.drawTexture(TEXTURE, x + 134 - handler.getScaledProgressArrowSize(), y + 19, - 216 - handler.getScaledProgressArrowSize(), arrowPosY, handler.getScaledProgressArrowSize(), 14); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 134 - handler.getScaledProgressArrowSize(), y + 19, + 216 - handler.getScaledProgressArrowSize(), arrowPosY, handler.getScaledProgressArrowSize(), 14, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/HeatGeneratorScreen.java b/src/main/java/me/jddev0/ep/screen/HeatGeneratorScreen.java index 2c2d887b1..68f70ed68 100644 --- a/src/main/java/me/jddev0/ep/screen/HeatGeneratorScreen.java +++ b/src/main/java/me/jddev0/ep/screen/HeatGeneratorScreen.java @@ -6,7 +6,6 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class HeatGeneratorScreen diff --git a/src/main/java/me/jddev0/ep/screen/InductionSmelterMenu.java b/src/main/java/me/jddev0/ep/screen/InductionSmelterMenu.java index 0e97070b8..4d0708ba2 100644 --- a/src/main/java/me/jddev0/ep/screen/InductionSmelterMenu.java +++ b/src/main/java/me/jddev0/ep/screen/InductionSmelterMenu.java @@ -8,26 +8,22 @@ import me.jddev0.ep.machine.configuration.ComparatorMode; import me.jddev0.ep.machine.configuration.RedstoneMode; import me.jddev0.ep.machine.upgrade.UpgradeModuleModifier; -import me.jddev0.ep.recipe.AlloyFurnaceRecipe; -import me.jddev0.ep.recipe.IngredientWithCount; import me.jddev0.ep.screen.base.IConfigurableMenu; import me.jddev0.ep.screen.base.IEnergyStorageConsumerIndicatorBarMenu; import me.jddev0.ep.screen.base.UpgradableEnergyStorageMenu; import me.jddev0.ep.util.ByteUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.ArrayPropertyDelegate; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.slot.Slot; import net.minecraft.util.math.BlockPos; -import java.util.Arrays; - public class InductionSmelterMenu extends UpgradableEnergyStorageMenu implements IEnergyStorageConsumerIndicatorBarMenu, IConfigurableMenu { private final PropertyDelegate data; @@ -37,11 +33,8 @@ public InductionSmelterMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> inv.player.getWorld().getRecipeManager(). - listAllOfType(AlloyFurnaceRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(AlloyFurnaceRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); + case 0, 1, 2 -> RecipeUtils.isIngredientOfAny(((InductionSmelterBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 3, 4 -> false; default -> false; }; diff --git a/src/main/java/me/jddev0/ep/screen/InductionSmelterScreen.java b/src/main/java/me/jddev0/ep/screen/InductionSmelterScreen.java index f9b33f056..92bdda3ef 100644 --- a/src/main/java/me/jddev0/ep/screen/InductionSmelterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/InductionSmelterScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class InductionSmelterScreen @@ -31,6 +31,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 104, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 104, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/InventoryChargerScreen.java b/src/main/java/me/jddev0/ep/screen/InventoryChargerScreen.java index bb9a68d15..2e0cf8f24 100644 --- a/src/main/java/me/jddev0/ep/screen/InventoryChargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/InventoryChargerScreen.java @@ -6,8 +6,9 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -24,12 +25,12 @@ public InventoryChargerScreen(InventoryChargerMenu menu, PlayerInventory invento @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/InventoryTeleporterScreen.java b/src/main/java/me/jddev0/ep/screen/InventoryTeleporterScreen.java index 97816afeb..2800bcb64 100644 --- a/src/main/java/me/jddev0/ep/screen/InventoryTeleporterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/InventoryTeleporterScreen.java @@ -5,8 +5,9 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -23,12 +24,12 @@ public InventoryTeleporterScreen(InventoryTeleporterMenu menu, PlayerInventory i @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltLoaderScreen.java b/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltLoaderScreen.java index 62ed58c80..da74da8af 100644 --- a/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltLoaderScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltLoaderScreen.java @@ -5,8 +5,9 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; import net.minecraft.util.Identifier; @@ -23,12 +24,12 @@ public ItemConveyorBeltLoaderScreen(ItemConveyorBeltLoaderMenu menu, PlayerInven @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltSorterScreen.java b/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltSorterScreen.java index 8878258ca..1c92e0ea5 100644 --- a/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltSorterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltSorterScreen.java @@ -7,8 +7,9 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.sound.SoundEvents; @@ -56,12 +57,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); renderOutputBeltConnectionState(drawContext, x, y, mouseX, mouseY); renderCheckboxes(drawContext, x, y, mouseX, mouseY); @@ -70,20 +71,20 @@ protected void drawBackground(DrawContext drawContext, float partialTick, int mo private void renderOutputBeltConnectionState(DrawContext drawContext, int x, int y, int mouseX, int mouseY) { for(int i = 0;i < 3;i++) if(handler.isOutputBeltConnected(i)) - drawContext.drawTexture(TEXTURE, x + 10, y + 18 + i * 18, 176, i * 14, 30, 14); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 10, y + 18 + i * 18, 176, i * 14, 30, 14, 256, 256); } private void renderCheckboxes(DrawContext drawContext, int x, int y, int mouseX, int mouseY) { for(int i = 0;i < 3;i++) { if(handler.isWhitelist(i)) { //Whitelist checkbox [3x] - drawContext.drawTexture(TEXTURE, x + 136, y + 19 + i * 18, 176, 42, 13, 13); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 136, y + 19 + i * 18, 176, 42, 13, 13, 256, 256); } if(handler.isIgnoreNBT(i)) { //Ignore NBT checkbox [3x] - drawContext.drawTexture(TEXTURE, x + 153, y + 19 + i * 18, 176, 55, 13, 13); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 153, y + 19 + i * 18, 176, 55, 13, 13, 256, 256); } } } diff --git a/src/main/java/me/jddev0/ep/screen/MetalPressMenu.java b/src/main/java/me/jddev0/ep/screen/MetalPressMenu.java index 45d34d6b5..1d8ac91aa 100644 --- a/src/main/java/me/jddev0/ep/screen/MetalPressMenu.java +++ b/src/main/java/me/jddev0/ep/screen/MetalPressMenu.java @@ -3,7 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.MetalPressBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.MetalPressRecipe; import me.jddev0.ep.registry.tags.EnergizedPowerItemTags; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; @@ -14,13 +13,13 @@ import me.jddev0.ep.screen.base.IEnergyStorageConsumerIndicatorBarMenu; import me.jddev0.ep.screen.base.UpgradableEnergyStorageMenu; import me.jddev0.ep.util.ByteUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.block.entity.BlockEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.inventory.Inventory; import net.minecraft.inventory.SimpleInventory; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.RecipeEntry; import net.minecraft.screen.ArrayPropertyDelegate; import net.minecraft.screen.PropertyDelegate; import net.minecraft.screen.slot.Slot; @@ -35,8 +34,8 @@ public MetalPressMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> inv.player.getWorld().getRecipeManager().listAllOfType(MetalPressRecipe.Type.INSTANCE).stream(). - map(RecipeEntry::value).map(MetalPressRecipe::getInput).anyMatch(ingredient -> ingredient.test(stack)); + case 0 -> RecipeUtils.isIngredientOfAny(((MetalPressBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1 -> stack.isIn(EnergizedPowerItemTags.METAL_PRESS_MOLDS) && (getStack(1).isEmpty() || stack.getCount() == 1); case 2 -> false; diff --git a/src/main/java/me/jddev0/ep/screen/MetalPressScreen.java b/src/main/java/me/jddev0/ep/screen/MetalPressScreen.java index d8e478a97..2975d9011 100644 --- a/src/main/java/me/jddev0/ep/screen/MetalPressScreen.java +++ b/src/main/java/me/jddev0/ep/screen/MetalPressScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class MetalPressScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -30,6 +30,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 80, y + 41, 176, 53, handler.getScaledProgressArrowSize(), 10); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 80, y + 41, 176, 53, handler.getScaledProgressArrowSize(), 10, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberMenu.java b/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberMenu.java index a7fe5a9fc..6a9103ddb 100644 --- a/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberMenu.java +++ b/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberMenu.java @@ -3,8 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.PlantGrowthChamberBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.PlantGrowthChamberFertilizerRecipe; -import me.jddev0.ep.recipe.PlantGrowthChamberRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -35,8 +33,10 @@ public PlantGrowthChamberMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), PlantGrowthChamberRecipe.Type.INSTANCE, stack); - case 1 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), PlantGrowthChamberFertilizerRecipe.Type.INSTANCE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((PlantGrowthChamberBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); + case 1 -> RecipeUtils.isIngredientOfAny(((PlantGrowthChamberBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfFertilizerRecipes(), stack); case 2, 3, 4, 5 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberScreen.java b/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberScreen.java index d6d4a8de6..ff6785975 100644 --- a/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberScreen.java +++ b/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class PlantGrowthChamberScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -30,6 +30,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 94, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 94, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/PoweredFurnaceMenu.java b/src/main/java/me/jddev0/ep/screen/PoweredFurnaceMenu.java index e9d5ff44c..167df5d28 100644 --- a/src/main/java/me/jddev0/ep/screen/PoweredFurnaceMenu.java +++ b/src/main/java/me/jddev0/ep/screen/PoweredFurnaceMenu.java @@ -36,8 +36,7 @@ private PoweredFurnaceMenu(int id, PlayerInventory inv, PoweredFurnaceBlockEntit @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), - blockEntity.getRecipeForFurnaceModeUpgrade(), stack); + case 0 -> RecipeUtils.isIngredientOfAny(blockEntity.getIngredientsOfRecipes(), stack); case 1 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/PoweredFurnaceScreen.java b/src/main/java/me/jddev0/ep/screen/PoweredFurnaceScreen.java index 9109f0fac..e3158e2d8 100644 --- a/src/main/java/me/jddev0/ep/screen/PoweredFurnaceScreen.java +++ b/src/main/java/me/jddev0/ep/screen/PoweredFurnaceScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class PoweredFurnaceScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -30,6 +30,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 80, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 80, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/PressMoldMakerScreen.java b/src/main/java/me/jddev0/ep/screen/PressMoldMakerScreen.java index 04e317272..540c0ccc1 100644 --- a/src/main/java/me/jddev0/ep/screen/PressMoldMakerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/PressMoldMakerScreen.java @@ -7,8 +7,9 @@ import me.jddev0.ep.recipe.PressMoldMakerRecipe; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; @@ -47,7 +48,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { if(index < handler.getRecipeList().size() && handler.getRecipeList().get(index).getSecond()) { ModMessages.sendClientPacketToServer(new CraftPressMoldMakerRecipeC2SPacket(handler.getBlockEntity().getPos(), - handler.getRecipeList().get(index).getFirst().id())); + handler.getRecipeList().get(index).getFirst().id().getValue())); clicked = true; } } @@ -79,12 +80,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); renderButtons(drawContext, x, y, mouseX, mouseY); } @@ -98,9 +99,9 @@ private void renderButtons(DrawContext drawContext, int x, int y, int mouseX, in if(handler.getRecipeList().get(i).getSecond()) { if(isPointWithinBounds(btnX, btnY, 20, 20, mouseX, mouseY)) { - drawContext.drawTexture(TEXTURE, x + btnX, y + btnY, 176, 20, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + btnX, y + btnY, 176, 20, 20, 20, 256, 256); }else { - drawContext.drawTexture(TEXTURE, x + btnX, y + btnY, 176, 0, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + btnX, y + btnY, 176, 0, 20, 20, 256, 256); } } @@ -118,18 +119,18 @@ private void renderButtons(DrawContext drawContext, int x, int y, int mouseX, in //Up button if(scrollIndexOffset > 0) { if(isPointWithinBounds(155, 19, 11, 12, mouseX, mouseY)) { - drawContext.drawTexture(TEXTURE, x + 155, y + 19, 187, 40, 11, 12); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 155, y + 19, 187, 40, 11, 12, 256, 256); }else { - drawContext.drawTexture(TEXTURE, x + 155, y + 19, 176, 40, 11, 12); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 155, y + 19, 176, 40, 11, 12, 256, 256); } } //Down button if(scrollIndexOffset + 8 < handler.getRecipeList().size()) { if(isPointWithinBounds(155, 55, 11, 12, mouseX, mouseY)) { - drawContext.drawTexture(TEXTURE, x + 155, y + 55, 187, 52, 11, 12); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 155, y + 55, 187, 52, 11, 12, 256, 256); }else { - drawContext.drawTexture(TEXTURE, x + 155, y + 55, 176, 52, 11, 12); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 155, y + 55, 176, 52, 11, 12, 256, 256); } } } @@ -159,7 +160,7 @@ protected void drawMouseoverTooltip(DrawContext drawContext, int mouseX, int mou components.add(Text.translatable("tooltip.energizedpower.count_with_item.txt", output.getCount(), output.getName())); components.add(Text.translatable("tooltip.energizedpower.press_mold_maker.btn.recipes", recipe.getClayCount(), - Text.translatable(Items.CLAY_BALL.getTranslationKey())).formatted(Formatting.ITALIC)); + Items.CLAY_BALL.getName()).formatted(Formatting.ITALIC)); drawContext.drawTooltip(textRenderer, components, Optional.empty(), mouseX, mouseY); } diff --git a/src/main/java/me/jddev0/ep/screen/PulverizerMenu.java b/src/main/java/me/jddev0/ep/screen/PulverizerMenu.java index 5d502651f..a81ddff68 100644 --- a/src/main/java/me/jddev0/ep/screen/PulverizerMenu.java +++ b/src/main/java/me/jddev0/ep/screen/PulverizerMenu.java @@ -3,7 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.PulverizerBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.PulverizerRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -34,7 +33,8 @@ public PulverizerMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), PulverizerRecipe.Type.INSTANCE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((PulverizerBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1, 2 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/PulverizerScreen.java b/src/main/java/me/jddev0/ep/screen/PulverizerScreen.java index 9db72f14e..345497379 100644 --- a/src/main/java/me/jddev0/ep/screen/PulverizerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/PulverizerScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class PulverizerScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -30,6 +30,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 68, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 68, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/SawmillMenu.java b/src/main/java/me/jddev0/ep/screen/SawmillMenu.java index 1191ef409..7699a3182 100644 --- a/src/main/java/me/jddev0/ep/screen/SawmillMenu.java +++ b/src/main/java/me/jddev0/ep/screen/SawmillMenu.java @@ -3,7 +3,6 @@ import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.entity.SawmillBlockEntity; import me.jddev0.ep.inventory.ConstraintInsertSlot; -import me.jddev0.ep.recipe.SawmillRecipe; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; import me.jddev0.ep.machine.configuration.ComparatorMode; @@ -34,7 +33,8 @@ public SawmillMenu(int id, PlayerInventory inv, BlockPos pos) { @Override public boolean isValid(int slot, ItemStack stack) { return switch(slot) { - case 0 -> RecipeUtils.isIngredientOfAny(inv.player.getWorld(), SawmillRecipe.Type.INSTANCE, stack); + case 0 -> RecipeUtils.isIngredientOfAny(((SawmillBlockEntity)inv.player.getWorld(). + getBlockEntity(pos)).getIngredientsOfRecipes(), stack); case 1, 2 -> false; default -> super.isValid(slot, stack); }; diff --git a/src/main/java/me/jddev0/ep/screen/SawmillScreen.java b/src/main/java/me/jddev0/ep/screen/SawmillScreen.java index 1f3a54c00..b71c45855 100644 --- a/src/main/java/me/jddev0/ep/screen/SawmillScreen.java +++ b/src/main/java/me/jddev0/ep/screen/SawmillScreen.java @@ -5,9 +5,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class SawmillScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { @@ -30,6 +30,6 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in private void renderProgressArrow(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) - drawContext.drawTexture(TEXTURE, x + 68, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 68, y + 34, 176, 53, handler.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/SolarPanelScreen.java b/src/main/java/me/jddev0/ep/screen/SolarPanelScreen.java index 81cbdf159..50b8a7c6a 100644 --- a/src/main/java/me/jddev0/ep/screen/SolarPanelScreen.java +++ b/src/main/java/me/jddev0/ep/screen/SolarPanelScreen.java @@ -6,7 +6,6 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class SolarPanelScreen extends UpgradableEnergyStorageContainerScreen { diff --git a/src/main/java/me/jddev0/ep/screen/StoneSolidifierScreen.java b/src/main/java/me/jddev0/ep/screen/StoneSolidifierScreen.java index 504f72e44..511323e37 100644 --- a/src/main/java/me/jddev0/ep/screen/StoneSolidifierScreen.java +++ b/src/main/java/me/jddev0/ep/screen/StoneSolidifierScreen.java @@ -7,11 +7,11 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.recipe.RecipeEntry; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -63,14 +63,14 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(int tank, DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52, 256, 256); } private void renderProgressArrows(DrawContext drawContext, int x, int y) { if(handler.isCraftingActive()) { - drawContext.drawTexture(TEXTURE, x + 69, y + 45, 176, 106, handler.getScaledProgressArrowSize(), 14); - drawContext.drawTexture(TEXTURE, x + 143 - handler.getScaledProgressArrowSize(), y + 45, - 196 - handler.getScaledProgressArrowSize(), 120, handler.getScaledProgressArrowSize(), 14); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 69, y + 45, 176, 106, handler.getScaledProgressArrowSize(), 14, 256, 256); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 143 - handler.getScaledProgressArrowSize(), y + 45, + 196 - handler.getScaledProgressArrowSize(), 120, handler.getScaledProgressArrowSize(), 14, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/TeleporterScreen.java b/src/main/java/me/jddev0/ep/screen/TeleporterScreen.java index 26a1c550b..0a5994910 100644 --- a/src/main/java/me/jddev0/ep/screen/TeleporterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/TeleporterScreen.java @@ -6,7 +6,6 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class TeleporterScreen extends EnergyStorageContainerScreen { diff --git a/src/main/java/me/jddev0/ep/screen/ThermalGeneratorScreen.java b/src/main/java/me/jddev0/ep/screen/ThermalGeneratorScreen.java index 108fe8900..25dd17b5a 100644 --- a/src/main/java/me/jddev0/ep/screen/ThermalGeneratorScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ThermalGeneratorScreen.java @@ -6,9 +6,9 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -35,7 +35,7 @@ protected void renderBgNormalView(DrawContext drawContext, float partialTick, in } private void renderFluidMeterOverlay(DrawContext drawContext, int x, int y) { - drawContext.drawTexture(TEXTURE, x + 80, y + 17, 176, 53, 16, 52); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 80, y + 17, 176, 53, 16, 52, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/TimeControllerScreen.java b/src/main/java/me/jddev0/ep/screen/TimeControllerScreen.java index 771e95cbf..ff60406ec 100644 --- a/src/main/java/me/jddev0/ep/screen/TimeControllerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/TimeControllerScreen.java @@ -8,12 +8,12 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.sound.SoundEvents; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -74,19 +74,19 @@ private void renderButtons(DrawContext drawContext, int x, int y, int mouseX, in if(isPointWithinBounds(34, 34, 18, 18, mouseX, mouseY)) { //Day button - drawContext.drawTexture(TEXTURE, x + 34, y + 34, 176, 52, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 34, y + 34, 176, 52, 18, 18, 256, 256); }else if(isPointWithinBounds(70, 34, 18, 18, mouseX, mouseY)) { //Noon button - drawContext.drawTexture(TEXTURE, x + 70, y + 34, 176, 70, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 70, y + 34, 176, 70, 18, 18, 256, 256); }else if(isPointWithinBounds(106, 34, 18, 18, mouseX, mouseY)) { //Night button - drawContext.drawTexture(TEXTURE, x + 106, y + 34, 176, 88, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 106, y + 34, 176, 88, 18, 18, 256, 256); }else if(isPointWithinBounds(142, 34, 18, 18, mouseX, mouseY)) { //Midnight button - drawContext.drawTexture(TEXTURE, x + 142, y + 34, 176, 106, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 142, y + 34, 176, 106, 18, 18, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/UnchargerScreen.java b/src/main/java/me/jddev0/ep/screen/UnchargerScreen.java index f6268de47..136d6d822 100644 --- a/src/main/java/me/jddev0/ep/screen/UnchargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/UnchargerScreen.java @@ -6,7 +6,6 @@ import net.fabricmc.api.Environment; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; -import net.minecraft.util.Identifier; @Environment(EnvType.CLIENT) public class UnchargerScreen extends ConfigurableUpgradableEnergyStorageContainerScreen { diff --git a/src/main/java/me/jddev0/ep/screen/WeatherControllerScreen.java b/src/main/java/me/jddev0/ep/screen/WeatherControllerScreen.java index 23893cd51..88697d4af 100644 --- a/src/main/java/me/jddev0/ep/screen/WeatherControllerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/WeatherControllerScreen.java @@ -7,10 +7,10 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.text.Text; import net.minecraft.util.Formatting; -import net.minecraft.util.Identifier; import java.util.ArrayList; import java.util.List; @@ -67,23 +67,23 @@ private void renderButtons(DrawContext drawContext, int x, int y, int mouseX, in //Weather clear button if(isPointWithinBounds(52, 34, 18, 18, mouseX, mouseY)) { - drawContext.drawTexture(TEXTURE, x + 52, y + 34, 176, 52, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 52, y + 34, 176, 52, 18, 18, 256, 256); }else if(selectedWeatherType == 0) { - drawContext.drawTexture(TEXTURE, x + 52, y + 34, 194, 52, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 52, y + 34, 194, 52, 18, 18, 256, 256); } //Weather rain button if(isPointWithinBounds(88, 34, 18, 18, mouseX, mouseY)) { - drawContext.drawTexture(TEXTURE, x + 88, y + 34, 176, 70, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 88, y + 34, 176, 70, 18, 18, 256, 256); }else if(selectedWeatherType == 1) { - drawContext.drawTexture(TEXTURE, x + 88, y + 34, 194, 70, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 88, y + 34, 194, 70, 18, 18, 256, 256); } //Weather thunder button if(isPointWithinBounds(124, 34, 18, 18, mouseX, mouseY)) { - drawContext.drawTexture(TEXTURE, x + 124, y + 34, 176, 88, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 124, y + 34, 176, 88, 18, 18, 256, 256); }else if(selectedWeatherType == 2) { - drawContext.drawTexture(TEXTURE, x + 124, y + 34, 194, 88, 18, 18); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + 124, y + 34, 194, 88, 18, 18, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/base/ConfigurableUpgradableEnergyStorageContainerScreen.java b/src/main/java/me/jddev0/ep/screen/base/ConfigurableUpgradableEnergyStorageContainerScreen.java index 1d7e46577..dd44e54a2 100644 --- a/src/main/java/me/jddev0/ep/screen/base/ConfigurableUpgradableEnergyStorageContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/ConfigurableUpgradableEnergyStorageContainerScreen.java @@ -8,6 +8,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.screen.ScreenHandler; import net.minecraft.text.Text; @@ -65,18 +66,18 @@ protected void renderConfiguration(DrawContext drawContext, int x, int y, int mo int ordinal = redstoneMode.ordinal(); if(isPointWithinBounds(-22, 26, 20, 20, mouseX, mouseY)) { - drawContext.drawTexture(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 26, 20 * ordinal, 20, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 26, 20 * ordinal, 20, 20, 20, 256, 256); }else { - drawContext.drawTexture(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 26, 20 * ordinal, 0, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 26, 20 * ordinal, 0, 20, 20, 256, 256); } ComparatorMode comparatorMode = handler.getComparatorMode(); ordinal = comparatorMode.ordinal(); if(isPointWithinBounds(-22, 50, 20, 20, mouseX, mouseY)) { - drawContext.drawTexture(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 50, 20 * ordinal, 60, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 50, 20 * ordinal, 60, 20, 20, 256, 256); }else { - drawContext.drawTexture(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 50, 20 * ordinal, 40, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 50, 20 * ordinal, 40, 20, 20, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/base/EnergizedPowerBaseContainerScreen.java b/src/main/java/me/jddev0/ep/screen/base/EnergizedPowerBaseContainerScreen.java index ed74046bf..b3a688b07 100644 --- a/src/main/java/me/jddev0/ep/screen/base/EnergizedPowerBaseContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/EnergizedPowerBaseContainerScreen.java @@ -6,6 +6,7 @@ import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.transfer.v1.client.fluid.FluidVariantRendering; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.render.*; @@ -56,32 +57,33 @@ private void renderFluidStack(DrawContext drawContext, FluidStack fluidStack, lo RenderSystem.setShaderTexture(0, PlayerScreenHandler.BLOCK_ATLAS_TEXTURE); - RenderSystem.setShader(GameRenderer::getPositionTexProgram); - RenderSystem.setShaderColor((fluidColorTint >> 16 & 0xFF) / 255.f, - (fluidColorTint >> 8 & 0xFF) / 255.f, (fluidColorTint & 0xFF) / 255.f, - (fluidColorTint >> 24 & 0xFF) / 255.f); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); Matrix4f mat = drawContext.getMatrices().peek().getPositionMatrix(); for(int yOffset = h;yOffset > fluidMeterPos;yOffset -= 16) { for(int xOffset = 0;xOffset < w;xOffset += 16) { - int width = Math.min(w - xOffset, 16); - int height = Math.min(yOffset - fluidMeterPos, 16); - - float u0 = stillFluidSprite.getMinU(); - float u1 = stillFluidSprite.getMaxU(); - float v0 = stillFluidSprite.getMinV(); - float v1 = stillFluidSprite.getMaxV(); - u1 = u1 - ((16 - width) / 16.f * (u1 - u0)); - v0 = v0 - ((16 - height) / 16.f * (v0 - v1)); - - Tessellator tesselator = Tessellator.getInstance(); - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE); - bufferBuilder.vertex(mat, xOffset, yOffset, 0).texture(u0, v1); - bufferBuilder.vertex(mat, xOffset + width, yOffset, 0).texture(u1, v1); - bufferBuilder.vertex(mat, xOffset + width, yOffset - height, 0).texture(u1, v0); - bufferBuilder.vertex(mat, xOffset, yOffset - height, 0).texture(u0, v0); - BufferRenderer.drawWithGlobalProgram(bufferBuilder.end()); + Sprite finalStillFluidSprite = stillFluidSprite; + int finalXOffset = xOffset; + int finalYOffset = yOffset; + + drawContext.draw(vertexConsumers -> { + int width = Math.min(w - finalXOffset, 16); + int height = Math.min(finalYOffset - fluidMeterPos, 16); + + float u0 = finalStillFluidSprite.getMinU(); + float u1 = finalStillFluidSprite.getMaxU(); + float v0 = finalStillFluidSprite.getMinV(); + float v1 = finalStillFluidSprite.getMaxV(); + u1 = u1 - ((16 - width) / 16.f * (u1 - u0)); + v0 = v0 - ((16 - height) / 16.f * (v0 - v1)); + + VertexConsumer bufferBuilder = vertexConsumers.getBuffer(RenderLayer.getGuiTextured(finalStillFluidSprite.getAtlasId())); + bufferBuilder.vertex(mat, finalXOffset, finalYOffset, 0).color(fluidColorTint).texture(u0, v1); + bufferBuilder.vertex(mat, finalXOffset + width, finalYOffset, 0).color(fluidColorTint).texture(u1, v1); + bufferBuilder.vertex(mat, finalXOffset + width, finalYOffset - height, 0).color(fluidColorTint).texture(u1, v0); + bufferBuilder.vertex(mat, finalXOffset, finalYOffset - height, 0).color(fluidColorTint).texture(u0, v0); + }); } } } diff --git a/src/main/java/me/jddev0/ep/screen/base/EnergyStorageContainerScreen.java b/src/main/java/me/jddev0/ep/screen/base/EnergyStorageContainerScreen.java index 2b66ec206..a676ad612 100644 --- a/src/main/java/me/jddev0/ep/screen/base/EnergyStorageContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/EnergyStorageContainerScreen.java @@ -5,8 +5,9 @@ import me.jddev0.ep.util.EnergyUtils; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.minecraft.client.gl.ShaderProgramKeys; import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.render.GameRenderer; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.screen.ScreenHandler; import net.minecraft.text.Text; @@ -58,13 +59,13 @@ public EnergyStorageContainerScreen(T menu, PlayerInventory inventory, Text titl @Override protected void drawBackground(DrawContext drawContext, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexProgram); + RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - backgroundWidth) / 2; int y = (height - backgroundHeight) / 2; if(!handler.isInUpgradeModuleView()) { - drawContext.drawTexture(TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); renderEnergyMeter(drawContext, x, y); renderEnergyIndicatorBar(drawContext, x, y); } @@ -72,15 +73,15 @@ protected void drawBackground(DrawContext drawContext, float partialTick, int mo protected void renderEnergyMeter(DrawContext drawContext, int x, int y) { int pos = handler.getScaledEnergyMeterPos(energyMeterHeight); - drawContext.drawTexture(TEXTURE, x + energyMeterX, y + energyMeterY + energyMeterHeight - pos, energyMeterU, - energyMeterV + energyMeterHeight - pos, energyMeterWidth, pos); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + energyMeterX, y + energyMeterY + energyMeterHeight - pos, energyMeterU, + energyMeterV + energyMeterHeight - pos, energyMeterWidth, pos, 256, 256); } protected void renderEnergyIndicatorBar(DrawContext drawContext, int x, int y) { int pos = handler.getScaledEnergyIndicatorBarPos(energyMeterHeight); if(pos > 0) - drawContext.drawTexture(TEXTURE, x + energyMeterX, y + energyMeterY + energyMeterHeight - pos, energyMeterU, - energyMeterV + energyMeterHeight, energyMeterWidth, 1); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + energyMeterX, y + energyMeterY + energyMeterHeight - pos, energyMeterU, + energyMeterV + energyMeterHeight, energyMeterWidth, 1, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/base/SelectableRecipeMachineContainerScreen.java b/src/main/java/me/jddev0/ep/screen/base/SelectableRecipeMachineContainerScreen.java index 96f9525c3..5d2155720 100644 --- a/src/main/java/me/jddev0/ep/screen/base/SelectableRecipeMachineContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/SelectableRecipeMachineContainerScreen.java @@ -5,6 +5,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; import net.minecraft.recipe.Recipe; @@ -107,14 +108,14 @@ private void renderCurrentRecipeOutput(DrawContext drawContext, int x, int y) { private void renderButtons(DrawContext drawContext, int x, int y, int mouseX, int mouseY) { //Down button if(isPointWithinBounds(recipeSelectorPosX - 13, recipeSelectorPosY + 2, 11, 12, mouseX, mouseY)) { - drawContext.drawTexture(TEXTURE, x + recipeSelectorPosX - 13, y + recipeSelectorPosY + 2, - recipeSelectorTexturePosX, recipeSelectorTexturePosY, 11, 12); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + recipeSelectorPosX - 13, y + recipeSelectorPosY + 2, + recipeSelectorTexturePosX, recipeSelectorTexturePosY, 11, 12, 256, 256); } //Up button if(isPointWithinBounds(recipeSelectorPosX + 18, recipeSelectorPosY + 2, 11, 12, mouseX, mouseY)) { - drawContext.drawTexture(TEXTURE, x + recipeSelectorPosX + 18, y + recipeSelectorPosY + 2, - recipeSelectorTexturePosX + 11, recipeSelectorTexturePosY, 11, 12); + drawContext.drawTexture(RenderLayer::getGuiTextured, TEXTURE, x + recipeSelectorPosX + 18, y + recipeSelectorPosY + 2, + recipeSelectorTexturePosX + 11, recipeSelectorTexturePosY, 11, 12, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/base/UpgradableEnergyStorageContainerScreen.java b/src/main/java/me/jddev0/ep/screen/base/UpgradableEnergyStorageContainerScreen.java index d0605e4d9..6624360b7 100644 --- a/src/main/java/me/jddev0/ep/screen/base/UpgradableEnergyStorageContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/UpgradableEnergyStorageContainerScreen.java @@ -4,6 +4,7 @@ import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.render.RenderLayer; import net.minecraft.client.sound.PositionedSoundInstance; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.screen.ScreenHandler; @@ -94,7 +95,7 @@ protected final void drawBackground(DrawContext drawContext, float partialTick, int y = (height - backgroundHeight) / 2; if(handler.isInUpgradeModuleView()) { - drawContext.drawTexture(UPGRADE_VIEW_TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight); + drawContext.drawTexture(RenderLayer::getGuiTextured, UPGRADE_VIEW_TEXTURE, x, y, 0, 0, backgroundWidth, backgroundHeight, 256, 256); }else { renderBgNormalView(drawContext, partialTick, mouseX, mouseY); } @@ -105,11 +106,11 @@ protected final void drawBackground(DrawContext drawContext, float partialTick, protected void renderConfiguration(DrawContext drawContext, int x, int y, int mouseX, int mouseY) { //Upgrade view if(isPointWithinBounds(-22, 2, 20, 20, mouseX, mouseY)) { - drawContext.drawTexture(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 40, 80, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 40, 80, 20, 20, 256, 256); }else if(handler.isInUpgradeModuleView()) { - drawContext.drawTexture(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 20, 80, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 20, 80, 20, 20, 256, 256); }else { - drawContext.drawTexture(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 0, 80, 20, 20); + drawContext.drawTexture(RenderLayer::getGuiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 0, 80, 20, 20, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/util/RecipeUtils.java b/src/main/java/me/jddev0/ep/util/RecipeUtils.java index e735bff97..5b1598945 100644 --- a/src/main/java/me/jddev0/ep/util/RecipeUtils.java +++ b/src/main/java/me/jddev0/ep/util/RecipeUtils.java @@ -1,36 +1,63 @@ package me.jddev0.ep.util; -import net.minecraft.inventory.Inventory; +import me.jddev0.ep.mixin.recipe.ServerRecipeManagerGetter; +import me.jddev0.ep.recipe.EnergizedPowerBaseRecipe; import net.minecraft.item.ItemStack; -import net.minecraft.recipe.Recipe; -import net.minecraft.recipe.RecipeEntry; -import net.minecraft.recipe.RecipeType; +import net.minecraft.recipe.*; +import net.minecraft.recipe.display.RecipeDisplay; +import net.minecraft.recipe.display.SlotDisplayContexts; import net.minecraft.recipe.input.RecipeInput; -import net.minecraft.world.World; +import net.minecraft.server.world.ServerWorld; +import java.util.Collection; import java.util.List; public final class RecipeUtils { private RecipeUtils() {} - public static > boolean isIngredientOfAny(World level, RecipeType recipeType, ItemStack itemStack) { - List> recipes = level.getRecipeManager().listAllOfType(recipeType); + public static > Collection> getAllRecipesFor(ServerWorld level, RecipeType recipeType) { + return ((ServerRecipeManagerGetter)level.getRecipeManager()).getPreparedRecipes().getAll(recipeType); + } + + public static > boolean isIngredientOfAny(ServerWorld level, RecipeType recipeType, ItemStack itemStack) { + Collection> recipes = getAllRecipesFor(level, recipeType); - return recipes.stream().map(RecipeEntry::value).map(Recipe::getIngredients). - anyMatch(ingredients -> ingredients.stream().anyMatch(ingredient -> ingredient.test(itemStack))); + return recipes.stream().map(RecipeEntry::value).anyMatch(recipe -> { + if(recipe instanceof EnergizedPowerBaseRecipe epRecipe) + return epRecipe.isIngredient(itemStack); + + return recipe.getIngredientPlacement().getIngredients().stream(). + anyMatch(ingredient -> ingredient.test(itemStack)); + }); } - public static > boolean isResultOfAny(World level, RecipeType recipeType, ItemStack itemStack) { - List> recipes = level.getRecipeManager().listAllOfType(recipeType); + public static boolean isIngredientOfAny(List ingredientList, ItemStack itemStack) { + return ingredientList.stream().anyMatch(ingredient -> ingredient.test(itemStack)); + } - return recipes.stream().map(RecipeEntry::value).map(recipe -> recipe.getResult(level.getRegistryManager())). - anyMatch(stack -> ItemStack.areItemsAndComponentsEqual(stack, itemStack)); + public static > List getIngredientsOf(ServerWorld level, RecipeType recipeType) { + Collection> recipes = getAllRecipesFor(level, recipeType); + + return recipes.stream().map(RecipeEntry::value).flatMap(recipe -> { + if(recipe instanceof EnergizedPowerBaseRecipe epRecipe) + return epRecipe.getIngredients().stream(); + + return recipe.getIngredientPlacement().getIngredients().stream(); + }).toList(); } - public static > boolean isRemainderOfAny(World level, RecipeType recipeType, C container, ItemStack itemStack) { - List> recipes = level.getRecipeManager().listAllOfType(recipeType); + public static > boolean isResultOfAny(ServerWorld level, RecipeType recipeType, ItemStack itemStack) { + Collection> recipes = getAllRecipesFor(level, recipeType); + + return recipes.stream().map(RecipeEntry::value).anyMatch(recipe -> { + if(recipe instanceof EnergizedPowerBaseRecipe epRecipe) + return epRecipe.isResult(itemStack); - return recipes.stream().map(RecipeEntry::value).map(recipe -> recipe.getRemainder(container)). - anyMatch(remainingItems -> remainingItems.stream().anyMatch(item -> ItemStack.areItemsAndComponentsEqual(item, itemStack))); + return recipe.getDisplays().stream(). + filter(recipeDisplay -> recipeDisplay.isEnabled(level.getEnabledFeatures())). + map(RecipeDisplay::result). + flatMap(result -> result.getStacks(SlotDisplayContexts.createParameters(level)).stream()). + anyMatch(stack -> ItemStack.areItemsAndComponentsEqual(stack, itemStack)); + }); } } diff --git a/src/main/java/me/jddev0/ep/world/ModPlacedFeatures.java b/src/main/java/me/jddev0/ep/world/ModPlacedFeatures.java index 8947a24db..23b75a118 100644 --- a/src/main/java/me/jddev0/ep/world/ModPlacedFeatures.java +++ b/src/main/java/me/jddev0/ep/world/ModPlacedFeatures.java @@ -6,7 +6,6 @@ import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.util.Identifier; import net.minecraft.world.gen.YOffset; import net.minecraft.world.gen.feature.ConfiguredFeature; import net.minecraft.world.gen.feature.PlacedFeature; diff --git a/src/main/java/me/jddev0/ep/world/ModStructureSets.java b/src/main/java/me/jddev0/ep/world/ModStructureSets.java index 50e20c898..c28cb4507 100644 --- a/src/main/java/me/jddev0/ep/world/ModStructureSets.java +++ b/src/main/java/me/jddev0/ep/world/ModStructureSets.java @@ -6,7 +6,6 @@ import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.structure.StructureSet; -import net.minecraft.util.Identifier; import net.minecraft.world.gen.chunk.placement.RandomSpreadStructurePlacement; import net.minecraft.world.gen.chunk.placement.SpreadType; import net.minecraft.world.gen.structure.Structure; diff --git a/src/main/java/me/jddev0/ep/world/ModStructures.java b/src/main/java/me/jddev0/ep/world/ModStructures.java index 5a9f4a3b4..c7627bbaa 100644 --- a/src/main/java/me/jddev0/ep/world/ModStructures.java +++ b/src/main/java/me/jddev0/ep/world/ModStructures.java @@ -7,7 +7,6 @@ import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; import net.minecraft.structure.pool.StructurePool; -import net.minecraft.util.Identifier; import net.minecraft.world.Heightmap; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.GenerationStep; diff --git a/src/main/resources/assets/energizedpower/textures/gui/book_icons/redstone_mode_high.png b/src/main/resources/assets/energizedpower/textures/gui/book_icons/redstone_mode_high.png index ef83fc0dda8da46db5e1a908c072bd84bc555bea..221e4670d5d8eb0010337185c28a6abe2663804a 100644 GIT binary patch delta 1881 zcmZ2)b<28!3S-1X)zxAa3=BpFMkZE<23AJq3I-Nd#)eiV<`bXQG74-?VXR@Q|M{;= zV*%5E;rfBJ9B6j}9-s5?f3c{GK?4c@ASIw6+9xNnicEgX${E^#Y!E*7Z%~ZzPX;Ra zIr%&DRUrMPzuRENqOJp9`jomf);YiEU-M#7*RSLcpC3#vWL21Kz{*i?_n%==mj?5b zQyPo*rTjhc9Z2t8{8>4#OJi-n#ZREr`uX;8cAFPRzv8d~#zsF-B_0Fk*JTJcFd@WCFzsI7R$?1~JQw z7_;heW-h2+^))c0g(~Gb1dG z2*^Ow$kSCoWtTTR$yn5N=frP6uqu!u32yuUH{ZV3_GVyUY?*wTL#94>X^>V^nSkh- zfVpoLDfMmTa$O;i)fy)2qxZK-jn}iQd+~#)f)B|XUp;uVW_9yw1&+D~3u_C_T^^nP zy}5LgY%Sg$-(B6mySyPl-}vmSF2-4Tvsb#roJk2kdO*8L!i{0^i|I2{&v*t2$sWIM zTT`>Q`_r0p&;QBn%{rIV;IGnGZ+Li1r+G)ZS#I-ZyTTcwsZ)Q1}6AvgTR%=!o5l$V?71F@2QzsAJX3Df%fkVV3!Y*G`3A+oN8esIh##PVwAl z96}LCgj6~L0$e#$Z**K*H91Mq_4h}guyD zd2=0Yd?$YVrvx+8ZimIsEbbrgyKKSu=lp@G_dbQcI`BsQ<<@CpmQ264HFm$Aw(Je# zbn62TCM(X~r2R9K>!;0!I=A~%SlRL#AI!QQT`a$x-(l7+uX_ya?FT9vH(j^hvwQj8 z?e*tPe*b1{ODI}*zUs9t1B1}1%#etZ2wxwo3wDnj1~t$1BNbG5H2>pa8V= z4}q2blP&q=Fa$TJ^EI$ewiAp|NwfqSlwz5xn{1F~p=)BAY^G~rk(8=yW|C}@Vv=TT zX=Ic#d7+T2fQhc5fv%A`%v_7jH-+;!#P-QFtYctcU`z6LcLCBs@Y8vB{p45~x%wAe z((LjEqRTHI2a3-1ba4!^IGvmz!P>J!<=_AR|K(j3m6eq*vi$+F|J$2<_4)rl*|ddo z{^uE|PD{@C^T*@+b&$;e)Px`Z>kqg6|Gz%IeZ$2)E>jrmB_;l?Z@;7>$zYt4wet4= zfN^l+U0Z&&ymvv4FO#rG-1B(Cv delta 1680 zcmca*z20hq3gfJas;k9J7#NHUjEt=e4Xun!6bwzQjE$@ejVC^e5(0)4pKx23C#92Us~&?KUs! z(tg>0`21v`G|*UvMO_+j9Z0G*&CwJx-v_$m&!0aBo&q&~?a%qN3uw!V-_9`Gko2n5 zquav#s!C(g&htmRrv$pz7B+rL6$y+ts(VnI?kW;~S-yR~TA-`wXZ3fCt|9@%VD@Vz zKywU#RKg5OzUV4?t>)pkSdqZEn?EPk!^A}bT^WeQaL3pH4SO_i;xQm~r&vA)=(HQf z@+7&i9^wtSGamq*Td{me|b(0=~(mQx;?wU z@2F<~@j7+cEZO9SRgrF1GX*y76jl7u73U&&OkkHv+N;frW;8wjv8%m*eR<)$r?v0S z3x<7CW3FNPSkH5rx4U9)Mb_m@mhXk#BRqpT&Ud==?o#-ud_8sgeG75fZ=cU}O!Pc2 z=-$zqBz-#fj8~hNji*d-Nbje=k<&%bMbEifG}ZL|$#{uV*{8i@mRokHh;85yWJ(Fy z*l474B=f3=;lyQsTiWXneC&QQ>Eu>Mx4z1d1x`hO9@Kx>9lg2U!0??~tB}LXpL{!S4nt%51F!6#+NBAz@;2h5h3EQ;dJNJDgv2JGxkYIln{OF0Z=`?Cl3UCT_ZJbMNlmd$;$e&-(k9!Es{I zWb5+Dz_1s5o*5ER65;D(wONs?iAlx8%)&g$$S_IQ%pk>3*Tm2wSvScr#Z=eGDACZ+ zD8)D}$N48hGR zd=0Fd+eH#M#Achfr7$osuqAoByDOUp!AJFHpfGPZ!4! zi_^&o608*m>opXjKgYAR{jXp6>_O1+ChyPoZf#^Z);Udu1T- z+y-R)wQurW6rLb;UHHP8mh%%Nm*(-Dj`{i_s^vO^o}OOYcKLl1@)?+!nVUB-@c(41 z`TeaoA>yH_>4Rg7`FZr?_N(7#Q0CQatN;IRV*Y`h(&r`q{rTB^oq=J)<bP0l+XkKHHm`3 diff --git a/src/main/resources/assets/energizedpower/textures/gui/machine_configuration/configuration_buttons.png b/src/main/resources/assets/energizedpower/textures/gui/machine_configuration/configuration_buttons.png index 8ccc59ac24ad65d74fd69d1c86c96a0025ebcb25..e4e2c4ea6b2cfa231bbc3252045a11a1df5a76f8 100644 GIT binary patch delta 7161 zcmcgwcTg1FvY#af2@*t!DV~RY?~nW5)J)AeeY&Unbocr7REK)J@rdIhV9a`bV}M#zL|RM= zDgu{=iAjq}B@jWfAy>-tAWDSb%8LWNrdNGe(zA1JSB2KZj1Zd-1q(;FTUcM~RQ8GJ z^Q=thteYI`9C%WhDWbf*q2o(P3KA?>9m zqb>O^avNKP$XVp?l=AhIdk-Sp=GKvk@Ntc8hK-8VHK&QgB4^v`vajd~+ZOR>Ap`?l zZkBRl474r?j$jR2TU$r;c$WTnnVn4zkDA5nNHGDrCjoM*r*5li^S<2@S1Z+46ZH(= z##@t#WPIXYkgLt-!U3@|9H;x$IAB2SNnQMrfmHK~M;H0+CGrO!z|hLX(%$lK#E}rt z5sN4Dh_R#5uNjvhwhIS z>OFm=nwp)L{5f}G>d`h#o{#L9<=VCLW*BSU-N(dHOLda^?fLi)rwX^E@zxJ)INTUM z@HLT~mW&Yy;D2p?Q?}v6IdM@kt+r(u{4k1K7@H4O95D;{)tZvX0o~G?VvT9gi$oY}J2jEv1S81j1`KL{(yWL*$(Uk`y zCgK6-GqMe;12{B+e5qd3vL|nWs>)|i{_&CEeT>8I}N+3ey?8jjI#Ztx;i%m z1z%Qe@0|oq5{?98l1m_sOK3;hm4*TF6uU+h&gq`<+fnZpLmmfTK8nwwMiSB91!yce zQ;TPU1bOJOrII;oldpNIFW+Ms9u;2lfcL~8E>Yi%G`988i$#yEo>C{suAACRwEyzZ z?$!Mn&h6MxpDq)Ah7nR^lZ-ezJzBl(NOSz$jl-KsCE^wiz?6Yw=dp7m=_79%w=E9# z4L(E^E2n6Ip(jZPIN-|4z%dRmY^oW0)8+XwOvmbyXZKS3Px@FT^MuuPBL-usoegIL z;iDpihF-rXi~hX0mCz3v3*S?UMK?+#`X{@Gzkm8z=2vToXtLE$@<_Mhq**#()6H`%oI=zXiHz`sa48{#l zS6r}S!Tg=FC7UMb^yHNJSO%LUf99q@syqBQ+*yDVSp@Z|_Q z=gL_%y|tNJ4W{TNN-=0~w%?_d^$u1i4zys)(=Rt?sj)WUI1YAnw4d*OJ2B1TX7f7A zN%>O-yo(|OGFbMjsI0c}k~-r}{>f(aln-4oW7uQMU4x4>w4f3LQu`Z&wi58adq5?? zSH2Qmc#KpTn%Cm37`!#1%z7nEF(m{X?=~IUQ9SGXv`}#|JYxTXEB-D$jkMX*UFHS3 zmY<2n)XE!2#d6YLJ9ds8TG#g5rAg8q1kFT?SDd;pYjI9>Uo(DWg}`#jE)}ja>;7)o zCP|#f0VK&KEY2}Z$>U|@81^R^LJ&?E&<~Wr=RU=~nti)DX}p|3W|lvgPi$|v=sAG{ zh6i%9JLArkhv&l?xil^_YAX{2h{FL7Mm(@@RreNVl`i9gecC05(#zl49duC2V?NsknAa%k7w#S~Zm|WDL_e$n% z8j!^0Mye&YfkW4mHVGdz+eDblv_-zmb?%>aj&U{iT=0@$0qHfayyVr>sv=#s9 z0soco4|Dd)c>$SV4T`mSO|fYsp&l7CY0Qk}oyRmsWe>N0Q;Wc&wG;+WJ*TTqNoNgG4AAUQg&VwZz>$JW++OMbQFuI}&wpDb6Nf#I6-l+jbF ztrqb9KF1;}bsGi19u)sjbr8H}qmgT)O}Le6~--l0}< zHG7kaP);c?uXfE!-KdQj>@Y~ncc14ga%YoVn$g_XpNJLXq5n+PY0LPuOv{OZ5pzTJ zB;wVsaJa&rWH%0Yns9>50b5P8zPbu7E-60NV)60^7#Ropl7B4l0q=#Lv%JfQg*C-Xfo9p9Z`|SRoLy@4b?H z7^bphjZ_D7mI?a0W%W2!JXB2fo5I zwkTVJJFRu@jlKIn^gH;8=T$tc-K`MTaMnYL?2LjLI*+bwyQ;E|OOiVck*r$npE6D` z{R|NB0{|PE^+DdA+lg`|yPRMui*?!mNAmoeYy)^h$g$8?MTCzvn~2hbVSp@7VVA6BY{` zP@;NXATrF0B**HE;($Qc*|mo`47o!;`LZH@Mr8EK$7=R@6xMoc~o;S`ssRBZ%R#j zOl|IyY*?4To^}=&8rdN?y}f$Amk};%kpLaqSsx1e)e;*aO33PCeD_*PfFZ*09MN=q2lw-y0;?~syz?`f|EvI8R!cvTt5UP(%}>{ZpF zW9u4~^Yd$r+$-u|zF=*9-fxBiHMwI%+bY7P!mK6jgZAZ}-!WPy9)Iv^&7q`Ia536F zj&^Oa46qLAb9-Lf_V0Ph4W&c0R0N^^LHFtRBMAd89{oq=6SSV0K;UY?u1t`l#@0wd+XoC|1fm#h{JT7Tl~SSgq&({JR=O zN5B?S*U42vf_la5CHPEN%pe?cj>RNS?;+PP8@#KPZ?7N-POAbU*WZ5JfF#LaW)rTb zd=@ydr8tq@@mHRCLrmfjF#CSg(3JyCqxin=!8AY`it!5gJSx*rk8Z36vEpZEkdS9C zC0L(zIRLoIYWrBEv=B5&o z2#bV0W;8WSL_|~^27^l?V3IJ=1T>4i!e9N4$A9m42#APEi->SiK%r1CdnaiPM+;jk z?|Y{Bo&%?th?uzazj2p8V#QJoQ z;$jwJVsNX3IW{GFaY0cLK{2Vn>xAQVmNW6%kzE464T_iNyV?b$PzIq#Nkw3j{J3#u z-{m~gXDSgmVu0!yPQfBdC!~Y^I9Jt^?m{P@TeZ$AikZF3CWF@lxP3ghTJbPlzE~&U zqLH4=gMQ;CO2`3E*2L5Nkl4fRuVo-byRe^UoSsi3SEFC+_xhjojK zidHH|jRzxzn{0-OxcMbOSoTngW1Tla=ZZackb_NvJ_F672tSXnsH-c$%M1)?_hGRD z3Eg8-0paAU-)~rJ&cDvt_7;THlhDfVTbDmk{od0Pv9!FL*k|QF-%dXKTp~I;+Sbbp z?o4mfaQOB@PI75Owc+=L;py*5Z(|Ki$K_{kZjU1)Bja=YdIfgevQvLJajKE zF2?t~_;)ET3Nt|nTC?399~@@I3i7E&Uu0WbTVFXy>!+$W2k!k0ALN~@WB*o81)U<| zw)OLCxONIXZb?^NOGykhXl%ystfqwYz>ScM)Q{gKai&A59@Z?MTlyBa@V6B|LZ@rT zd8JJ!rBzi`bye)&1l|)$$$z?afX>#XQRJqL0*MHHj>zKpCv*!0H!hkc*C93`U&nMl z+Qg{K0WvZu^?`TM!fvbCN`-fP#6TFLWROJZr@iyuH@$C>cb!jC9}OmM0G`w zdnuUP_-RNwemzMN1v=5kO<;*C5cM#6+Ld{{dN11Jl}*WaML_Vw^sIb0 zISXOPr_WetBvg3v_FRH-4O&+oBym3(%<-h@aT zPguu#;$GCbPt1z6=lhNyW`4z_FUxCAkp*^@*>hrB!A$STFJX_19YUK8-!nLIGb`Re zYJbun!px%BA9HN@cHw142cyyNv3*?>1~-rcUtT5Lo%AEYRvPXXKp*Xo!nGkawA)(lBf)JE zS+S{e??YqVprD{nch1i1tB1yl_!Im2&Zf;amRfpfSX(bck=?e}t24|#<*hXqoXeY7 z`@33U+1Ta%^C~MPigicD;qbiRVB*D_2=FBi+aKcM9j#&CowRLl`>5+f(ZwqcC#OFd zAM=Z2wA!=D-kZ1C(f5q~Rr5kQPW=g$f?#P=e%LBI!e=$iSVebISzK zrN4BWn%<7(kQ>3fL)rN1z!yp`=Buo6Gs|DM_bc^`21iXmHW`bTO%}|C55N=K6RSsQ zQIb*%FT;52PGh6)cgmjCf$2<)_osl?)7W2jHqY+gCA`~{*1P6~+if>IO4y$M9_!A9 z6|V{^t*ByF&NuHmIQOkKGosvSpxl$~-sfJ0l@J0#EQ)26dDDgXu7lcxhSNfAWKY7+ z+@IZi3u=E|4?R49`RGXyYvp zF>5%9h>UKS9KDlA0j+>d`J><^bxh5#O`7H3BPzLBA*3#Wyh>3-!yqzL zKQks;Z?GJzBZi4IIgrB$t^tx&GKt?$8%xnei@IVf4ZMNm8@`h!LjR5D z#pI!}t?$R!$Q{DaF`!igBUvOw(7YZW=ozp>ScQnk$7<PyiJ7BX(gD@2wutJXO$gfyM+sTKMJ-?_c$GS2tNO~yQq2M~8Z@CE4U z>EFM5=L8;Q3=R&yPfPRAbF>mGP41R0<(aL6sH>}g!C{hc0oys`>YAET>$Nrnu!IvU zx%a?q8H8w#W=t{wdOqhPsR1PeYuGgar*A;kT(v#Hz|N#(fX%Tj0VCdp5~@ z=Jm6IYNDXY_=u((SEt@SJ`ik~l?14nQTDTw5|AV^*|?{!sICsqNTy;6qedThWMkms zrDm7f^CEV9O}lFk#9OeAxR}HyqY^GlPbWa7DVZt`zzsg(PcGHG8h?H(Rh1szE4lM5 G@P7a~9=s+1 delta 6783 zcmb_=byQW|xAr~<5CjS7<|r-QhYo2FM7jh-N*aknxeq0Z^dUsLOG>&M6r@DD1*E(C zp7*`u-timX_s{poH}+m*thv{mbM3v>T+cJ-j`IxljAn$A2gfjv5bz3#@e0BCc*O*S z#rQ>0n2>D9S!Dr40Rvp9_{E@gB-Nj5cj(Y2S{2~dE3V~sZw(IDN`S+$$?&T1nPuduC8sDF>1~%C3%}d^m)q^H9%` zi;L^{N>GhP7~hdJ_=iI*pS8j(HD1<2X^m8NiKiYyJ9*h&E>~;mezC&9>`ylhY`SO9 z7_Pl1?|_Na*4r?nC_8CO-{w2uX|)9#Xgf6;)m|N6Hn9FoGHS}Ntjdl&`l8~a<&og| zgb#f-twWe@XkSPd&GEksJ!QW1;LtQ-jO)w2I-~Gx-itpsY!0 zfPI#|lvHa|lzO%BM&AA9T3@S&Ia$ho9J(Wtfbw-kZ`#H2-4fSayKi8Q*15BCJ<1|M z{+ZZ=ua?6OqLzarZQ{l;VSR?Nh0LvCq52+{trGRq{*nq_?g@sf7_XRUhZ={>nd6kIaeq zCB?5nA&Fe#JS33VB=j}@`Qfj7u4a;LSMK7s5;peuBj38n z8oZ|GuieR3(!_srdGHYbkWA?pG$wU2S%#Nc9xw#Er*blF8UVvF0q&!vs!=Nlqg81N@eUm`+f zMt8cuDhf3dP(6NvX`IB!(dW=Bx?+a)=MkQPn1GD*JwX`Xz@T-%mY?Z>{ohacG)0Uh4{trVY*4{agJTq<07`U=PaQB zK}XS#zcqz^6R?sWao71(GBNbhQ!txR*LR^Xt7*GiZs!kPr>D~i$)~yB80;FS7ifq1qqY`WX`mONJURh(SV^_G?LGkxo+o>&^ zLs8bmaVK#2 z&Q+zNvjlvD_Jh~X_p+V;*kz4zJC-_;kr2;787-`4({Y-l{8PE z+&1H{TO9CE9+1WAn@TUWlB8yZaZE{?XN9o=|JlI*6#kDs#(0y0jZ0yssfo&8HR}fW}IvR_wSOD=HuW^`l3VC8^}QkfWk< zZFz0gJ@^~}PV#xGCL?=C&~M=b-Krrn+k{*3ai`qh56$aF$#HU~y97SIa&TV`wj9cR z>RV)|H4A>fbjp8ypt{4TBoUcRn^J+v_?lRyef{kZOsu`k@40*1u7BcHw5uftBwt-` zN5K=UNXPH%ag9WZGjgE8!;@Z^eR7j-$@i1r437 znwrKHvg(@C?-_=bZ=^hl^vw9taTTk=gj${dzwuB65`ds>){3uhm}woTS@61GG}KJX z9r-z;K-z~gCuT#r5MzQ;Df?%kO#+sSsVslj6h^LFw`Y8lcDcW1$Ja`{+3rqKqphSR z@Cm`l$XkDVE^b!$WqzSkOoAknnKAiUEz4_$F5VRSRqwVHa;l!Qke!{~Yk{R=-(m#! zBS)!Tz9Hi8^@q=G9^ee#Un^s&mwumcx_7V8mAQ%d*@K!}omly=;7BZ!=nF-i6#^v* z+_gf{qKdGo+126~IregVQw#f|jm>zgmA9VW_lMdTvMxrQt zG<=SXYGV-2s(j3+pYof&A^i#*VEDxJky9G}axThiPlOY~wr*8VtI;`&`yDV6qupdt zW6Gi4V4F!nY+}L*#^$J&v5-H;i{|g;>}6#|X_AP_CC4d!Dim{1S+qXyR~>!4pSnGM z>G_!~i}mq$!LE19nN~IWf=KECI@!By#ZDoAtC^W!1q@Vndj#s44*<2FcG(zK}h98~E z@4&c*ln_!a!_-U#(&v!>$A(>R%W;5x`*2R+mi3bEEBN};cQn@9k<$hB|A++nTi@Dk zYTyismVAmi;5Y-{9OwldaUUO<*R5*0e)ggDD8AGop4||W7yf3p7Lvwd>m6c@*DCcd$rXG5NL*ISZBTbQw)nNbMuM75kpgq&A4ERb2y>+#Nx25cuSy(<9@NQFFuhx8_;X0J z7TXCO3a3mumT(O=;Pj~Y)&13>plh^iq^U@&CE7!D$oo^JQAy>gm&Ww9x-DLp->8G|UDt~PP$~r8ciP@IwA=gXbb%A~%&Eg^vC5P5&LvQ2LIsdELyt!6}xUX(i zmBXg)06-yXr(@u5@T}5~A{ff}TF64cnpa4WOW0aOm`jjP6wW0oC}_ncVrBJ8R1|Ju zAu5C-qRuDa6NHPx`QV}=!o2+af~an4N9lhnc%A>L;5m5t#dvui*Fw^hhrDTMB@*Z5RAbnfri3bFr6YPW4<#Nr_qIj$ctI%2IInp*RwDz2R=u8^tiO zzFvSz1;lYP2Jm1wcL&S8@k49OD)#pF)b#Wk3;WHO+qf{lzeCoQu{qt{3IjiXvLz2}eve@^GBzF^ z9*(}ey0T1^ap^AeZk=e|x^n`x4?03y$I7@@E}Wp;kw8#T(3fN|8O5}EK zvO^&1=r3XC?dd9;yMIWyB#k^z73y9RuCGIJu>GXm5*NBnuTawBd1d6c%iEt^n(2oR zuon6Ewan&j%7lf5r#&Szw0~ne`Ms(i-Xj?I0l>!r=1i2s6-r3;5vSbhshz#rD<5EU ziN7X}{R>7VJ+g#OCeQZgCPjn0$Kabx?T|pHMB&;E$L9HIP9=yro&W@bYwm@z^nMn3 zFykrHOV+kx@G?6)o0^U;7Za)R1RX6)Nl0#0Bpuf9Uo4{F))94?`D zLgAc9m-FNSOm*VAe|2lxQ)&ArY@jcoNGnKiC(n))39swo=leKSW{}{a>ykmtaBXN} z>EO=i`?gn?EnVs|Z5t1fNl2McazFqQF!=A9udP|4JvM~cu)v0`v52?=nysNM_|oWc zVJ@W0edPfg==5xpB?}B3?m-6|g6Mp`*O8Zm$o2^8LUqn&4TbJl9C9XELl)^NM8102fTxZGrX1EWm{}z7Xu+{vwNay9d-F2;& zcA2kGoIvn2wX#ua|7dpY<0lw`V20S6>h|qP6#fI{_&)3NncN&Ch8D1DV%YskOR`zg z$Hcp73uCC|tsak_nJtS535P9u3`3jwBCp78H~c7?_#LcAOPu;PVB+59l9{Qg<2j2; z6i3w9!U9-E!m6?DZ8A9`W;$2o({fZSy@X9nE+Z*V$RT#x!$;@4Y|x2)On5vYZRTyD znqy5cIa#;DKxfrL;ay@GN?N*p8KRjc zIdXXTErFwdb7yC4d;6=~YD&w6lKs>Ars)RZm45I{xT^H2M(J%ZgNq9x%mfm3rIBYJ8Yys6)XE(Z*@H-eJl+NuTL`VP5EiPVc zqnTcqU#o;shHtxA4LLbJ{l0g&>UCjM%DFX|Dqit)d{r&4CNnNQ!Fhc3hpoTlJkJ3r zUv`Uu5zEK3Kri_x8JCG0S-#sjx4E^UZKj$2O{r3B)*pV5aI=0@du%%PU7&hkk)tHy zi`M4wqvp%@5`#0S#9oSo=AnejW%w0P zn$=&l`kZfG%9N%Qw+e~j61{61A%KCj*DYyM%?AE4*GWxr;Sx#iwc|zXNk+P9tR7w- zg?h!z)4G^SkPbpPH*%fZd}HLrpJK2yWi)%^+WNkOAM1iZ(U-UvY5CLB0{&O|sBsa< zed%&SailqgxyK2i>f%s-{HeBB9RJ~Hi*R_p^WEX6$tC>K+xR}w4nhOvJu+~5(W*UP zGo3~JN@<*9ZGQHkA_qshJPM158!}VgfOB1Aj609ko&0ONmCkZv(f1~ETB$myiXPx2 zez1rGQ|Tk!(KAY(yM5PKhMhsrZD~LAdmc?SZQ}$mZ9(f3yscJXMJF?3CU?N`@~nCO zH{z&O!2D9x?#d?|8=IOIguDuVLi?3r`ZppV35hI5$A0UCdfVa#xtUaMF`cRl_IVghTZaKk0ZJD3IJ z_tUB<0Z4uip13u%hl{ZEx=o4}l2;bD*@&z|KQD_r-pEe}YmS4tt)Yr#{~Lg4fN>CV zM^BUYkFh2zfir@|93di01>BDWM)g&>hA_iv_$dS++4>+FC(zXPb4LxzGRpGH-km1Koo_Py#1zD}hWbnw_!NzYzc4LXz{8Ptt`o!or56#{ zL3;P0S#iit-N*59vCz5yZZPoz{to*O-1E;nnOZD^5yeqmzsGHO&4hPXh}wHK`E)I zV!)9^aK!5c6s>S_ViJdDla>~GW&lkRuxrQ+F-`}=%b`5X!2QsPY)k+fiwM8f@xFYg zvoUmJUmJ?dhT4+f<}eR)UaP2O7@o63+P(p&xZo`DB*(R@nt2&oM`p|On!9ZvSwy$l zV2(ToEZ<)<^4{1#Tx&~jJkv%`#~B~2ek$^Jxi2l`)Kj0?)H~$EzM`E)mUa<$1 d8JTw&zel-M@jm@XL}!(Nih_oGshoM>e*r_$*3$q0 diff --git a/src/main/resources/energizedpower.accesswidener b/src/main/resources/energizedpower.accesswidener index e67e63bcc..bb5ff4f34 100644 --- a/src/main/resources/energizedpower.accesswidener +++ b/src/main/resources/energizedpower.accesswidener @@ -6,10 +6,3 @@ accessible field net/minecraft/client/gui/screen/ingame/HandledScreen x accessible field net/minecraft/client/gui/screen/ingame/HandledScreen y I accessible method net/minecraft/util/thread/ThreadExecutor submitAsync (Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; - -accessible method net/minecraft/recipe/Ingredient ofEntries (Ljava/util/stream/Stream;)Lnet/minecraft/recipe/Ingredient; -accessible class net/minecraft/recipe/Ingredient$StackEntry -accessible method net/minecraft/recipe/Ingredient$StackEntry (Lnet/minecraft/item/ItemStack;)V -accessible class net/minecraft/recipe/Ingredient$TagEntry -accessible method net/minecraft/recipe/Ingredient$TagEntry (Lnet/minecraft/registry/tag/TagKey;)V -accessible class net/minecraft/recipe/Ingredient$Entry diff --git a/src/main/resources/energizedpower.mixins.json b/src/main/resources/energizedpower.mixins.json index c49b6b0b2..a2ad2a4cd 100644 --- a/src/main/resources/energizedpower.mixins.json +++ b/src/main/resources/energizedpower.mixins.json @@ -3,7 +3,9 @@ "package": "me.jddev0.ep.mixin", "compatibilityLevel": "JAVA_21", "mixins": [ + "entity.PlayerTeleporterCrashFixMixin", "recipe.RepairItemRecipeMixin", + "recipe.ServerRecipeManagerGetter", "world.village.StructurePoolElementGetterSetter" ], "injectors": { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 2fdfb390c..5639fc787 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -26,9 +26,12 @@ "client": [ "me.jddev0.ep.EnergizedPowerModClient" ], - "rei_client": [ + "rei_common": [ "me.jddev0.ep.integration.rei.EnergizedPowerREIPlugin" ], + "rei_client": [ + "me.jddev0.ep.integration.rei.EnergizedPowerREIClientPlugin" + ], "emi": [ "me.jddev0.ep.integration.emi.EnergizedPowerEMIPlugin" ] @@ -39,7 +42,7 @@ "accessWidener" : "energizedpower.accesswidener", "depends": { "fabricloader": ">=0.15.0", - "minecraft": "~1.21.1", + "minecraft": "~1.21.2", "java": ">=21", "fabric-api": "*" }, diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 6e4530916..748b7beef 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,8 +1,8 @@ { "pack": { "description": "Resources used for Energized Power", - "pack_format": 26, - "forge:resource_pack_format": 34, - "forge:data_pack_format": 48 + "pack_format": 57, + "forge:resource_pack_format": 42, + "forge:data_pack_format": 57 } }