From 683c7425cd397d2578941a27bbc4d87b94b0d12d Mon Sep 17 00:00:00 2001 From: JDDev0 Date: Wed, 22 Jan 2025 21:07:14 +0100 Subject: [PATCH] Port to NeoForge 1.21.2 --- build.gradle | 2 +- gradle.properties | 12 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../103d9f3f36b01595f1aa5172191e60eff02e6924 | 6 +- .../1223fa011db69c6a5684d9749625becd2b7dcf5e | 2 +- .../367b646695ca2710ccbfbb9897c2dcfb9afdcfc5 | 2 +- .../3e1e5709d54dcd3ab9dbf2e011902ef0386bc75d | 2 +- .../4c95eeace7516f9a6a7746b3afe7b27ab05ec396 | 2 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 2 +- .../8a7dcfa3eb300bef47256a091421b4424c186328 | 2 +- .../91d19557f37b4f1583b031349742dfe918821a56 | 2 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 946 ++--- .../b3317be5f016ede3a16657368a8ba6418b6d1bea | 2 +- .../ddb524ff5694e6b8a7add20ed906a5aa3f3d5aa8 | 2 +- .../e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 | 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 +- .../java/me/jddev0/ep/EnergizedPowerMod.java | 32 +- .../ep/block/AdvancedAutoCrafterBlock.java | 9 +- .../ep/block/AdvancedBatteryBoxBlock.java | 4 +- .../jddev0/ep/block/AdvancedChargerBlock.java | 9 +- .../jddev0/ep/block/AdvancedCrusherBlock.java | 9 +- .../block/AdvancedMinecartChargerBlock.java | 8 +- .../block/AdvancedMinecartUnchargerBlock.java | 8 +- .../ep/block/AdvancedPoweredFurnaceBlock.java | 13 +- .../ep/block/AdvancedPulverizerBlock.java | 9 +- .../ep/block/AdvancedUnchargerBlock.java | 9 +- .../me/jddev0/ep/block/AlloyFurnaceBlock.java | 8 +- .../ep/block/AssemblingMachineBlock.java | 13 +- .../me/jddev0/ep/block/AutoCrafterBlock.java | 9 +- .../ep/block/AutoPressMoldMakerBlock.java | 9 +- .../jddev0/ep/block/AutoStonecutterBlock.java | 9 +- .../me/jddev0/ep/block/BatteryBoxBlock.java | 4 +- .../me/jddev0/ep/block/BlockPlacerBlock.java | 13 +- .../java/me/jddev0/ep/block/CableBlock.java | 25 +- .../java/me/jddev0/ep/block/ChargerBlock.java | 9 +- .../jddev0/ep/block/ChargingStationBlock.java | 4 +- .../me/jddev0/ep/block/CoalEngineBlock.java | 13 +- .../me/jddev0/ep/block/CompressorBlock.java | 9 +- .../ep/block/CreativeBatteryBoxBlock.java | 4 +- .../ep/block/CreativeFluidTankBlock.java | 8 +- .../java/me/jddev0/ep/block/CrusherBlock.java | 9 +- .../ep/block/CrystalGrowthChamberBlock.java | 9 +- .../java/me/jddev0/ep/block/DrainBlock.java | 4 +- .../java/me/jddev0/ep/block/EPBlocks.java | 830 ++--- .../me/jddev0/ep/block/EnergizerBlock.java | 13 +- .../jddev0/ep/block/FiltrationPlantBlock.java | 9 +- .../me/jddev0/ep/block/FluidDrainerBlock.java | 9 +- .../me/jddev0/ep/block/FluidFillerBlock.java | 9 +- .../me/jddev0/ep/block/FluidPipeBlock.java | 65 +- .../me/jddev0/ep/block/FluidPumpBlock.java | 9 +- .../me/jddev0/ep/block/FluidTankBlock.java | 16 +- .../jddev0/ep/block/FluidTransposerBlock.java | 13 +- .../jddev0/ep/block/HeatGeneratorBlock.java | 4 +- .../ep/block/InductionSmelterBlock.java | 13 +- .../ep/block/ItemConveyorBeltLoaderBlock.java | 13 +- .../ep/block/ItemConveyorBeltMergerBlock.java | 4 +- .../ep/block/ItemConveyorBeltSorterBlock.java | 25 +- .../block/ItemConveyorBeltSplitterBlock.java | 4 +- .../ep/block/ItemConveyorBeltSwitchBlock.java | 9 +- .../ep/block/LightningGeneratorBlock.java | 13 +- .../me/jddev0/ep/block/MetalPressBlock.java | 9 +- .../jddev0/ep/block/MinecartChargerBlock.java | 8 +- .../ep/block/MinecartUnchargerBlock.java | 8 +- .../ep/block/PlantGrowthChamberBlock.java | 13 +- .../jddev0/ep/block/PoweredFurnaceBlock.java | 13 +- .../jddev0/ep/block/PressMoldMakerBlock.java | 4 +- .../me/jddev0/ep/block/PulverizerBlock.java | 9 +- .../java/me/jddev0/ep/block/SawmillBlock.java | 9 +- .../me/jddev0/ep/block/SolarPanelBlock.java | 12 +- .../jddev0/ep/block/StoneSolidifierBlock.java | 13 +- .../me/jddev0/ep/block/TeleporterBlock.java | 9 +- .../ep/block/ThermalGeneratorBlock.java | 13 +- .../jddev0/ep/block/TimeControllerBlock.java | 4 +- .../me/jddev0/ep/block/TransformerBlock.java | 4 +- .../me/jddev0/ep/block/UnchargerBlock.java | 9 +- .../ep/block/WeatherControllerBlock.java | 4 +- .../AdvancedAutoCrafterBlockEntity.java | 58 +- .../entity/AdvancedChargerBlockEntity.java | 51 +- .../entity/AdvancedCrusherBlockEntity.java | 11 +- .../AdvancedPoweredFurnaceBlockEntity.java | 63 +- .../entity/AdvancedPulverizerBlockEntity.java | 5 +- .../block/entity/AlloyFurnaceBlockEntity.java | 61 +- .../entity/AssemblingMachineBlockEntity.java | 16 +- .../block/entity/AutoCrafterBlockEntity.java | 56 +- .../entity/AutoPressMoldMakerBlockEntity.java | 6 +- .../entity/AutoStonecutterBlockEntity.java | 10 +- .../ep/block/entity/ChargerBlockEntity.java | 51 +- .../block/entity/CoalEngineBlockEntity.java | 14 +- .../block/entity/CompressorBlockEntity.java | 6 +- .../CrystalGrowthChamberBlockEntity.java | 11 +- .../ep/block/entity/EPBlockEntities.java | 304 +- .../ep/block/entity/EnergizerBlockEntity.java | 56 +- .../ep/block/entity/FluidPumpBlockEntity.java | 2 +- .../entity/FluidTransposerBlockEntity.java | 19 +- .../entity/HeatGeneratorBlockEntity.java | 7 +- .../entity/InductionSmelterBlockEntity.java | 12 +- .../block/entity/MetalPressBlockEntity.java | 14 +- .../entity/PlantGrowthChamberBlockEntity.java | 52 +- .../entity/PoweredFurnaceBlockEntity.java | 66 +- .../entity/PressMoldMakerBlockEntity.java | 26 +- .../ep/block/entity/SawmillBlockEntity.java | 6 +- .../entity/StoneSolidifierBlockEntity.java | 6 +- .../block/entity/TeleporterBlockEntity.java | 2 +- .../entity/ThermalGeneratorBlockEntity.java | 16 +- ...lectableRecipeFluidMachineBlockEntity.java | 54 +- .../SelectableRecipeMachineBlockEntity.java | 54 +- .../SimpleRecipeFluidMachineBlockEntity.java | 41 +- .../base/SimpleRecipeMachineBlockEntity.java | 54 +- .../FluidTankBlockEntityRenderer.java | 4 +- .../java/me/jddev0/ep/codec/CodecFix.java | 11 +- .../ep/component/EPDataComponentTypes.java | 6 + .../jddev0/ep/datagen/ModRecipeProvider.java | 3020 +--------------- .../advancement/ModAdvancedAdvancements.java | 16 +- .../advancement/ModBasicsAdvancements.java | 21 +- .../ep/datagen/recipe/ModRecipeGenerator.java | 3047 +++++++++++++++++ .../ep/entity/AbstractMinecartBatteryBox.java | 5 - .../me/jddev0/ep/entity/EPEntityTypes.java | 8 +- .../java/me/jddev0/ep/fluid/EPFluids.java | 20 +- .../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 | 5 +- .../integration/emi/EnergizerEMIRecipe.java | 2 +- .../emi/FiltrationPlantEMIRecipe.java | 2 +- .../emi/FluidTransposerEMIRecipe.java | 2 +- .../integration/emi/MetalPressEMIRecipe.java | 6 +- .../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 | 5 +- .../integration/jei/AlloyFurnaceCategory.java | 3 +- .../jei/AssemblingMachineCategory.java | 3 +- .../jei/AutoCrafterTransferHandler.java | 5 +- .../integration/jei/CompressorCategory.java | 3 +- .../jei/CrystalGrowthChamberCategory.java | 3 +- .../jei/EnergizedPowerJEIPlugin.java | 3 +- .../integration/jei/MetalPressCategory.java | 3 +- ...electableRecipeMachineTransferHandler.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 | 232 ++ .../rei/EnergizedPowerREIPlugin.java | 278 +- .../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 | 5 +- .../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 | 5 +- .../rei/StoneSolidifierDisplay.java | 43 +- .../item/AdvancedBatteryBoxMinecartItem.java | 8 +- .../ep/item/BatteryBoxMinecartItem.java | 8 +- .../java/me/jddev0/ep/item/BatteryItem.java | 4 +- .../java/me/jddev0/ep/item/CutterItem.java | 20 +- src/main/java/me/jddev0/ep/item/EPItems.java | 530 ++- .../ep/item/EnergizedPowerBookItem.java | 7 +- .../me/jddev0/ep/item/EnergyAnalyzerItem.java | 4 +- .../me/jddev0/ep/item/FluidAnalyzerItem.java | 4 +- .../java/me/jddev0/ep/item/HammerItem.java | 16 +- .../jddev0/ep/item/InventoryChargerItem.java | 8 +- .../ep/item/InventoryCoalEngineItem.java | 14 +- .../ep/item/InventoryTeleporterItem.java | 8 +- .../jddev0/ep/item/TeleporterMatrixItem.java | 11 +- .../java/me/jddev0/ep/item/WrenchItem.java | 7 +- .../EnergizedPowerBookReloadListener.java | 21 +- .../entity/PlayerTeleporterCrashFixMixin.java | 18 + .../mixin/recipe/RepairItemRecipeMixin.java | 18 + .../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 | 8 +- .../SyncFurnaceRecipeTypeS2CPacket.java | 68 - .../packet/SyncIngredientsS2CPacket.java | 71 + ...SyncPressMoldMakerRecipeListS2CPacket.java | 7 +- .../packet/UseTeleporterC2SPacket.java | 1 - .../ep/paintings/EPPaintingVariants.java | 7 +- .../jddev0/ep/recipe/AlloyFurnaceRecipe.java | 48 +- .../ep/recipe/AssemblingMachineRecipe.java | 46 +- .../me/jddev0/ep/recipe/ChargerRecipe.java | 43 +- .../me/jddev0/ep/recipe/CompressorRecipe.java | 68 +- .../me/jddev0/ep/recipe/CrusherRecipe.java | 43 +- .../ep/recipe/CrystalGrowthChamberRecipe.java | 65 +- .../java/me/jddev0/ep/recipe/EPRecipes.java | 29 +- .../ep/recipe/EnergizedPowerBaseRecipe.java | 16 + .../me/jddev0/ep/recipe/EnergizerRecipe.java | 41 +- .../ep/recipe/FiltrationPlantRecipe.java | 46 +- .../ep/recipe/FluidTransposerRecipe.java | 43 +- .../recipe/FurnaceRecipeTypePacketUpdate.java | 11 - .../jddev0/ep/recipe/HeatGeneratorRecipe.java | 41 +- .../ep/recipe/IngredientPacketUpdate.java | 12 + .../jddev0/ep/recipe/IngredientWithCount.java | 49 +- .../me/jddev0/ep/recipe/MetalPressRecipe.java | 68 +- .../OutputItemStackWithPercentages.java | 2 +- .../PlantGrowthChamberFertilizerRecipe.java | 41 +- .../ep/recipe/PlantGrowthChamberRecipe.java | 46 +- .../ep/recipe/PressMoldMakerRecipe.java | 44 +- .../me/jddev0/ep/recipe/PulverizerRecipe.java | 46 +- .../me/jddev0/ep/recipe/SawmillRecipe.java | 47 +- .../ep/recipe/StoneSolidifierRecipe.java | 44 +- .../TeleporterMatrixSettingsCopyRecipe.java | 26 +- .../ep/recipe/ThermalGeneratorRecipe.java | 46 +- .../ep/registry/tags/CommonBlockTags.java | 1 - .../tags/EnergizedPowerBiomeTags.java | 1 - .../registry/tags/EnergizedPowerItemTags.java | 1 - .../ep/screen/AdvancedAutoCrafterScreen.java | 12 +- .../jddev0/ep/screen/AdvancedChargerMenu.java | 4 +- .../ep/screen/AdvancedChargerScreen.java | 1 - .../ep/screen/AdvancedCrusherScreen.java | 6 +- .../screen/AdvancedPoweredFurnaceScreen.java | 4 +- .../ep/screen/AdvancedPulverizerScreen.java | 6 +- .../ep/screen/AdvancedUnchargerScreen.java | 1 - .../jddev0/ep/screen/AlloyFurnaceScreen.java | 11 +- .../ep/screen/AssemblingMachineScreen.java | 3 +- .../jddev0/ep/screen/AutoCrafterScreen.java | 10 +- .../ep/screen/AutoPressMoldMakerScreen.java | 6 +- .../ep/screen/AutoStonecutterScreen.java | 9 +- .../jddev0/ep/screen/BlockPlacerScreen.java | 4 +- .../me/jddev0/ep/screen/ChargerScreen.java | 2 - .../ep/screen/ChargingStationScreen.java | 1 - .../me/jddev0/ep/screen/CoalEngineScreen.java | 4 +- .../me/jddev0/ep/screen/CompressorScreen.java | 4 +- .../ep/screen/CreativeBatteryBoxScreen.java | 10 +- .../ep/screen/CreativeFluidTankScreen.java | 8 +- .../me/jddev0/ep/screen/CrusherScreen.java | 4 +- .../ep/screen/CrystalGrowthChamberScreen.java | 4 +- .../java/me/jddev0/ep/screen/DrainScreen.java | 8 +- .../ep/screen/EnergizedPowerBookScreen.java | 16 +- .../me/jddev0/ep/screen/EnergizerScreen.java | 6 +- .../ep/screen/FiltrationPlantScreen.java | 7 +- .../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 | 13 +- .../ep/screen/FluidTransposerScreen.java | 14 +- .../jddev0/ep/screen/HeatGeneratorScreen.java | 1 - .../ep/screen/InductionSmelterScreen.java | 4 +- .../ep/screen/InventoryChargerScreen.java | 7 +- .../ep/screen/InventoryTeleporterScreen.java | 6 +- .../screen/ItemConveyorBeltLoaderScreen.java | 6 +- .../screen/ItemConveyorBeltSorterScreen.java | 13 +- .../me/jddev0/ep/screen/MetalPressScreen.java | 4 +- .../ep/screen/PlantGrowthChamberScreen.java | 4 +- .../ep/screen/PoweredFurnaceScreen.java | 4 +- .../ep/screen/PressMoldMakerScreen.java | 21 +- .../me/jddev0/ep/screen/PulverizerScreen.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 | 45 +- .../base/EnergyStorageContainerScreen.java | 15 +- ...electableRecipeMachineContainerScreen.java | 9 +- ...pgradableEnergyStorageContainerScreen.java | 9 +- .../java/me/jddev0/ep/util/RecipeUtils.java | 59 +- .../me/jddev0/ep/world/ModBiomeModifiers.java | 1 - .../me/jddev0/ep/world/ModPlacedFeatures.java | 1 - .../me/jddev0/ep/world/ModStructureSets.java | 1 - .../me/jddev0/ep/world/ModStructures.java | 1 - .../ep/world/village/VillageAddition.java | 4 +- .../resources/META-INF/accesstransformer.cfg | 4 +- .../resources/META-INF/neoforge.mods.toml | 4 + .../gui/book_icons/redstone_mode_high.png | Bin 7471 -> 7642 bytes .../configuration_buttons.png | Bin 15111 -> 15124 bytes src/main/resources/energizedpower.mixins.json | 12 + 797 files changed, 9611 insertions(+), 10059 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/RepairItemRecipeMixin.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 create mode 100644 src/main/resources/energizedpower.mixins.json diff --git a/build.gradle b/build.gradle index c75798e23..82e4d053b 100644 --- a/build.gradle +++ b/build.gradle @@ -145,7 +145,7 @@ dependencies { // REI integration compileOnly 'me.shedaniel.cloth:basic-math:0.6.1' compileOnly "dev.architectury:architectury-neoforge:13.0.6" - compileOnly 'me.shedaniel:RoughlyEnoughItems-neoforge:16.0.783' + compileOnly 'me.shedaniel:RoughlyEnoughItems-neoforge:17.0.794' compileOnly "me.shedaniel:REIPluginCompatibilities-forge-annotations:12.+" // JEI integration diff --git a/gradle.properties b/gradle.properties index 9e7c486a8..451c1d26b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,20 +4,20 @@ org.gradle.jvmargs=-Xmx4G org.gradle.daemon=false org.gradle.debug=false -minecraft_version=1.21.1 -minecraft_version_range=[1.21.1,1.22) +minecraft_version=1.21.2 +minecraft_version_range=[1.21.2,1.22) -neo_version=21.1.72 -neo_version_range=[21.1,) +neo_version=21.2.1-beta +neo_version_range=[21.2,) loader_version_range=[1,) mapping_channel=official -mapping_version=1.21.1 +mapping_version=1.21.2 mod_id=energizedpower mod_name=Energized Power mod_license=MIT -mod_version=1.21.1-2.12.4-neoforge +mod_version=1.21.2-2.12.4-neoforge mod_group_id=me.jddev0.energizedpower mod_authors=JDDev0 mod_description=This is a technology mod with many machines. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0d1842103..e1adfb493 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ 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 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 index 5649974ba..21718b664 100644 --- a/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 +++ b/src/generated/resources/.cache/103d9f3f36b01595f1aa5172191e60eff02e6924 @@ -1,7 +1,7 @@ -// 1.21.1 2024-09-08T16:57:23.017503962 Registries +// 1.21.2 2025-01-22T20:37:01.289122582 Registries ce4e9b1d8ecb10afaa37089c10db4f812bc13bb6 data/energizedpower/neoforge/biome_modifier/add_tin_ore.json -315171f8b72c2c383c6e8644ee24528e46a14d3e data/energizedpower/painting_variant/factory.json -5ad2dc86a2177ff5f25a527336dc78b3dd2dc062 data/energizedpower/painting_variant/gear.json +74c397de30bc0f8c1484a85450c0b2099ec60072 data/energizedpower/painting_variant/factory.json +40ec13debc1998414c281ce78ac0bd6ea9245328 data/energizedpower/painting_variant/gear.json aaa78c8c33a9aa7cd3386b065f9ab80bd1db1ad4 data/energizedpower/worldgen/configured_feature/tin_ore.json 316a8070a2e8dec6a6b08dfd04b23753c416ee12 data/energizedpower/worldgen/placed_feature/tin_ore.json 7ccd724e560b63f6b4858380f484c3c84b2dd1c0 data/energizedpower/worldgen/structure/factory_1.json diff --git a/src/generated/resources/.cache/1223fa011db69c6a5684d9749625becd2b7dcf5e b/src/generated/resources/.cache/1223fa011db69c6a5684d9749625becd2b7dcf5e index 40fa658e4..66241d9dc 100644 --- a/src/generated/resources/.cache/1223fa011db69c6a5684d9749625becd2b7dcf5e +++ b/src/generated/resources/.cache/1223fa011db69c6a5684d9749625becd2b7dcf5e @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-08T15:51:55.624644024 Tags for minecraft:block mod id energizedpower +// 1.21.2 2025-01-22T20:37:01.288997158 Tags for minecraft:block mod id energizedpower bb4186a3e465b9f0dc55195ffc40227269df8852 data/c/tags/block/ores.json d56528e409960f498e933e25a7b732eabb64284b data/c/tags/block/ores/tin.json 3dd65c930d78a891766bed591b7962b592077cab data/c/tags/block/ores_in_ground/deepslate.json diff --git a/src/generated/resources/.cache/367b646695ca2710ccbfbb9897c2dcfb9afdcfc5 b/src/generated/resources/.cache/367b646695ca2710ccbfbb9897c2dcfb9afdcfc5 index eba5b0fe7..1675dd6f0 100644 --- a/src/generated/resources/.cache/367b646695ca2710ccbfbb9897c2dcfb9afdcfc5 +++ b/src/generated/resources/.cache/367b646695ca2710ccbfbb9897c2dcfb9afdcfc5 @@ -1,2 +1,2 @@ -// 1.21.1 2024-09-08T15:51:55.62382308 Tags for minecraft:painting_variant mod id energizedpower +// 1.21.2 2025-01-22T20:37:01.288567797 Tags for minecraft:painting_variant mod id energizedpower a8a6daa4902968eb7bd6579259038438741c926a data/minecraft/tags/painting_variant/placeable.json diff --git a/src/generated/resources/.cache/3e1e5709d54dcd3ab9dbf2e011902ef0386bc75d b/src/generated/resources/.cache/3e1e5709d54dcd3ab9dbf2e011902ef0386bc75d index e6f09a488..8f5307325 100644 --- a/src/generated/resources/.cache/3e1e5709d54dcd3ab9dbf2e011902ef0386bc75d +++ b/src/generated/resources/.cache/3e1e5709d54dcd3ab9dbf2e011902ef0386bc75d @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-08T15:51:55.629260944 Tags for minecraft:item mod id energizedpower +// 1.21.2 2025-01-22T20:37:01.292479516 Tags for minecraft:item mod id energizedpower ca50903bad41dbf491c67e1c966acd59bc408678 data/ae2/tags/item/p2p_attunements/fe_p2p_tunnel.json ed0b5d400f2c1eb56c26e5760a213939424d76e0 data/ae2/tags/item/p2p_attunements/fluid_p2p_tunnel.json a3b043bbc9b66a73638bd55f045f037a8d3cb8a0 data/ae2/tags/item/p2p_attunements/item_p2p_tunnel.json diff --git a/src/generated/resources/.cache/4c95eeace7516f9a6a7746b3afe7b27ab05ec396 b/src/generated/resources/.cache/4c95eeace7516f9a6a7746b3afe7b27ab05ec396 index 3544d6b8d..4b2639e7c 100644 --- a/src/generated/resources/.cache/4c95eeace7516f9a6a7746b3afe7b27ab05ec396 +++ b/src/generated/resources/.cache/4c95eeace7516f9a6a7746b3afe7b27ab05ec396 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-14T19:31:14.272402513 Block States: energizedpower +// 1.21.2 2025-01-22T20:37:01.291600334 Block States: energizedpower 17d8a7f18babcbfd9d78be66322d8351cea4f8c8 assets/energizedpower/blockstates/advanced_auto_crafter.json 431bbedc3e5848b5d3478d29a91aedb2cf90ff2d assets/energizedpower/blockstates/advanced_battery_box.json da3d4a1adaa4fdc26c79956846ca7699770326cd assets/energizedpower/blockstates/advanced_charger.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index 58c0dec93..028b6729c 100644 --- a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-08T15:51:55.623996095 Loot Tables +// 1.21.2 2025-01-22T20:37:01.288647657 Loot Tables d24af79b3c818677ed03734065b7990c9bc3f82d data/energizedpower/loot_table/blocks/advanced_auto_crafter.json 6602eac862b1f1ef2f9c6f75a0f0f9dabf7e6871 data/energizedpower/loot_table/blocks/advanced_battery_box.json d38f5e962e7380883f3915f2c1a171a33c454779 data/energizedpower/loot_table/blocks/advanced_charger.json diff --git a/src/generated/resources/.cache/8a7dcfa3eb300bef47256a091421b4424c186328 b/src/generated/resources/.cache/8a7dcfa3eb300bef47256a091421b4424c186328 index f4be9ba2f..c0d29ce2c 100644 --- a/src/generated/resources/.cache/8a7dcfa3eb300bef47256a091421b4424c186328 +++ b/src/generated/resources/.cache/8a7dcfa3eb300bef47256a091421b4424c186328 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-09T20:29:24.316929764 Book Pages: energizedpower +// 1.21.2 2025-01-22T20:37:01.291247305 Book Pages: energizedpower 5116d3329e38534c04337b5d05c72b943073735b assets/energizedpower/book_pages/chapters/0000_welcome/0000_welcome.json 88d2425273678ad455b8f711866ed3c16aa2ff47 assets/energizedpower/book_pages/chapters/0000_welcome/0010_credits.json ade5edc63375a9b26a530e90158f43693e9bc1f1 assets/energizedpower/book_pages/chapters/0000_welcome/0020_table_of_contents.json diff --git a/src/generated/resources/.cache/91d19557f37b4f1583b031349742dfe918821a56 b/src/generated/resources/.cache/91d19557f37b4f1583b031349742dfe918821a56 index 7856d1cb6..c180608f4 100644 --- a/src/generated/resources/.cache/91d19557f37b4f1583b031349742dfe918821a56 +++ b/src/generated/resources/.cache/91d19557f37b4f1583b031349742dfe918821a56 @@ -1,3 +1,3 @@ -// 1.21.1 2024-09-08T15:51:55.622186082 Tags for minecraft:worldgen/biome mod id energizedpower +// 1.21.2 2025-01-22T20:37:01.287453144 Tags for minecraft:worldgen/biome mod id energizedpower 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/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 8afc028f2..440c5801e 100644 --- a/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/generated/resources/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-14T19:20:48.439700997 Recipes +// 1.21.2 2025-01-22T20:37:01.289185213 Recipes ab1fc404da0248b87b7e6a6ac62991a502bda031 data/energizedpower/advancement/recipes/blasting/copper_ingot_from_blasting_copper_dust.json 6bee64f8da51658d20e7d25fbc669faf8f4ecfd5 data/energizedpower/advancement/recipes/blasting/gold_ingot_from_blasting_gold_dust.json 77c7d4e9799036ee93c2d2e8b79f01577e29f3cf data/energizedpower/advancement/recipes/blasting/gold_nugget_from_blasting_golden_hammer.json @@ -199,475 +199,477 @@ ff9f47c0f998015fa99bf4c4357576fe20a9ec1d data/energizedpower/advancement/recipes f22bd242f06ca3d67b53bd2fc83caaff7a078e7f data/energizedpower/advancement/recipes/smelting/tin_ingot_from_smelting_tin_ores.json 0988604d58cdaf14a564099092159435e26bc871 data/energizedpower/advancement/recipes/smelting/wire_press_mold.json 36d994842cd0e3bbfa8f7bf01bf24818cd104e70 data/energizedpower/advancement/recipes/smithing/netherite_hammer.json -abd563617b551e90dc94b2834bfaed951db6cd4c data/energizedpower/recipe/alloy_furnace/advanced_alloy_ingot.json -48161cf4ac61d432e6da2ee9bec867f2a9f130d7 data/energizedpower/recipe/alloy_furnace/redstone_alloy_ingot.json -42dc57c2e7956358ca99b72526944a5c60024728 data/energizedpower/recipe/alloy_furnace/steel_ingot.json -bccf1dcbeba02c0156413c8c2138d9d51a36a8be data/energizedpower/recipe/assembling/advanced_circuit.json -2e8da40d6232f811375c44f7cbef5112899c3b55 data/energizedpower/recipe/assembling/advanced_solar_cell.json -d72dc627b1269cf70882bac44c041b70eb415744 data/energizedpower/recipe/assembling/crystal_matrix.json -ad8ad650dda7fb7a155d533e5a69b8937bc31ebc data/energizedpower/recipe/assembling/processing_unit.json -0ef3970e4370683d1dba881eac1ff264f0da2a4f data/energizedpower/recipe/assembling/reinforced_advanced_solar_cell.json -5ba028ed73339b79ff5794f94c68bc32e7b39f09 data/energizedpower/recipe/assembling/teleporter_processing_unit.json -28a88e6e2e6ccac3655f44f0698337e943967693 data/energizedpower/recipe/blasting/copper_ingot_from_blasting_copper_dust.json -a1bbaea3f268fce6fd3db9200af9c8acca2a0db3 data/energizedpower/recipe/blasting/gold_ingot_from_blasting_gold_dust.json -046b8b63cfb17de0c54db771968367499830e11f data/energizedpower/recipe/blasting/gold_nugget_from_blasting_golden_hammer.json -b9dfd48b52bef6d1521eb3724c5e25bae34e3d9a data/energizedpower/recipe/blasting/iron_ingot_from_blasting_iron_dust.json -2a73da9d7580f36c8ba1d0b339c77284a24d25a4 data/energizedpower/recipe/blasting/iron_nugget_from_blasting_iron_hammer.json -2ba7e4df1f18b28e0fcaf123ed3d8f683111c085 data/energizedpower/recipe/blasting/silicon_from_blasting_nether_quartz.json -09fa2348bdc14abe279d8e41a53e91dd226db876 data/energizedpower/recipe/blasting/tin_ingot_from_blasting_raw_tin.json -4796c98d63593fdacccd4787d54d5f0c44564489 data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_dust.json -4b42b509cba82b10b76a4b6ea9eb2c0d070c0177 data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_ores.json -f264792af9b7f68e1060f40ff5faf3d4ab12d97f data/energizedpower/recipe/charger/energized_copper_ingot.json -f008183ee300c7f4f9ba49f529fee2f85524cccc data/energizedpower/recipe/compressing/advanced_alloy_plate_from_compressing_advanced_alloy_ingot.json -096931906ed0792e47aaad055f15e3db8d16e092 data/energizedpower/recipe/compressing/cobblestone_from_compressing_stone_pebbles.json -a843ee7b88af0278a45f31a3a31256f3400c1ef8 data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_block.json -481536ecb182d35f033bf3e9a8f9642152bfc6c8 data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_ingot.json -93d871b6cf1bacc5d105992b56ebf2970d296fd9 data/energizedpower/recipe/compressing/energized_copper_plate_from_compressing_energized_copper_ingot.json -2b143b11af54685a2d77c662ed2a7f3cae8e33c7 data/energizedpower/recipe/compressing/energized_gold_plate_from_compressing_energized_gold_ingot.json -819dc6100ecd39b294e1ede9b176c414cc62df55 data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_block.json -db51daedd09e28208fd8249697ce62fadf23e0c3 data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_ingot.json -31ef4ae3588b1d0215f1dfbcb97d580202e4d7e1 data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_block.json -81762e4f8f3a3f078bc448caeb8e2ae6f890f302 data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_ingot.json -de060d65be78620b957f732d4593d09318799677 data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_block.json -2d402a3c786bd8e1d7e1222f9c6cc3c720c86bf0 data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_ingot.json -4768303447c8d7146da1f5e8a86d36aa7e05d8bb data/energizedpower/recipe/crafting/advanced_auto_crafter.json -3b90705b19fc6426be4853624bd2ad3ee3afe70b data/energizedpower/recipe/crafting/advanced_battery_box.json -2a02f6edb79353f42567ed83e5f8da19a843f126 data/energizedpower/recipe/crafting/advanced_battery_box_minecart.json -37a884da55794e172b84b2c1768dbebc9c342681 data/energizedpower/recipe/crafting/advanced_charger.json -a02ff88ab0b9ae45a6cfcced15dcc9cfb4a72f9f data/energizedpower/recipe/crafting/advanced_crusher.json -50d614cb35ec9a0c1028cdfe2587fd41b199314a data/energizedpower/recipe/crafting/advanced_fertilizer.json -c3f288799b66bdb0b6b297f0d0a73e97851d4ec5 data/energizedpower/recipe/crafting/advanced_machine_frame.json -639cc08e6917ac05b4fc27799ae6b2c3ce3e1f4d data/energizedpower/recipe/crafting/advanced_minecart_charger.json -8a8247621af724f7050e96f6d8f239cade3187d9 data/energizedpower/recipe/crafting/advanced_minecart_uncharger.json -51284cff3cad43d6dc30589a7f1bf6a15bbd09c6 data/energizedpower/recipe/crafting/advanced_powered_furnace.json -1bbaf7e958c23993456b2a4a3a63d481a0208e7f data/energizedpower/recipe/crafting/advanced_pulverizer.json -4e6b390345e010610d217f766eb1da8c8838f1d1 data/energizedpower/recipe/crafting/advanced_uncharger.json -d2672491e72823f2ba8c4543d630dda1ecbe701d data/energizedpower/recipe/crafting/advanced_upgrade_module.json -aaeebc4c2c3f92ace1ec562f65b3ab8d793b7107 data/energizedpower/recipe/crafting/alloy_furnace.json -af487fd510312f3f192fa8cc181e0f6b274fcb5f data/energizedpower/recipe/crafting/assembling_machine.json -b4c22472f371cf97107fc8f49f28a7e903461a92 data/energizedpower/recipe/crafting/auto_crafter.json -6de6a0a0c9d54c24ce4a7a1cb14d8f31f3153db4 data/energizedpower/recipe/crafting/auto_press_mold_maker.json -9a915e817c0cf7562d6a7c9e72f256da00dfa65a data/energizedpower/recipe/crafting/auto_stonecutter.json -b4100448ed37be3037f6bed00d1287ff28795178 data/energizedpower/recipe/crafting/basic_circuit.json -9249d3db137cbb7a10ef307864705c86c01ae0b5 data/energizedpower/recipe/crafting/basic_fertilizer.json -ceda55256b11d194d7aa817ef48cc3a021dbe40f data/energizedpower/recipe/crafting/basic_machine_frame.json -1ab420f276372a907834b40dbec74ae2de3f72c7 data/energizedpower/recipe/crafting/basic_solar_cell.json -ed664c06534b9032982ae9dfa8e2c9f101e5a1ec data/energizedpower/recipe/crafting/basic_upgrade_module.json -187766cfccf0b1830773804083b55e4500023d0b data/energizedpower/recipe/crafting/battery_1.json -62e88e785f865a1b63fe374ed6a1d5a315322673 data/energizedpower/recipe/crafting/battery_2.json -ca13e47fbcb62001e182ed827a7d1a47aa8a6a52 data/energizedpower/recipe/crafting/battery_3.json -7c146ed5a7ecf3a8f52c2dd5c51a0ca00c0a0b23 data/energizedpower/recipe/crafting/battery_4.json -ab7fa58b8daaf087db941fb79e54925b35ad1673 data/energizedpower/recipe/crafting/battery_5.json -41709861426b2e25a4102b65f301f6754fba27bd data/energizedpower/recipe/crafting/battery_6.json -8333d1afcfc9d83244763292bdab9f687ee32ea8 data/energizedpower/recipe/crafting/battery_7.json -91994425895b3495334c1082f37bd2c17da3d9dc data/energizedpower/recipe/crafting/battery_8.json -d8941d2d4b64aeea1ace533ea3cca37973812406 data/energizedpower/recipe/crafting/battery_box.json -b2109cec6475b0e196b9f98f9a39d9e61f7ca3e7 data/energizedpower/recipe/crafting/battery_box_minecart.json -40192b63d2fbcb27087cee8740ededbf9d8b75ee data/energizedpower/recipe/crafting/blast_furnace_upgrade_module.json -1546a057236b6323b889841797c627bc2211a850 data/energizedpower/recipe/crafting/block_placer.json -e1ac5f3248c72d5ab2150c7d3daf8c22a12092f5 data/energizedpower/recipe/crafting/charcoal_filter.json -3d93b8aa19430d7f43ce857f9e9c79b643977a1d data/energizedpower/recipe/crafting/charger.json -fc059a2c6d59be77f6fb47e3cc6b2d0ebfa44b39 data/energizedpower/recipe/crafting/charging_station.json -896b52e30163e2c5a280bf5962ec2e213898e447 data/energizedpower/recipe/crafting/coal_engine.json -8b9f69ba8e3c18ae43876073097187dec46418d7 data/energizedpower/recipe/crafting/compressor.json -045c17f5cae4253bc0b4fb8ddf2ac401bb658b7e data/energizedpower/recipe/crafting/copper_cable.json -1ac7afc660311255cf7feffb8a500b9743915945 data/energizedpower/recipe/crafting/copper_cable_using_wire.json -b927c4f3c591a572b2b1547c0a4fd6429cb860f4 data/energizedpower/recipe/crafting/copper_plate.json -518e03be7c0a6ce5954ea312da0cfebd66a1c715 data/energizedpower/recipe/crafting/copper_wire.json -7ac0aba0c9e6b77b9fe2a61b687003d00470a8bb data/energizedpower/recipe/crafting/crusher.json -8d06a521bfb190f42729cf3e56de882abfb88651 data/energizedpower/recipe/crafting/crystal_growth_chamber.json -b35b227b08dbd496ef3d5b0ffe5552ee481079bc data/energizedpower/recipe/crafting/cutter.json -81dbc9f5e21cf47807ef0720a7b3b85f31d8e9ef data/energizedpower/recipe/crafting/diamond_hammer.json -38726e4d0a79c23289dead5b7a72daf81da50186 data/energizedpower/recipe/crafting/drain.json -f4daf2eda81e196ef922ff2d457ab1b8f4cc060c data/energizedpower/recipe/crafting/duration_upgrade_module_1.json -94cbfd3ba023abcb1739a89cf9b6f5fa4f794b07 data/energizedpower/recipe/crafting/duration_upgrade_module_2.json -0f191d17abd5416cd4c5a76d7600bd266204e837 data/energizedpower/recipe/crafting/duration_upgrade_module_3.json -4ef95f58bcf9f496626ee84bdbd0a842189b3708 data/energizedpower/recipe/crafting/duration_upgrade_module_4.json -bda61a790f1196bab44c6232a79b8958fc9275d0 data/energizedpower/recipe/crafting/duration_upgrade_module_5.json -d149152e11a5ce85925e2545178cda0e2b58f3d5 data/energizedpower/recipe/crafting/duration_upgrade_module_6.json -e92e49d62ff300df9589702cf30f02cc0eecb220 data/energizedpower/recipe/crafting/ehv_transformer_1_to_n.json -80ef22df8feda65eedfba70aed67974d80e6e17a data/energizedpower/recipe/crafting/ehv_transformer_3_to_3.json -d1eae3fb497dea1382aceccf3113dd11581be61a data/energizedpower/recipe/crafting/ehv_transformer_n_to_1.json -078576af46b6ca754384acf3bcd1692a407f2361 data/energizedpower/recipe/crafting/energized_copper_cable.json -23e658fd02ba018a2743ff83331c970e8a664222 data/energizedpower/recipe/crafting/energized_copper_cable_using_wire.json -5388c8eecf70bd37dd9da1d04ecaf871b85b0da9 data/energizedpower/recipe/crafting/energized_crystal_matrix_cable.json -c35c7eb366fb50852af7b2e41bff5777e217786a data/energizedpower/recipe/crafting/energized_gold_cable.json -7f07564486fdbc7cf08f1c0795a319c76858dc03 data/energizedpower/recipe/crafting/energized_gold_cable_using_wire.json -f00f46fbd6decf220002b90e6311d9510f1b4834 data/energizedpower/recipe/crafting/energized_power_book.json -5b0e2f73e9dd4273626642b52fc20caea49c1e98 data/energizedpower/recipe/crafting/energizer.json -d701246b1eca601111a871527551021e674f4ed1 data/energizedpower/recipe/crafting/energy_analyzer.json -cd9c9e83c1e102d3e1025311878b29649748ebff data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_1.json -0afb05abb0a3f30929f89b1deaf51fd67f83ced5 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_2.json -96170b708e3ed9f0c7bb765ce3e370b4f423ad91 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_3.json -e520f68fa604473b7b2f42a9db069b6fb5fd659e data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_4.json -10fea87f35260768fd6e894e3da42a7861144516 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_5.json -b8556b74f0432ee8a41af901c2f89a695cb0aad2 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_1.json -5833e18bfb8057a7e8cfe9e2d384c43d08e217ae data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_2.json -3686693274b73d70aea1734fe737803a74764fcb data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_3.json -f62e92729e75f92ebc56557263f9e119a2450209 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_4.json -13c21d48cc923d3397782b701bd760ad90c3a62c data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_5.json -066187013ab4b77ab15ea61bd0504f1a3e3df118 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_1.json -b78c2f635fb9d7e6d8d037b22b8ade93c07c6695 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_2.json -b895ccd9c1729ad2e693196bd551e4baac8089af data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_3.json -4eeffcbf067ad1f1223aab9f8ddf275a8b11232f data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_4.json -9dc3b363d9910a8072a952550cbf108fe5b9f1e7 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_5.json -465999d48e66ed07b9161b168a603ee0c4123f4e data/energizedpower/recipe/crafting/filtration_plant.json -eeb10f14a7f57c95ca98c6741761f9625c9025a7 data/energizedpower/recipe/crafting/fluid_analyzer.json -89f4feedb553a65f1821abe6c4ac6742c1d630bb data/energizedpower/recipe/crafting/fluid_drainer.json -7e0e07c9c9f030f979125bd812f6f27f705f7ed6 data/energizedpower/recipe/crafting/fluid_filler.json -2ece42d44e1c3b9e9a574cb14d92e5a92082cdcb data/energizedpower/recipe/crafting/fluid_pump.json -764d6e56dd0a91133f6e078e3b05a1af5f72044e data/energizedpower/recipe/crafting/fluid_tank_large.json -20094ba200889a37ded87692a04dffe56fd62cd2 data/energizedpower/recipe/crafting/fluid_tank_medium.json -75166e4e9e80504fb03c6c62d130240ed6783c0d data/energizedpower/recipe/crafting/fluid_tank_small.json -8b8bbca97f499888d35247f5727add0ff4b1ddd5 data/energizedpower/recipe/crafting/fluid_transposer.json -38079d57354d7e3a9daeb73a5680ae1b6713dd79 data/energizedpower/recipe/crafting/gold_cable.json -eb4cf0991b527591c6a8b18cbd22d2c364fa60e8 data/energizedpower/recipe/crafting/gold_cable_using_wire.json -b29f1e94e2cd791a6871f8e41cb20d7395b512a2 data/energizedpower/recipe/crafting/gold_plate.json -dec144bc1c682640cfdabb225cd4d7febffd8b12 data/energizedpower/recipe/crafting/gold_wire.json -f66f9bd5955b9bb0f9879fccd40a009af0af3b02 data/energizedpower/recipe/crafting/golden_fluid_pipe.json -137ee7e337b941b2ebbf1ce935e5c3443d31b7ac data/energizedpower/recipe/crafting/golden_hammer.json -d767b7c1901917472e52609f30b2e04bb70c67e2 data/energizedpower/recipe/crafting/good_fertilizer.json -392d2b0c3bf254d1d69f0cf5fd9912d6b1594728 data/energizedpower/recipe/crafting/hardened_machine_frame.json -b537edb8b9e3cd3ef3f77dedbf6f50f6a51002e5 data/energizedpower/recipe/crafting/heat_generator.json -c2f34c084940c54d60d3efefc1fab84701c36dff data/energizedpower/recipe/crafting/hv_transformer_1_to_n.json -78c2c1b2c15404a62fbc5ca60fbd8b8cd8058d3e data/energizedpower/recipe/crafting/hv_transformer_3_to_3.json -06f138111f9f20f12af65a67420df1d9bf98f484 data/energizedpower/recipe/crafting/hv_transformer_n_to_1.json -9ddbefea7f818716fb6b9f4b5ebb81ee4cf9d6c9 data/energizedpower/recipe/crafting/induction_smelter.json -0d57ad232295747246df3c5305051b97040f0629 data/energizedpower/recipe/crafting/inventory_charger.json -ab0cfc23c76f48f58be293a386c16bfd132b772f data/energizedpower/recipe/crafting/inventory_coal_engine.json -cc5e497dd35375889a95e99e351d906ccaf323fe data/energizedpower/recipe/crafting/inventory_teleporter.json -23312966bf0a296a35613a220fff6cb5d4126dbd data/energizedpower/recipe/crafting/iron_fluid_pipe.json -552f60123b9f2964c62fa19d3bb43bb4801e4710 data/energizedpower/recipe/crafting/iron_hammer.json -c61e838f151d4958c03275737a184537e3474644 data/energizedpower/recipe/crafting/iron_plate.json -15bd08ac8f2e94307bf8227f133b0a72845e86d4 data/energizedpower/recipe/crafting/item_conveyor_belt_from_dried_kelp.json -0f649addbca124519bb5b96d7d23abbed02e72ee data/energizedpower/recipe/crafting/item_conveyor_belt_from_leather.json -dbd1693bfaaaac25a4d7759a835fd9f7a18dd368 data/energizedpower/recipe/crafting/item_conveyor_belt_loader.json -f5754173030a1465af4c10ed9ef442565e3aa45a data/energizedpower/recipe/crafting/item_conveyor_belt_merger.json -6582e922fb967bdb2ac38be0fb65be09829acb54 data/energizedpower/recipe/crafting/item_conveyor_belt_sorter.json -9e3bdacf44d42e00f476cc5fba69ffe3b7ac3ab6 data/energizedpower/recipe/crafting/item_conveyor_belt_splitter.json -ebaf19ec0b3181407089c2ad8ffd3d03684c1c28 data/energizedpower/recipe/crafting/item_conveyor_belt_switch.json -5896df2aa1d0b7a35e4e48a9d6a821635fc4479e data/energizedpower/recipe/crafting/lightning_generator.json -4fd7398da2774c1424e1defe30ee645562e335b2 data/energizedpower/recipe/crafting/lv_transformer_1_to_n.json -d4c1af386945f85bd86945d990c701ba5257a5ac data/energizedpower/recipe/crafting/lv_transformer_3_to_3.json -8e0bf46290c4bfb24d0a6f00efea9fc1fcc1d4e4 data/energizedpower/recipe/crafting/lv_transformer_n_to_1.json -cfc501b58b9b5ea790afa7be837b660123002287 data/energizedpower/recipe/crafting/metal_press.json -9a2c680370e88a32cf9372804994e2ee5d29d41f data/energizedpower/recipe/crafting/minecart_charger.json -e41c4d86e0e90d814891f5b702b3c0b0f2cb76be data/energizedpower/recipe/crafting/minecart_uncharger.json -da13fc23e4328f6d70bd08013d4ac92c4a53e8f5 data/energizedpower/recipe/crafting/moon_light_upgrade_module_1.json -e9d3cc167655fc6821f73290a5f5dd2fdf13147a data/energizedpower/recipe/crafting/moon_light_upgrade_module_2.json -d535b337cc73995f983688830a098dd9acd43613 data/energizedpower/recipe/crafting/moon_light_upgrade_module_3.json -a1a1f9b7f380a053f7243c66be2512fb2a26e2f6 data/energizedpower/recipe/crafting/mv_transformer_1_to_n.json -994fa2eebd985a4021ae1b452e94388f1896c411 data/energizedpower/recipe/crafting/mv_transformer_3_to_3.json -7e88a18436124f6b0da280692f463b619225c04f data/energizedpower/recipe/crafting/mv_transformer_n_to_1.json -7806a748629fe06c8943c819de4647c8fb79c791 data/energizedpower/recipe/crafting/plant_growth_chamber.json -c7842e20ec25d5a5c79c24ce555372954c4eb0e1 data/energizedpower/recipe/crafting/powered_furnace.json -dc6bd1a6f8078c35cfe48aa8782a713ded8b9b09 data/energizedpower/recipe/crafting/powered_lamp.json -a6ae413fd19e269d619f5279aa182cffbf0a6950 data/energizedpower/recipe/crafting/press_mold_maker.json -e0191a10fc0fecceca203e583945548402d7fca0 data/energizedpower/recipe/crafting/pulverizer.json -6d1c28dae3cff93b0633cafdf03ec583645c3281 data/energizedpower/recipe/crafting/range_upgrade_module_1.json -abf5494402e08f9dccaee95f79e8fbf0a098eb46 data/energizedpower/recipe/crafting/range_upgrade_module_2.json -4ce98ea8185e6240978c10af1f2d791ae6cd3d2e data/energizedpower/recipe/crafting/range_upgrade_module_3.json -5bc24d3841d679eef0772081ccf883ae529b0291 data/energizedpower/recipe/crafting/raw_tin.json -2300f582843f08058f13ae666384d3557b70109d data/energizedpower/recipe/crafting/raw_tin_block.json -61b435b090caebf6d41ee45c3855ba5c892411d9 data/energizedpower/recipe/crafting/reinforced_advanced_machine_frame.json -b1be36eeb39fb37a82ebee91189374026bc2246a data/energizedpower/recipe/crafting/reinforced_advanced_upgrade_module.json -96b50c88bebca482bd791ba672c1a90636562e04 data/energizedpower/recipe/crafting/saw_blade.json -0cea6650d4061921c84816087c65450473f8aaa8 data/energizedpower/recipe/crafting/sawdust_block.json -99067fb839edbcf2fba3a583e384607f870c0718 data/energizedpower/recipe/crafting/sawdust_from_sawdust_block.json -250592724a832ed9c999257b095714e35512589e data/energizedpower/recipe/crafting/sawmill.json -7829ebd8ceb58ca1f40299a2bf7a93023194c408 data/energizedpower/recipe/crafting/silicon_block.json -6e1f2df02d232aba761a2bbd3036f6a6bb080f49 data/energizedpower/recipe/crafting/silicon_from_silicon_block.json -006fd3d285e5674c07b5ef3643fee433df11cd95 data/energizedpower/recipe/crafting/smoker_upgrade_module.json -62728a25777fd01921fdd7ffe4d8e3c7f06e8c98 data/energizedpower/recipe/crafting/solar_panel_1.json -3e0c8d9a598ba5d4cfddaed41832e8e71059b256 data/energizedpower/recipe/crafting/solar_panel_2.json -f926ef3e1629cf4c7f32898a92d10b6c38ab311d data/energizedpower/recipe/crafting/solar_panel_3.json -8196a552ee6cbf8a2f84ea96d1eb9a9a9fc822cb data/energizedpower/recipe/crafting/solar_panel_4.json -c4228ced518c3ae2885b46a28deeb7bf2d26e36c data/energizedpower/recipe/crafting/solar_panel_5.json -8ba02e22b47831f21db5a6b768a99c6983cb536f data/energizedpower/recipe/crafting/solar_panel_6.json -b6f45e7fca41c36971938f2ea4c839d9b540d4c3 data/energizedpower/recipe/crafting/speed_upgrade_module_1.json -ed430ccc3b2409df2c8c52b3b8586b95b367c1cf data/energizedpower/recipe/crafting/speed_upgrade_module_2.json -5f7bad2029d62d53fe175b76121612e1f8f349b2 data/energizedpower/recipe/crafting/speed_upgrade_module_3.json -01cb0069da9329ae9460e5e8a6017541ad1c87de data/energizedpower/recipe/crafting/speed_upgrade_module_4.json -81d6911c55fbb543d28042fe9b54e6b39085d18e data/energizedpower/recipe/crafting/speed_upgrade_module_5.json -566a4377b79eb8cab48ba1e88e167059879f293c data/energizedpower/recipe/crafting/stone_hammer.json -934961305d239256443728de0d5c5b11adb71127 data/energizedpower/recipe/crafting/stone_solidifier.json -e1ad3fb4b6032bc79c6e9359e3745cc7e9ca7f41 data/energizedpower/recipe/crafting/teleporter.json -a6a30b9fe6f85ad4bd73fb46c51e6f007176a838 data/energizedpower/recipe/crafting/teleporter_matrix.json +711ce9916b1027207b27819b06abac9702f881cc data/energizedpower/recipe/alloy_furnace/advanced_alloy_ingot.json +eb7b075adb9a434eca932de7063f5e576a219f14 data/energizedpower/recipe/alloy_furnace/redstone_alloy_ingot.json +d279d73efc61bdb338b83deef76513cb07e16a8e data/energizedpower/recipe/alloy_furnace/steel_ingot.json +5a0ebe71302c194e439e6ab8bdb211043c77b895 data/energizedpower/recipe/assembling/advanced_circuit.json +dfa18bf4255c2ce2a525b5598e588ead08018334 data/energizedpower/recipe/assembling/advanced_solar_cell.json +97e89526b783002f6809227d97235183bc175fec data/energizedpower/recipe/assembling/crystal_matrix.json +bc5fb274e0874f41e453ef77c0d003de57df47ef data/energizedpower/recipe/assembling/processing_unit.json +5021cdba328c58f077fdda8c79febfc5b6bd73e1 data/energizedpower/recipe/assembling/reinforced_advanced_solar_cell.json +d2feb1843b59a4f41cf9db6fb210e188c6050f3d data/energizedpower/recipe/assembling/teleporter_processing_unit.json +1020be88de308c7dd1aa8891b584d8219f5b038d data/energizedpower/recipe/blasting/copper_ingot_from_blasting_copper_dust.json +c98c33fcbb0615d33920c2a3a51dd0de05b5c406 data/energizedpower/recipe/blasting/gold_ingot_from_blasting_gold_dust.json +8c0ab35173260fa1c0d6544e893009699e87827b data/energizedpower/recipe/blasting/gold_nugget_from_blasting_golden_hammer.json +02654148fa44a0acc646ea8035985aee42c7f43e data/energizedpower/recipe/blasting/iron_ingot_from_blasting_iron_dust.json +8f7a643692dafc217b20fad6a685685a787a8005 data/energizedpower/recipe/blasting/iron_nugget_from_blasting_iron_hammer.json +eb4e8ec534953c355f2a85bcb90548837713f825 data/energizedpower/recipe/blasting/silicon_from_blasting_nether_quartz.json +3ce85b5adcfb487948d09c0ad72919dd84845605 data/energizedpower/recipe/blasting/tin_ingot_from_blasting_raw_tin.json +97b25574ddb2705557e98d3a596597828cf47c81 data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_dust.json +70e275005686329a13db35d672cd733495dbbe69 data/energizedpower/recipe/blasting/tin_ingot_from_blasting_tin_ores.json +57d304c03a53d7957d0417725ab1ea33d395c184 data/energizedpower/recipe/charger/energized_copper_ingot.json +915c360565ff79f44149d25dd5fd3721373c9887 data/energizedpower/recipe/compressing/advanced_alloy_plate_from_compressing_advanced_alloy_ingot.json +7f4dd39e49b4ce74656e90df1cbf08af450eb7e6 data/energizedpower/recipe/compressing/cobblestone_from_compressing_stone_pebbles.json +d6058febc879c235f880fd6f3defb936666203c1 data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_block.json +d4e476583aac174e51b7c63451c81262fca91da6 data/energizedpower/recipe/compressing/copper_plate_from_compressing_copper_ingot.json +c8f6d8dcb756f694509e4362628f7d84a5fcff6f data/energizedpower/recipe/compressing/energized_copper_plate_from_compressing_energized_copper_ingot.json +5d51450d3c5a66b13410d670a60dd6256e2604ef data/energizedpower/recipe/compressing/energized_gold_plate_from_compressing_energized_gold_ingot.json +02c6ce285939b98e575928706fc4c389501b068e data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_block.json +19e78b11117d36138ef88083d6f37aa8cd4c107d data/energizedpower/recipe/compressing/gold_plate_from_compressing_gold_ingot.json +c0c3b863a3d0d2f5307d1d0b677ffc4361f13b2b data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_block.json +17b824e2c8ae41503b831538eddfa6c91d1009b6 data/energizedpower/recipe/compressing/iron_plate_from_compressing_iron_ingot.json +4527000cf6265eb038217ed25834b803e638c25b data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_block.json +9f946539262ca27769f7fdf50b7a65b400dcda0d data/energizedpower/recipe/compressing/tin_plate_from_compressing_tin_ingot.json +37ee4d9058da59b69624f170afe1cb066722345d data/energizedpower/recipe/crafting/advanced_auto_crafter.json +526947ba0485c999660158c8437e1cf3e845eb59 data/energizedpower/recipe/crafting/advanced_battery_box.json +18daadf255da6f4cdb60e9cc3d1d392ebdaef945 data/energizedpower/recipe/crafting/advanced_battery_box_minecart.json +265e0f3da54ca61d88f8b8fb0717424ab58e4ab9 data/energizedpower/recipe/crafting/advanced_charger.json +27238b94d17ebef11881d87e69d97509a28c2b06 data/energizedpower/recipe/crafting/advanced_crusher.json +335c6051878c730b1c6b386ba5610d2488ce5ae8 data/energizedpower/recipe/crafting/advanced_fertilizer.json +ef4b60a0b37e057e68fb6f7f0d3dc0129aa95d14 data/energizedpower/recipe/crafting/advanced_machine_frame.json +2f406d28aaacfdae93be9a765a3af81015930e85 data/energizedpower/recipe/crafting/advanced_minecart_charger.json +25c74910d56e80ea9ce7bc63acc870eda6ad32d1 data/energizedpower/recipe/crafting/advanced_minecart_uncharger.json +21e551b42c9474b7998d941541379dc16335ee00 data/energizedpower/recipe/crafting/advanced_powered_furnace.json +7164204eee7da1f05174abfe6d2f89712916ac03 data/energizedpower/recipe/crafting/advanced_pulverizer.json +9e4e30c83108422dcac6154149c4f61db8f32ae5 data/energizedpower/recipe/crafting/advanced_uncharger.json +d78a0dd4214e1dbe022f785650306400d3292f4b data/energizedpower/recipe/crafting/advanced_upgrade_module.json +d5cff687be9d0075bed0b198ad5a3acbb004951e data/energizedpower/recipe/crafting/alloy_furnace.json +055102b3b65ea1a632914124e35e2d78ef7b5f76 data/energizedpower/recipe/crafting/assembling_machine.json +6fb9cabd18927b89e18329ced1f171a604e9442d data/energizedpower/recipe/crafting/auto_crafter.json +4384e94c6be96142fc2f384c648d6c4d0d41fc9e data/energizedpower/recipe/crafting/auto_press_mold_maker.json +54686b5e1856469dda0883a4ab942bd698770fae data/energizedpower/recipe/crafting/auto_stonecutter.json +92a1eb31e11eff2f204921548bef9eb275097b72 data/energizedpower/recipe/crafting/basic_circuit.json +8f8c54d75e4cbbc076a6da256db683f59c956ed9 data/energizedpower/recipe/crafting/basic_fertilizer.json +8f154ae0b3711e99262e1db4abe6b29b3c820850 data/energizedpower/recipe/crafting/basic_machine_frame.json +11e6d203acb63130438120a278509885b2e68799 data/energizedpower/recipe/crafting/basic_solar_cell.json +bae79b1cae05e92c6bd6d76fc92a442155a787e4 data/energizedpower/recipe/crafting/basic_upgrade_module.json +48825fdfdb8b9e21621abe9a7248221d234645f5 data/energizedpower/recipe/crafting/battery_1.json +4394be3a375dc41112bfb0e221d4570bde46ea18 data/energizedpower/recipe/crafting/battery_2.json +cfbbc3036ce056905c09daf28a6227f9348fbb3d data/energizedpower/recipe/crafting/battery_3.json +6cb882024183049e9048ecd12e858314fbcf5bca data/energizedpower/recipe/crafting/battery_4.json +10eb4b31134d4c09a4554b6bc5c03c0262fdc987 data/energizedpower/recipe/crafting/battery_5.json +cc1e048f1b66f2832b00dfdc65ba6daefeed0453 data/energizedpower/recipe/crafting/battery_6.json +7c982109df91925724b88ba9fee2c9d268c8565a data/energizedpower/recipe/crafting/battery_7.json +16882e16e38de7dca3b686acc6488e4266952e5c data/energizedpower/recipe/crafting/battery_8.json +e26d3039c1f82e1552e42709245c04b5cf711692 data/energizedpower/recipe/crafting/battery_box.json +b96166bf8121d5da54465d7d06b6a16181f78d27 data/energizedpower/recipe/crafting/battery_box_minecart.json +ac859c8f52ed0008fcd473821b3d5f0ff5346702 data/energizedpower/recipe/crafting/blast_furnace_upgrade_module.json +610808d040ac5372bb1e5d42dd1d4808efa76c56 data/energizedpower/recipe/crafting/block_placer.json +a30cc6bd653f0047d45262adb7a9a58e42aa9c00 data/energizedpower/recipe/crafting/charcoal_filter.json +04b0f5e26d4008916d982dd88aca0f308558daf6 data/energizedpower/recipe/crafting/charger.json +3684e95860faf54cbb4858e13a8282ad6d3f545f data/energizedpower/recipe/crafting/charging_station.json +d0bdff0df25c784a7f069c4ca38d809fbc352013 data/energizedpower/recipe/crafting/coal_engine.json +59aad3f441f1eaa45b23587fe16f133d68c76fc8 data/energizedpower/recipe/crafting/compressor.json +ae34721766c00b083597eca555ea4b3519e7359c data/energizedpower/recipe/crafting/copper_cable.json +592418fd34708ca66bdbd46366f7219a59b31875 data/energizedpower/recipe/crafting/copper_cable_using_wire.json +4583cb06c6655ed4cbd8f197740dfcae2db59ea4 data/energizedpower/recipe/crafting/copper_plate.json +8637a77bf620c2ccb3274edcd899922f994cdef4 data/energizedpower/recipe/crafting/copper_wire.json +fa38174d3030fb9338e21fe11c68953e9aac991d data/energizedpower/recipe/crafting/crusher.json +c78a404f265c58f3b3af4a27168360f395bba09a data/energizedpower/recipe/crafting/crystal_growth_chamber.json +c716b5ff5d82a98dd9fdbb2d764bd25cc6b83be7 data/energizedpower/recipe/crafting/cutter.json +9b4853d2a398cf900da4a16d05d424e4084527ad data/energizedpower/recipe/crafting/diamond_hammer.json +535b7c0b95cfcfa631061f398eaa5839ae5c841e data/energizedpower/recipe/crafting/drain.json +bf60fbff10a42d0c8ac2b409088aa28b0cde5709 data/energizedpower/recipe/crafting/duration_upgrade_module_1.json +08c2c1304e80792a98ab73ee89c78af1f427d593 data/energizedpower/recipe/crafting/duration_upgrade_module_2.json +e277137157b84bafe2d157f02b705332f738395d data/energizedpower/recipe/crafting/duration_upgrade_module_3.json +78c1b988fb54d075190a86f145d84637c647ec67 data/energizedpower/recipe/crafting/duration_upgrade_module_4.json +7cc58b3826946c6db6debbb1f4ac19f308265b0c data/energizedpower/recipe/crafting/duration_upgrade_module_5.json +8d5620f1886feae0fb28267e58f9208a00f80dd2 data/energizedpower/recipe/crafting/duration_upgrade_module_6.json +2658f232a6712413bd339a376473cc8495811151 data/energizedpower/recipe/crafting/ehv_transformer_1_to_n.json +8e180d91c8237c7f24106bf973146b123922ea7d data/energizedpower/recipe/crafting/ehv_transformer_3_to_3.json +19d50f8bc293646001d4874c94a8722eac1339a8 data/energizedpower/recipe/crafting/ehv_transformer_n_to_1.json +aef98747d6189964469a991055d23f649dba42f6 data/energizedpower/recipe/crafting/energized_copper_cable.json +9a23812deb17f5b99cbefc2e05d59bd2b4b84037 data/energizedpower/recipe/crafting/energized_copper_cable_using_wire.json +ad4ef9fc245ffa36ac94b04d379eb946a1593df7 data/energizedpower/recipe/crafting/energized_crystal_matrix_cable.json +43eba0c13fdd24a0128f409dc851450293e747c6 data/energizedpower/recipe/crafting/energized_gold_cable.json +7a50ee84222a13d351b485de577f342028420c3f data/energizedpower/recipe/crafting/energized_gold_cable_using_wire.json +95423da149be378a54a470cb8d263197bfc66776 data/energizedpower/recipe/crafting/energized_power_book.json +4b8b118c0ebf990cd75def7eb4fff1d085fdcc77 data/energizedpower/recipe/crafting/energizer.json +bd25d8c33b2fb6a6686427edfa813ea1b2030c66 data/energizedpower/recipe/crafting/energy_analyzer.json +77aad6c3bea26556d6706c96d765be25f72cca88 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_1.json +c2b1ceedf58a9ed08189f71b434113f7f78cf1a0 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_2.json +54b93035666d08ccd24b98bc8c9352192fa67840 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_3.json +933bfe6fe64d3f47037db4bf79d659335a6d51d1 data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_4.json +f62fcc099922993e6f1bef5578ea15d078faff0b data/energizedpower/recipe/crafting/energy_capacity_upgrade_module_5.json +c5365820eee709dfd24f8ad565749cb22ea7db85 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_1.json +8fc446720f5de2f4a175046097fea3e2a5162972 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_2.json +625037641d4a2655a452053e9270767eac4fea83 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_3.json +86c67129e66184743319e1d5a701e904b977f0c2 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_4.json +6889518fdb6ffc5ae34ee76931dbd287ca736033 data/energizedpower/recipe/crafting/energy_efficiency_upgrade_module_5.json +b3401e5ae264f6d3994a337f434921d1a9020a49 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_1.json +ad369be7cf64361651df0240c13cd730ac03c456 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_2.json +393eb8a072aaa43ee8e4ecd558be0b505f54d3ad data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_3.json +55f96dc745f5771bbe6d878dc8ea6e953ef68fc4 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_4.json +54b37553a1fd68fc2cf45bae59069e66b2eac641 data/energizedpower/recipe/crafting/extraction_depth_upgrade_module_5.json +0b58e5427c18e4398f1ab6dc4f558e589c321f5d data/energizedpower/recipe/crafting/filtration_plant.json +a290819163067a0c71c3daa976d2b744f428ccd7 data/energizedpower/recipe/crafting/fluid_analyzer.json +de747c82ab1f54f2ca5b64bc8c6d2590332b8f87 data/energizedpower/recipe/crafting/fluid_drainer.json +6cd6d9f4d489b26bfdce6da425d8a816becd5e16 data/energizedpower/recipe/crafting/fluid_filler.json +15aecf79c9fe100f9289a144e6b8e55f8594e4c5 data/energizedpower/recipe/crafting/fluid_pump.json +4094bdfdc18a6af4659fcef8a689b24be5bdb6b2 data/energizedpower/recipe/crafting/fluid_tank_large.json +7e003e0baaff35582bec79a20c0dd89cdbda6a27 data/energizedpower/recipe/crafting/fluid_tank_medium.json +16369dcfa1683d3616d37e216f4ad15d242856d7 data/energizedpower/recipe/crafting/fluid_tank_small.json +cc2936f67725adc6cc4ea9da0c7815a3b19c0aeb data/energizedpower/recipe/crafting/fluid_transposer.json +540df5bc30d172ef97e8b52f703978b736744bb1 data/energizedpower/recipe/crafting/gold_cable.json +01812288164356dbcab9092fa8d0ed21f59c6f1a data/energizedpower/recipe/crafting/gold_cable_using_wire.json +478154e7f72226f43f7dc7a78c34965ecf87d5eb data/energizedpower/recipe/crafting/gold_plate.json +b43c151585fa03bac6616faa984270095376f592 data/energizedpower/recipe/crafting/gold_wire.json +f557d18e6e84dd1a7ad5eaba6f4a16b28fb0576c data/energizedpower/recipe/crafting/golden_fluid_pipe.json +4229b6a88a582d7cd94917520ee8745887079531 data/energizedpower/recipe/crafting/golden_hammer.json +c1ccf3e90ce216e3d1fe7638cb4d7d27cb30a959 data/energizedpower/recipe/crafting/good_fertilizer.json +52cdb9f77a20f8cf92280fc59ff894189e8e0fa0 data/energizedpower/recipe/crafting/hardened_machine_frame.json +50160765d5af1efca697d3a348c1647d8e1e6ca8 data/energizedpower/recipe/crafting/heat_generator.json +15bdcbaf3182a94763b86758d59f58c4a4f9c23c data/energizedpower/recipe/crafting/hv_transformer_1_to_n.json +6da594a80518256652c5c120c10c218f6101c40c data/energizedpower/recipe/crafting/hv_transformer_3_to_3.json +4b9f75c9b47d9c69ccb29334a0cdc6009c4e6949 data/energizedpower/recipe/crafting/hv_transformer_n_to_1.json +6ab2d4556bd48d24f1b1fc33cc98b6e678114462 data/energizedpower/recipe/crafting/induction_smelter.json +455ddfe8f2e46fb7e4c96d3970cdd050d855cae1 data/energizedpower/recipe/crafting/inventory_charger.json +ecdb927fa13f3f6790be2d619aa678ab6cdca87e data/energizedpower/recipe/crafting/inventory_coal_engine.json +08c20eb5fdadac8aa2c9abe792b504c06fd9eda5 data/energizedpower/recipe/crafting/inventory_teleporter.json +7f4685a8e825e05ecad63792914c987734f58714 data/energizedpower/recipe/crafting/iron_fluid_pipe.json +4a94c6a0d4c0b2fa51cf13399835fe4956661562 data/energizedpower/recipe/crafting/iron_hammer.json +3b55f9dae41a8788bd8c783897d2fe67beeb9f0b data/energizedpower/recipe/crafting/iron_plate.json +58d115b330faf64b1d3246aaad2247ba7ec1bbe1 data/energizedpower/recipe/crafting/item_conveyor_belt_from_dried_kelp.json +e24ed5d1b954d1fcfe5f11ecd6b15539108ffecd data/energizedpower/recipe/crafting/item_conveyor_belt_from_leather.json +655476bbdfc5ffb381cc0ae9721035ab2a0b26f9 data/energizedpower/recipe/crafting/item_conveyor_belt_loader.json +86bccbee888aad5d007e191e28f327c14ef38213 data/energizedpower/recipe/crafting/item_conveyor_belt_merger.json +76d24e12ad508ca0d8a91cbac408c7a55fd9b598 data/energizedpower/recipe/crafting/item_conveyor_belt_sorter.json +d86a4001352850006f5536c6c80062ceccebc39e data/energizedpower/recipe/crafting/item_conveyor_belt_splitter.json +772d62d0650ef3cf5b0809f711fa0cf72f2a33ed data/energizedpower/recipe/crafting/item_conveyor_belt_switch.json +13e5ccf79e69d5a3020ddeada9592934a2d26ebb data/energizedpower/recipe/crafting/lightning_generator.json +3b5c1d4f2bd7fc25e249dac520b7c59e208a4d8c data/energizedpower/recipe/crafting/lv_transformer_1_to_n.json +c929b23340fe316df71594061a64b3fdb8103a00 data/energizedpower/recipe/crafting/lv_transformer_3_to_3.json +f0ab6bc0fe2d7da6914b9cd304b6479a51116931 data/energizedpower/recipe/crafting/lv_transformer_n_to_1.json +6c37bfc629cb0d1f3e7b4a558ec7d494e6c25df8 data/energizedpower/recipe/crafting/metal_press.json +22bcf01a856084c7c04e32ed87e0c048b93af7a6 data/energizedpower/recipe/crafting/minecart_charger.json +9851ca1a01c07bacaa64d3cdf404dbe5999fdcc6 data/energizedpower/recipe/crafting/minecart_uncharger.json +f9087618674fdab7308e6c533e75c1ba5daabbb8 data/energizedpower/recipe/crafting/moon_light_upgrade_module_1.json +e65ac42f44471f2e8bc155bf9f7e42baeb4614f4 data/energizedpower/recipe/crafting/moon_light_upgrade_module_2.json +6d5c6b344853fcd78969f446a36a13191fa20544 data/energizedpower/recipe/crafting/moon_light_upgrade_module_3.json +274b6901ede12765e944de277cf5b949d2089535 data/energizedpower/recipe/crafting/mv_transformer_1_to_n.json +16f2a7ac149f12d3adf70e1d7a2e3fa4522ba991 data/energizedpower/recipe/crafting/mv_transformer_3_to_3.json +063045a4200e4e03c02b720b8a33345ca92e2e0f data/energizedpower/recipe/crafting/mv_transformer_n_to_1.json +f20d42aabf266a3d43cb4ebab4f2b1152ebf098c data/energizedpower/recipe/crafting/plant_growth_chamber.json +a6890376e07f29b32a0d7b8666fcaa6df91b8120 data/energizedpower/recipe/crafting/powered_furnace.json +f7e8a7db9fab4c73cc487f4ab60caa2f48691113 data/energizedpower/recipe/crafting/powered_lamp.json +956c05f4cdb14b39af8fe1770e5b7ff41f13ef7d data/energizedpower/recipe/crafting/press_mold_maker.json +c606f64931ac0f3684a25c9a597a60d28035a804 data/energizedpower/recipe/crafting/pulverizer.json +4c9cfd5d5153a329ba3c4bf37bc06677cbd80cc5 data/energizedpower/recipe/crafting/range_upgrade_module_1.json +489ebbc90d161fc71865ad1c996e143045379dc9 data/energizedpower/recipe/crafting/range_upgrade_module_2.json +5944d4458047ac6fbadc7135d9c628439d0df597 data/energizedpower/recipe/crafting/range_upgrade_module_3.json +6035ed81cfba6671adeb833a86caa1f93b90cad8 data/energizedpower/recipe/crafting/raw_tin.json +93619044388ea5b1900d4f0d6a602bcf76391e40 data/energizedpower/recipe/crafting/raw_tin_block.json +b5788b8246c2b7b8afe293b40f49da55ac9d36bb data/energizedpower/recipe/crafting/reinforced_advanced_machine_frame.json +a6f804fce5a4230877df40c48572e8d8bb7485e6 data/energizedpower/recipe/crafting/reinforced_advanced_upgrade_module.json +afcf364da9a229b94e4e87d211d915e9983ed0a3 data/energizedpower/recipe/crafting/saw_blade.json +826fa45c9e29be04ef797e1bcd474b35827f6c8a data/energizedpower/recipe/crafting/sawdust_block.json +cc8752cc525a34a7857a3c28c1adbfc16da63e32 data/energizedpower/recipe/crafting/sawdust_from_sawdust_block.json +d3cb0697b337df8534d26db7ebc895c40c4713f3 data/energizedpower/recipe/crafting/sawmill.json +af1564efa89c74b0e95cc5a241c6131c54aeaf9c data/energizedpower/recipe/crafting/silicon_block.json +b6f6bc77db749d6004364e5b8a3c024598e6bfea data/energizedpower/recipe/crafting/silicon_from_silicon_block.json +7dacc17769db2ca2bdae01b310b950f4c94bd75a data/energizedpower/recipe/crafting/smoker_upgrade_module.json +11724000932c8c819bf1d4b46fdd8d8821dd4d47 data/energizedpower/recipe/crafting/solar_panel_1.json +a5f47327fb007d766ec1fac9838b208530fc7355 data/energizedpower/recipe/crafting/solar_panel_2.json +17e03df99b69c91bd621c9519fbf4fb80fa5b8a3 data/energizedpower/recipe/crafting/solar_panel_3.json +ae5d651842f84f157b0a79f3db9468a47e98f15a data/energizedpower/recipe/crafting/solar_panel_4.json +15cb9faa4baad46f5723b8c45885ead8a2ea2b3d data/energizedpower/recipe/crafting/solar_panel_5.json +151e9e3a8a25a5bc9b6098729a3a3869382ce9e4 data/energizedpower/recipe/crafting/solar_panel_6.json +50c4959c54290da9cc2da514433479b63b8e62e2 data/energizedpower/recipe/crafting/speed_upgrade_module_1.json +d538517d76ddaa8f245c3b0f2df8e113618a0369 data/energizedpower/recipe/crafting/speed_upgrade_module_2.json +fad6fbc1fbab89b293bbf21eed2cc3566680fb53 data/energizedpower/recipe/crafting/speed_upgrade_module_3.json +f66989172895ef67402f982ecc88be5af0bbe30e data/energizedpower/recipe/crafting/speed_upgrade_module_4.json +313066e7674a6c8ea4a8d2fa4c0bf20f129464ba data/energizedpower/recipe/crafting/speed_upgrade_module_5.json +7aab0604df7bb8c8775a4709fd2e41bb819d8751 data/energizedpower/recipe/crafting/stone_hammer.json +ec9351ae4fe01a93c0116439723cedb461eb7631 data/energizedpower/recipe/crafting/stone_solidifier.json +6224436fbf3f23e235a66a832ff52e2e043ad938 data/energizedpower/recipe/crafting/teleporter.json +9499c1c2a493a123f5e551eb026981b421598a80 data/energizedpower/recipe/crafting/teleporter_matrix.json 3d0336fbe2e2335242eaf638c1fd65fc04b4519e data/energizedpower/recipe/crafting/teleporter_matrix_settings_copy.json -94cb39814805aedae29d4ac099189722061a7a54 data/energizedpower/recipe/crafting/thermal_generator.json -2070ce7ee46bcdcf5fc78fdba421b504385a62d3 data/energizedpower/recipe/crafting/time_controller.json -8443856cd45417f65b446f2f1a7a02c502c67d7d data/energizedpower/recipe/crafting/tin_block.json -e1203e7ec613735635342993df74abeeaa0bbfaa data/energizedpower/recipe/crafting/tin_cable.json -df22825179ed56b1a17dde2069c62514255eca02 data/energizedpower/recipe/crafting/tin_cable_using_wire.json -bea4a31c5e2f9789aa96bd91e37f5ed3da1d83d6 data/energizedpower/recipe/crafting/tin_ingot_from_nuggets.json -3ff879327b8dcc053b6c3d925365024736189965 data/energizedpower/recipe/crafting/tin_ingot_from_tin_block.json -53f8d3038adea6a98a89e4414592542eea5d9432 data/energizedpower/recipe/crafting/tin_nugget.json -29fd22b14446b90818ac1b967ee07f1bc1d6e428 data/energizedpower/recipe/crafting/tin_plate.json -aeb970ee9a020f0f3c38f6e3b2a223e3c695da49 data/energizedpower/recipe/crafting/tin_wire.json -434c04074803b17cf1228cb65395807d1b4187e1 data/energizedpower/recipe/crafting/uncharger.json -30cc95797a7fff090ecdcb63db29deb34cb94251 data/energizedpower/recipe/crafting/weather_controller.json -59015de2c23371e20e42e9808ebb7f7e39217697 data/energizedpower/recipe/crafting/wooden_hammer.json -cfd17efe7c21c49c0f003b1fc7d34b775935d67e data/energizedpower/recipe/crafting/wrench.json -1ca5e3f66813d7eb7a6f3ef9cb8d8e7cd7fe2ad0 data/energizedpower/recipe/crusher/andesite_from_crushing_polished_andesite.json -10f064b9a2962de7914601f4b2ff17bb2e426e4a data/energizedpower/recipe/crusher/basalt_from_crushing_basalt_variants.json -4b9c8a3a12425c9de3f24852ad4a0637bb752b75 data/energizedpower/recipe/crusher/blackstone_from_crushing_blackstone_variants.json -d2a472bb5560a231963dbb014276b28b24907afd data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate.json -0cb2177118e210ed72a92d1efda8e49bbad562cb data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate_variants.json -df41e331ad735be53f8db54512ca155936b2d395 data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone.json -40976278140356ae52fdcf70431203039b9e82b0 data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone_variants.json -2dd8c42a9852732a1e161e214ce238e285203e31 data/energizedpower/recipe/crusher/diorite_from_crushing_polished_diorite.json -ea8c0683b22f62e833da79706c43501bfea34803 data/energizedpower/recipe/crusher/granite_from_crushing_polished_granite.json -f347d3faa6c43a57e7adc7e39196b1fe70314f96 data/energizedpower/recipe/crusher/gravel_from_crushing_cobblestone.json -3662da2e235f9496ca387558b7497b71561912f2 data/energizedpower/recipe/crusher/mossy_cobblestone_from_crushing_mossy_stone_bricks.json -cd8524daaae17ce90cd12cae158addff5e4b34b6 data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone.json -f4e27c4771da385701a640b6247b72af107845f6 data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone_variants.json -aa09af5bd522ee4ed4bf9b43c43c07fc2cb13b69 data/energizedpower/recipe/crusher/sand_from_crushing_gravel.json -22201221a64c808793fd5f5935f8ab55d417994b data/energizedpower/recipe/crusher/sand_from_crushing_sandstone.json -9dab3d05d54d9caa26095af5e82dd5656bcb7410 data/energizedpower/recipe/crusher/sand_from_crushing_sandstone_variants.json -784e5fe83959bb0d4efb75fc5aeedfc64f5afb4c data/energizedpower/recipe/crusher/tuff_from_crushing_tuff_variants.json -0d43571131ed27b098249c2c3b806ca1193d51d4 data/energizedpower/recipe/crystal_growing/amethyst_shard.json -493c02ea29c6989b1841291263e7154d7f561b12 data/energizedpower/recipe/crystal_growing/budding_amethyst.json -5573fff741ae9e92592b21971cbe0ab05fcba4b8 data/energizedpower/recipe/energizer/energized_copper_ingot.json -4dea0b451338c628d800f8a22dfe38af04622b36 data/energizedpower/recipe/energizer/energized_crystal_matrix.json -a5c0d6d7d706d5f374596cb9fa3bd0520febccc5 data/energizedpower/recipe/energizer/energized_gold_ingot.json -958ee72ea30d85e8aa55463f16c9721a06b3dc88 data/energizedpower/recipe/filtration_plant/copper_ore_filtration.json -b9016d3046385243e43b3adefae374a9fd145392 data/energizedpower/recipe/filtration_plant/gold_ore_filtration.json -cd7c8444e7bf1a87b68f64f851de421e7d628516 data/energizedpower/recipe/filtration_plant/iron_ore_filtration.json -b24bd9a4913681e40efcd131fc59e2e888f7a4d4 data/energizedpower/recipe/filtration_plant/tin_ore_filtration.json -2e42dee476f3762fda73a1e942fdaddb58f045f6 data/energizedpower/recipe/fluid_transposer/black_concrete.json -fc2b3b87644099627302d7f0a10bf37e4ae3b1e4 data/energizedpower/recipe/fluid_transposer/blue_concrete.json -4bc21e7c6317dd76a768fe755e19985b9987c0b4 data/energizedpower/recipe/fluid_transposer/brown_concrete.json -f45790c41ea0bae6db0490abd3a55520cf20c73a data/energizedpower/recipe/fluid_transposer/cyan_concrete.json -bde20ff4457b38839d473dbc5a55510b95017aea data/energizedpower/recipe/fluid_transposer/gray_concrete.json -8c32c2c8f63e93d0c5feddae1ee525304a1773b7 data/energizedpower/recipe/fluid_transposer/green_concrete.json -a0d428ca358594d8812f06779b4f79e85123506c data/energizedpower/recipe/fluid_transposer/light_blue_concrete.json -c6a14ac5d2cb2cae541e8b9caabf17701c15a5ce data/energizedpower/recipe/fluid_transposer/light_gray_concrete.json -0a432c0bff3fc11775a93446ae34022de2297364 data/energizedpower/recipe/fluid_transposer/lime_concrete.json -c644b0715f0f16566b971f207258f9dc581463e1 data/energizedpower/recipe/fluid_transposer/magenta_concrete.json -f557342f93a0c140aedeebd3dcd4197231b32cc3 data/energizedpower/recipe/fluid_transposer/mud.json -9758c063f0bd7f1969ace06357c7405dd084da8c data/energizedpower/recipe/fluid_transposer/orange_concrete.json -080340f61138e6db01c3411e9ec09df1ab7f69ea data/energizedpower/recipe/fluid_transposer/pink_concrete.json -f83719f4381d706b012699b9e5ee29b7df5f40d9 data/energizedpower/recipe/fluid_transposer/purple_concrete.json -ac68f1d1109571eae340a570c0e1890d786b13ae data/energizedpower/recipe/fluid_transposer/red_concrete.json -4e2f712a4c1991af4d1bc835191d6da054e36505 data/energizedpower/recipe/fluid_transposer/sponge.json -7d7af6c98171d4559a6a5a2691a18ca3acfebac3 data/energizedpower/recipe/fluid_transposer/wet_sponge.json -674702a25e37753d5976aee90f496a8bf7068842 data/energizedpower/recipe/fluid_transposer/white_concrete.json -c1f9d51a9204186c3cf1ad8d18a859635447974c data/energizedpower/recipe/fluid_transposer/yellow_concrete.json -dc28007f9d8eea8a896d84100059f9173ec7b96b data/energizedpower/recipe/growing/alliums_from_growing_allium.json -69d414cf732ee0f4209b51126beb4b24229b675f data/energizedpower/recipe/growing/azure_bluets_from_growing_azure_bluet.json -62d9c292c9170a1ab7fe28fbd3acd1bb619326c6 data/energizedpower/recipe/growing/bamboo_from_growing_bamboo.json -a2ac15efbfb1443e7cbcf1887302c13b3f2acdf6 data/energizedpower/recipe/growing/beetroots_from_growing_beetroot_seeds.json -7d3a7a17abd57a797edba9248b038960f3901d13 data/energizedpower/recipe/growing/blue_orchids_from_growing_blue_orchid.json -8b79c598a3d9dc0ec9373d900378763d893340db data/energizedpower/recipe/growing/brown_mushrooms_from_growing_brown_mushroom.json -d99fbdff0f1bceff3013fd7a77efccaf87597154 data/energizedpower/recipe/growing/carrots_from_growing_carrot.json -fc296354134ec0541c11eb369be875fb3622cf46 data/energizedpower/recipe/growing/cornflowers_from_growing_cornflower.json -54f320bf5c96d3d2d9061a493ce6e3e87473d35b data/energizedpower/recipe/growing/dandelions_from_growing_dandelion.json -37921cffa37922fb8492c79b26043e61c0cddd8e data/energizedpower/recipe/growing/fertilizer/advanced_fertilizer.json -21994ccdddca46d5daebf7900c14e93896705145 data/energizedpower/recipe/growing/fertilizer/basic_fertilizer.json -ff335e8b73bb83e23f932b82d855f863ab14b184 data/energizedpower/recipe/growing/fertilizer/bone_meal.json -d9c761842a4b966716a0fa5bc02b39da0b012760 data/energizedpower/recipe/growing/fertilizer/good_fertilizer.json -ccfe38e7cc9d5d098e430d2c15fb97d87c84d953 data/energizedpower/recipe/growing/glow_berries_from_growing_glow_berries.json -3ff72b3ea9965458ddca4c1fb337d3a9c960a1d1 data/energizedpower/recipe/growing/lilacs_from_growing_lilac.json -7bb76f6b34c4eece88605b3dafb672ee53286088 data/energizedpower/recipe/growing/lily_of_the_valley_from_growing_lily_of_the_valley.json -51d7ab04ed09c4c33e8654b0171bb57c355a9393 data/energizedpower/recipe/growing/melon_slices_from_growing_melon_seeds.json -61db9a25cfb3a661b0548d3ba180f56eda2b147b data/energizedpower/recipe/growing/orange_tulips_from_growing_orange_tulip.json -ab5ccd543d2cdc6a4c5e384b0ead4b57e723a8b6 data/energizedpower/recipe/growing/oxeye_daisies_from_growing_oxeye_daisy.json -3419cee9837af87ec804299bbcb4eb7176caf4eb data/energizedpower/recipe/growing/peonies_from_growing_peony.json -02c55a6164ad06a82192e580dbda1a27d8fbc55d data/energizedpower/recipe/growing/pink_petals_from_growing_pink_petals.json -5a83aff5b8c3d28bc8ab25dbe8096b9dfbd1f036 data/energizedpower/recipe/growing/pink_tulips_from_growing_pink_tulip.json -927e31626c8c242364d0d0362b10971bce50dcdd data/energizedpower/recipe/growing/pitcher_plants_from_growing_pitcher_pod.json -dd60a99790c9c4ebe4f6b0c9ee04cbded7b83880 data/energizedpower/recipe/growing/poppies_from_growing_poppy.json -21e6ca10715225e4eabd1fed5311aa1126f8ec64 data/energizedpower/recipe/growing/potatoes_from_growing_potato.json -9c207ae82a1f813fb173666225b6594447b4e41b data/energizedpower/recipe/growing/pumpkin_from_growing_pumpkin_seeds.json -682f3216c6a0e5a85d656c1d0a9c1e97d41c8974 data/energizedpower/recipe/growing/red_mushrooms_from_growing_red_mushroom.json -ef5c12f88623b2b96f6f57dff7a0806ce6bb25da data/energizedpower/recipe/growing/red_tulips_from_growing_red_tulip.json -7c605a43b76f1058aab7982185d135b3032b587e data/energizedpower/recipe/growing/rose_bushes_from_growing_rose_bush.json -355b192236ef0647dbe7b800c80a0da28da81bfe data/energizedpower/recipe/growing/sugar_canes_from_growing_sugar_cane.json -3d68ca5a35358bac8a92501418609023a5713dc3 data/energizedpower/recipe/growing/sunflowers_from_growing_sunflower.json -e21f69311ecb7ee39412e2b2e0e50c3374913f45 data/energizedpower/recipe/growing/sweet_berries_from_growing_sweet_berries.json -eeed14aa870c76c06a9775c427598a940d4bd90b data/energizedpower/recipe/growing/torchflowers_from_growing_torchflower_seeds.json -af8728284aca3a8f383fc00b77b20ab8be718333 data/energizedpower/recipe/growing/wheat_from_growing_wheat_seeds.json -34480685905b0477444d353740f251f6b99abcbe data/energizedpower/recipe/growing/white_tulips_from_growing_white_tulip.json -71d7e439f1f601e72135b3fcd7308339e3a26b84 data/energizedpower/recipe/heat_generator/energy_production_from_flowing_lava.json -ec61530c8acfb7e5e50400cc39369bb74f10863c data/energizedpower/recipe/heat_generator/energy_production_from_still_lava.json -390a84b48a3af4b03ff5042fbed8b7ca1826320c data/energizedpower/recipe/metal_press/copper_wire.json -bf814cc17962f2b3033bbdbcf4f2bdb439611dc7 data/energizedpower/recipe/metal_press/energized_copper_wire.json -7725ab4e4e9e42708c9115ad4f0621ec2a5fc40b data/energizedpower/recipe/metal_press/energized_gold_wire.json -94bebcf1b66cc32029368f3e6654d1890ed4a328 data/energizedpower/recipe/metal_press/gold_wire.json -20f767f8bbd87b1b4745d651366a5903ef4e2bfc data/energizedpower/recipe/metal_press/iron_gear.json -6dabeb8ca1c6c14db94689080d3d8e0936d21b32 data/energizedpower/recipe/metal_press/iron_rod.json -08958c3669fd615c145bb0b3c5c5b1a598853ade data/energizedpower/recipe/metal_press/tin_wire.json -ca0c7197caeaccb42945f87bb24b6f3f60fb2398 data/energizedpower/recipe/press_mold_maker/raw_gear_press_mold.json -7785572be9e101c6dca3978bd6d4679f14c527fc data/energizedpower/recipe/press_mold_maker/raw_rod_press_mold.json -c171c13ea0b54cfa5eef2903f1b324bc0462cfe3 data/energizedpower/recipe/press_mold_maker/raw_wire_press_mold.json -ec7e8c526b5b8030d14422ab61d3db922050d44e data/energizedpower/recipe/pulverizer/charcoal_dust_from_pulverizer_charcoal.json -de47e9801d74faee62ea34b2ed004df076b023a2 data/energizedpower/recipe/pulverizer/coal_from_pulverizer_coal_ores.json -7794f6da5680f84eec7e37d46928da0562c2f6c3 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ingots.json -b2f9d1c3b5327335d545bc19862f133f2a3d72d8 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ores.json -899f127cec4b415f8f30c32ee610f5fbd4e6b525 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper.json -a0e340c68b4b3fac31e5be05c5c2022dee529185 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper_blocks.json -7aa6c2e855e76f5af3b09a255e34007eb567b4a7 data/energizedpower/recipe/pulverizer/diamond_from_pulverizer_diamond_ores.json -e82a5ad947a4a492365d026f02142d1e68578f5a data/energizedpower/recipe/pulverizer/emerald_from_pulverizer_emerald_ores.json -5b0eb64c53bd092b695bd0df8cffb64e70bded33 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ingots.json -b549cab3db7dc66b864b006b3cf393c29df6fae8 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ores.json -3643a3673357414115a953771b1c6ca2cbd1db09 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold.json -62856c63225deae96c0db71b8660662c980c0dbd data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold_blocks.json -37ebc6a2e394031a676f6935de00416ad14560cf data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ingots.json -1d1845a02057a5ccb74771f3c97b6afb4f6acee8 data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ores.json -ad8af154adbf40c79ecc8f3109f30d1cdafe2b6b data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron.json -57c4c30a252c760fe71a831dfce26a35f8111fe7 data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron_blocks.json -fd7a276c4aceff0cf857f65b3b860b85c5349a65 data/energizedpower/recipe/pulverizer/lapis_lazuli_from_pulverizer_lapis_ores.json -5fb7747da48d99843c4592a6f382444338cfb20c data/energizedpower/recipe/pulverizer/netherite_scrap_from_pulverizer_ancient_debris.json -79449ac6beeccc29286f2aae2aff11eb354f9c04 data/energizedpower/recipe/pulverizer/quartz_from_pulverizer_nether_quartz_ores.json -89dfa64dbd53a5d4799fd46d99f7e39377ca96b0 data/energizedpower/recipe/pulverizer/redstone_from_pulverizer_redstone_ores.json -f52f314239120c832d0e5a6a0958c130bf4be7ae data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin.json -4096cb64be3b47630b8b4034de7b8c00ef8990aa data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin_blocks.json -c78327031334518333f8eb888fa5c45e68b54637 data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ingots.json -e1ef49f37b483f13bd5fc1061e79e07fe08dfdcb data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ores.json -0745aa32bae0c08fc510b5bd2bf8e6cd8b52121f data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_boat.json -4ed8f78b5154effb19da70a8e15a95d3c9c52ab4 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_chest_boat.json -0adb6bbb928e286d5ad0fe34f30fe01c97d4e359 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_door.json -66e2fb4f614ed32e0651a2d27e2a7f8a26e2ebf2 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence.json -92bd9bf5a553e9309133a42fa90e394d3c9cb4b1 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence_gate.json -6cf75acbe00a009ad3962f660e555310a18496b8 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_logs.json -002f7f2a490df22d2d3cbf6964851b4af4e34a07 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_pressure_plate.json -46a58628bc6e9d1cbef1313e3338cd999269111c data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_sign.json -2873f575a4a9369fffbd81ebd2cdb0153edacdd0 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_trapdoor.json -fd08719565800b7565e3e1c50f505cba41ded085 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_blocks.json -5faab46efa86da0fa033ed30273c2da01b48a4e2 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_chest_raft.json -c5646be206582454b232eb3f4f4efd608faf0513 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_door.json -df6a7366ac931486ee805a7a16779d2dd2582d6d data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence.json -61c7d39a950cdd9f48c1ed49d8277c3bded9d4ab data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence_gate.json -5ddbe42ab983900be87acb4fd3455b013d52619a data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_pressure_plate.json -0454157e9157af6caf519e2aee3629ae8cd79c98 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_raft.json -1460f2f31cbb84e3f8b607630d38687f6aa95c53 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_sign.json -e5d61488f9d93b6a72c3eb547b9a1d8d445a557a data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_trapdoor.json -065887ed5451e4f49db78987ff33bff5dd8d7d11 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_boat.json -6805bcf629c91d3e95df77ccfc6fc5096c9ecc41 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_chest_boat.json -5626c045bf239df995e2cd21151bb6acf3d068a7 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_door.json -23f299fcf80954d2fda895bb51e00c64e9f9eff5 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence.json -252f2706d8ae96e1f1f9bd3478db7003d6e1ec98 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence_gate.json -16e3e7eee167a81305e60ec802e4426ceef65a73 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_logs.json -3c2a733a687e31246310bd1beefee92e2983a1b7 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_pressure_plate.json -4280537a459fba61f53ad140cef10f22dc5d13fb data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_sign.json -41d0653c37ed82cd1478f67038428b45dbef5a78 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_trapdoor.json -0d9ae44034fd65f1e701a160796d7143e0d08d40 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_boat.json -5b0208f8d9bf788689150d2f9922d9714ce46eef data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_chest_boat.json -7dcf27930eec7c808943875a4795359fa59470f7 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_door.json -e8ee8ab49e5a475d6f36e190e0ce74d4c944cc29 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence.json -c191e502bf8f0f433eb1a9a5a740c0c61a8c2d07 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence_gate.json -c8bbf23a85a31968b6e4506783eaadc3ae3ce62f data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_logs.json -fa8d3bf0ac369b9d49c8cd6eca6ff0239c38d37b data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_pressure_plate.json -6d06f4d3c26186e6b45a0436595aed3047015b45 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_sign.json -4272285c7099c3f8011ca8fe11163fed44c1a5a6 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_trapdoor.json -899bc0c384ac46fe4f25899d6817c0035c650fc9 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_door.json -adf39d8ca9a19ee7d68889b5f5ed325a3a545f19 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence.json -889dddf8f4ad7b375544c68ef500cc9dfb31976a data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence_gate.json -5f507ea8fce6ee9002a41ebc25d81fc5e9fecca7 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_pressure_plate.json -dcde1b1fc2ee82403af9fb160907c2dfc4284283 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_sign.json -25eb55f9616f317d55f166ba7ff395d847ce6e2f data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_stems.json -3c35f85d34578fdfbb9daf8c06cb6ab7f03c211f data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_trapdoor.json -a17ab211cf76e0c67e0731ca4b8f021184c6db21 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_boat.json -76a0669f9ade464d22d03e0ae4d45364d44be11c data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_chest_boat.json -daab989f42d53a802c0ca766bc75defed3016d92 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_door.json -c589f9b610ebbd69ffa7cc76833052e86f9cd3b4 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence.json -a2e114dd90573caa469aaa14b27df51c4cf6dd24 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence_gate.json -3fffdc5f72a4defc60cf9c9c9ca0116603a9a0cc data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_logs.json -f24239f3915d7efccf5a6aa73d9ad2de5cb611b7 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_pressure_plate.json -ab852a810eae9b8bc1919fbb65e0513c60503677 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_sign.json -924b1ad88ebfc3284b9f6e791b36291b6cc589d2 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_trapdoor.json -24973f15d68e9943fb398387cd8ab410eb139ae1 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_boat.json -6247f8f07696fb8fd4a7caff112c47f1b9f25720 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_chest_boat.json -26469a754e76f94e305cb4820a9d628dbdc306cb data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_door.json -65b040eb0d096f10759296522ede35e2165dd310 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence.json -500f0a99dc643eb284c51374e66355dde25f6df5 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence_gate.json -02311b1797029f28d5b8961d84c744377e521cb2 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_logs.json -25cc13eaa9d99130601689092f6b73a4b789d6e7 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_pressure_plate.json -40980fdc7171ea397824ad44a4dae7f3894b0e44 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_sign.json -e385b1179fba5eb644bfb2ed929d14347ca9cb8d data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_trapdoor.json -8f0f90dd8d959b2057f02d922c3ca8804a685789 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_boat.json -169d589b11ea6696526141a0870e989c24ab4a42 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_chest_boat.json -2c19c6b21701eae09264c0918ea5985a3f53d122 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_door.json -8addf6060bea456ea84d4a1c5fa4e52f877e21eb data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence.json -faa1514cb3b808175a546e5a0c641e1a41d4bef2 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence_gate.json -3fc2b184bcbc0c30bb8be67aa066218d34941065 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_logs.json -4eb28ff5f2d7ec0241bf65608155cda37068b427 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_pressure_plate.json -d1d8f07f8efb27d2295d31eb260e829e9855f1aa data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_sign.json -bf7af6b2f0543e35495cc6f8bbe9c1a4a227ed8d data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_trapdoor.json -12dc3bdacae349546d7ee3e5a70b44334fc24c31 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_barrel.json -93bc05ea369eb46385c02ef09ac0db6124555111 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_bookshelf.json -bd4662099b476059e80e199ec2f0d1e51f668043 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_cartography_table.json -3d2e07c7106a1ca598ccc10873835f739058cee1 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chest.json -b76abb9ee9a4b473196b2a256df92c734f51adaf data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chiseled_bookshelf.json -e02ab75ae22ef1b49f0dbfb8b287409de8c03bba data/energizedpower/recipe/sawmill/oak_planks_from_sawing_composter.json -cb77fe134978aad8dc16774124109c9f5d530b83 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_crafting_table.json -a767196861bb403659a41d0c6033570df880eec8 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_fletching_table.json -b6910fb1a1f0f9f1ae0511eba9937b684c2da2c0 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_jukebox.json -ae2b3058b6d8534656e3f6744d2de83fc5cd865a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_lectern.json -7c90b31b4065100957c5ee54708c524669426b69 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_loom.json -0e6ba5e9a3109214c32dadfb7541a2be664cc540 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_note_block.json -55a514b5874a9b08397d593fc42a5d60be5b0bf7 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_boat.json -b48434fbf80dcc9b1e1cd5f9e42d2ccffbf7d362 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_chest_boat.json -210de4176fefc00cbc1739d48dfdb3945c1d279c data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_door.json -2a483be535ed49119c2c4eaa82787f017f38b582 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence.json -30b27e9fcf5c8cbf20b4dde33b3a1993d79e67f8 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence_gate.json -17e9d5d62cd53651329145bc5901eb6655ffeab8 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_logs.json -8973ee9967b897409aca6881b69433cb8bfe70ca data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_pressure_plate.json -08e2a9931e942ca0e10f468fbc833c188776dc94 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_sign.json -5d4d34ba557dadc95c15a797d12014cd6181deef data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_trapdoor.json -a124b79db0999287ee667ad492e9ac74dcd69492 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_axe.json -823af322d87b232e6edc93ae6341e0ab3fbc5870 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hammer.json -7483fd6588e3a25d727a23002fe4f93290dc1f6f data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hoe.json -064f9bad1a81b39d19fc5e7bed5c45d1bed7c3e5 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_pickaxe.json -5306ffcaedfbb09380bb440b05b3acc78870e85d data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_shovel.json -a46ff2eb3a9f516378c9cc6382a84b51f546e7b7 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_sword.json -da3fc53aed23919a206c6110b1a6c34d34090614 data/energizedpower/recipe/sawmill/sawdust_from_sawing_sticks.json -0d20d993a1a3aa485c2733680e75d3ace6ee820c data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_boat.json -82e8d9646c0b19ba2f3cb3569e541514f6907524 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_chest_boat.json -9e355808fd3608e6ca38e4ed5256223d0a57dff0 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_door.json -6acb074a1a0fe36e36ce795f9d02e27f5801b40d data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence.json -32458b747135f79c223ed50f422ab6aea67a6bdb data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence_gate.json -5bf0d61ae45b5087e2ea346f5395f59f7d7ed2c0 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_logs.json -a65721becdaccdf8f4b45ae921d473094954fdd5 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_pressure_plate.json -29e9cfb0f0e593be048cf4d246637bd88650c415 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_sign.json -748b587979df61acd461ffbfc57d30ce163caab0 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_trapdoor.json -9bce5b46461ba6161b3445f3e3970aadd3390f08 data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic.json -cc1a88ba6493addd3ae0ac507dd54d8f9d08fc09 data/energizedpower/recipe/sawmill/sticks_from_sawing_bow.json -25e3ef4cac03e34d4037d870e4b30025e259e284 data/energizedpower/recipe/sawmill/sticks_from_sawing_bowl.json -4822eb4a84bc07af980bf0ab968d8b2db22de160 data/energizedpower/recipe/sawmill/sticks_from_sawing_buttons.json -8c46095ebf2ce7ffa37630b09349a699d31642a6 data/energizedpower/recipe/sawmill/sticks_from_sawing_fishing_rod.json -69875432382d8e8e177fb750df41201d2fb17903 data/energizedpower/recipe/sawmill/sticks_from_sawing_ladder.json -5a6b63fbabf0d4cb9e2c1dd8da4667bb482fae32 data/energizedpower/recipe/sawmill/sticks_from_sawing_planks.json -9a6c21b5dcd6f32841dda8608103036c99673acb data/energizedpower/recipe/sawmill/sticks_from_sawing_slabs.json -e13c608081cf6d612f413555e23827b5667d6ca5 data/energizedpower/recipe/sawmill/sticks_from_sawing_stairs.json -8a71e61a5645f1af4e47b4a301787567b54e9cf7 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_door.json -4a32abeab3fe6c6bf64e6b43864b770e8ab92b28 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence.json -668eaea04be1aca75c9bd3942651ba9015c0dd84 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence_gate.json -15aab38732fef2d9005979168b25f36b1d37718d data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_pressure_plate.json -8b30c0b214707f960004256f35863bcf0ae5d7bf data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_sign.json -61fcad1b8a26b57f1ee7e25fdbf3060c43221295 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_stems.json -cbbe26a66082ec51b3021b3e58c4065dd1a653a7 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_trapdoor.json -b61221713d63e43c131e5f35ad5054d6c9ed3903 data/energizedpower/recipe/smelting/charcoal_from_smelting_sawdust_block.json -78f28e3d3f3cec5895af702d044e1bc5a187febb data/energizedpower/recipe/smelting/copper_ingot_from_smelting_copper_dust.json -8f0c674bfb6a96bf03bb69f1f8ff8f037d24006e data/energizedpower/recipe/smelting/gear_press_mold.json -a957b63c79cc22c3da7835f4fcca8c6baa7c7ffa data/energizedpower/recipe/smelting/gold_ingot_from_smelting_gold_dust.json -5cdcd7eeaa1045f4835d89c31404d2437a5defd5 data/energizedpower/recipe/smelting/gold_nugget_from_smelting_golden_hammer.json -0973dce43f86b87396de7ceb88203bffe5c251b8 data/energizedpower/recipe/smelting/iron_ingot_from_smelting_iron_dust.json -ce0bc652e6ab1afc8597298db7e234328fadced7 data/energizedpower/recipe/smelting/iron_nugget_from_smelting_iron_hammer.json -ae6abd6b6af7dba7b922daf86911ca67ff47f9c4 data/energizedpower/recipe/smelting/rod_press_mold.json -da870717520d05f7a9a921ff56761a84f9ebb81d data/energizedpower/recipe/smelting/silicon_from_smelting_nether_quartz.json -9e5229409b92977bf9241f3de00c5bd878638063 data/energizedpower/recipe/smelting/tin_ingot_from_smelting_raw_tin.json -fe468f13e5d97ad5744a78326918228fdbb600ab data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_dust.json -0243bf6fb3cd0b967e8235d05f5ef4eafe34014f data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_ores.json -e7d7a9ddb02651815e8a9e50d2a4805d76311a07 data/energizedpower/recipe/smelting/wire_press_mold.json -ca3410efb6dd94e31d9d900e06fd2f8672dd096f data/energizedpower/recipe/smithing/netherite_hammer.json -1a390e1e19addcab5ff16d7d440ac01f4b4ff7a7 data/energizedpower/recipe/stone_solidifier/andesite.json -882762de9f2e9db993ff90f2522bd7912ab5c5fb data/energizedpower/recipe/stone_solidifier/blackstone.json -b9bf04309a7dd99df2b0db778163a62e700c9d9a data/energizedpower/recipe/stone_solidifier/cobbled_deepslate.json -406c0e4be96204f4016998d09ec1877e5099bbf5 data/energizedpower/recipe/stone_solidifier/cobblestone.json -20dbcf7a35ff3864bd32cfa9cadfd85c31314664 data/energizedpower/recipe/stone_solidifier/deepslate.json -ea8722357a26471c5750006d7d437cecfcb4b32e data/energizedpower/recipe/stone_solidifier/diorite.json -9305ca13d436583a9c4e873bbbf09b7f0c3e8990 data/energizedpower/recipe/stone_solidifier/granite.json -6e4f50bee85da3e4d39907765c6eece60f028be3 data/energizedpower/recipe/stone_solidifier/obsidian.json -001c11e97bbd587812128f6a696b73a4833165d0 data/energizedpower/recipe/stone_solidifier/stone.json -536bfba9b3ea54fdbe69afe64ec64cdf1a0c198a data/energizedpower/recipe/thermal_generator/energy_production_from_lava.json +f38cb6f78ff9f3fb48a50bf6cfb581beed9315ca data/energizedpower/recipe/crafting/thermal_generator.json +25a0eb1b9e8dbc7a7ed5feb26398543e1f678d4d data/energizedpower/recipe/crafting/time_controller.json +34688e82e9a5c72e665f7bc59c21fd54406dff6d data/energizedpower/recipe/crafting/tin_block.json +16b4f5e6bd05bdf7854e6bab01251b80f71f36af data/energizedpower/recipe/crafting/tin_cable.json +04539d004e83e2b4123e5a64a6293b9f97cae638 data/energizedpower/recipe/crafting/tin_cable_using_wire.json +f5fdf5f4713d8b3e0883c5f2b010654eed62d267 data/energizedpower/recipe/crafting/tin_ingot_from_nuggets.json +64af02eff251c34f4b3945fffd403c0d7aedc051 data/energizedpower/recipe/crafting/tin_ingot_from_tin_block.json +c6ecc738fd6c6deac0f78187d9f582166ce30b36 data/energizedpower/recipe/crafting/tin_nugget.json +95f27aa1bbc1c407abc3a097e3d6a5e3d1a10509 data/energizedpower/recipe/crafting/tin_plate.json +4a1bebe43867f75c7fb987c0289491aa7e8e070c data/energizedpower/recipe/crafting/tin_wire.json +e10ddc45c93ec733caa24f750a69e6ab5dce3099 data/energizedpower/recipe/crafting/uncharger.json +c4b9f9e5f42e0a0041764b7569aaae91a76b9818 data/energizedpower/recipe/crafting/weather_controller.json +889ffe94777832e0ff030db133cb103fe266476d data/energizedpower/recipe/crafting/wooden_hammer.json +9cb304bc1bbccbed6adf2dd1f844184f767e75dc data/energizedpower/recipe/crafting/wrench.json +80658c712783fdaee0db6a3e6f051b645bfd0d87 data/energizedpower/recipe/crusher/andesite_from_crushing_polished_andesite.json +0aa61f21695d08612d07978828802414d6416348 data/energizedpower/recipe/crusher/basalt_from_crushing_basalt_variants.json +2bfc6d54f693f770d1150b3d6b09cbd784a41f0c data/energizedpower/recipe/crusher/blackstone_from_crushing_blackstone_variants.json +ce7592c84e840556007bb884088972cfd0dda7fd data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate.json +3889bef287363975c2250d7edc9d66c71432f4e9 data/energizedpower/recipe/crusher/cobbled_deepslate_from_crushing_deepslate_variants.json +d49d3397d53c943b8d3548da3a0a626427c8a547 data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone.json +4cf488321e9e0e16c5a03003f06af4484d7502d8 data/energizedpower/recipe/crusher/cobblestone_from_crushing_stone_variants.json +fcfa55cc21d2431deb57a6980a5c8155fbe8bbc2 data/energizedpower/recipe/crusher/diorite_from_crushing_polished_diorite.json +6bcc2907d492cf3588da4a66b89c04659e2c22b1 data/energizedpower/recipe/crusher/granite_from_crushing_polished_granite.json +9a890dfd39a659563e8a96227523508cc9317ecd data/energizedpower/recipe/crusher/gravel_from_crushing_cobblestone.json +79946b430317897c0d56b8581856168f78e045f7 data/energizedpower/recipe/crusher/mossy_cobblestone_from_crushing_mossy_stone_bricks.json +2b2ca79d0dcabb4c18a62b71579a9cb4b324fc96 data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone.json +0764f4f5d676cd79c8eb3831d69858a90ab26e67 data/energizedpower/recipe/crusher/red_sand_from_crushing_red_sandstone_variants.json +629f346426abff74f329f225a1dcc0cc03aa6fb4 data/energizedpower/recipe/crusher/sand_from_crushing_gravel.json +a0b1237e9e957733833a88ce9e3f1bd556c0b6b8 data/energizedpower/recipe/crusher/sand_from_crushing_sandstone.json +ca8047740841471f7d03af6d57456486b087529e data/energizedpower/recipe/crusher/sand_from_crushing_sandstone_variants.json +9814eaafd9bea81f0bc3fc0e037a74cb451c9f4f data/energizedpower/recipe/crusher/tuff_from_crushing_tuff_variants.json +500507da9cd1e2dde8b9b0f4a17685b046995d1d data/energizedpower/recipe/crystal_growing/amethyst_shard.json +6dc24e420a22adc8e3e20a53c97e1820d0df487d data/energizedpower/recipe/crystal_growing/budding_amethyst.json +bfd6693814fb243aa2905801fc4a028d9754a466 data/energizedpower/recipe/energizer/energized_copper_ingot.json +f41258f85af37929a94480b3fb103763211d1b2e data/energizedpower/recipe/energizer/energized_crystal_matrix.json +cf44985f419a514e8e37535be12e004e2d2198ec data/energizedpower/recipe/energizer/energized_gold_ingot.json +4b15050f45984d4c4df8c183eec904de152e3244 data/energizedpower/recipe/filtration_plant/copper_ore_filtration.json +d2860ac3b98ce6cac243dcf6ae086db80909a22b data/energizedpower/recipe/filtration_plant/gold_ore_filtration.json +0ad7a2829e7c4568afee9c6d8d3cb0b1b0f4c5b2 data/energizedpower/recipe/filtration_plant/iron_ore_filtration.json +1686b7a9a45c56bcf198876022297e5663529c3a data/energizedpower/recipe/filtration_plant/tin_ore_filtration.json +8549197a25bfd40e34aa8d161b4c4fa4d1b85449 data/energizedpower/recipe/fluid_transposer/black_concrete.json +a1d0134667dc13e566d4b55064ae30ef3a527089 data/energizedpower/recipe/fluid_transposer/blue_concrete.json +ac3d370c39c01a9ba768512890debda36dd1f467 data/energizedpower/recipe/fluid_transposer/brown_concrete.json +5e71746827770cef7a0b3e8a2914f4ace3507bde data/energizedpower/recipe/fluid_transposer/cyan_concrete.json +4e0d87ef9bcc4e878bc6db4215ab4f8b7b853350 data/energizedpower/recipe/fluid_transposer/gray_concrete.json +a0c7864b56cbaa78ad47d96e25570dd846a4e652 data/energizedpower/recipe/fluid_transposer/green_concrete.json +a0566fdd88d4b0be24b29f34eac46c08b2323446 data/energizedpower/recipe/fluid_transposer/light_blue_concrete.json +471f639a1c21f668be5566c517dbf116474930eb data/energizedpower/recipe/fluid_transposer/light_gray_concrete.json +56c32423d72bd15ed1b64690d92492634a6df42c data/energizedpower/recipe/fluid_transposer/lime_concrete.json +f59da182dfd98120194868b16da9ea2ae014b58f data/energizedpower/recipe/fluid_transposer/magenta_concrete.json +26c78a8f675fe89f029c50ef9aef171ee6d36285 data/energizedpower/recipe/fluid_transposer/mud.json +e92803863e8c1f7ba3559949e4bc039e2227dc55 data/energizedpower/recipe/fluid_transposer/orange_concrete.json +8b1cad8c3f9951731db3d8f137b96e2ccf13a1be data/energizedpower/recipe/fluid_transposer/pink_concrete.json +8d7ba0dfa634b6e99faec0a51a657d2b7b78ee65 data/energizedpower/recipe/fluid_transposer/purple_concrete.json +1d5511156d6d3ea9439274ffe3867673a567c59a data/energizedpower/recipe/fluid_transposer/red_concrete.json +1f1edf00987ff4b884c5b446af7dcb8dd4c2c2b4 data/energizedpower/recipe/fluid_transposer/sponge.json +e97c123ffdeed19784b33345424de816dba7d6c1 data/energizedpower/recipe/fluid_transposer/wet_sponge.json +7ba1770968f6b736260f11855f2c49efd9a5e467 data/energizedpower/recipe/fluid_transposer/white_concrete.json +c07d4f82b1cdfaa7139d09704ee9149282a6ff83 data/energizedpower/recipe/fluid_transposer/yellow_concrete.json +071ddd9fd7d7f537a14dafee6f0d784978aea333 data/energizedpower/recipe/growing/alliums_from_growing_allium.json +1fc53efc287c667acce95b33ccdc97f92686520d data/energizedpower/recipe/growing/azure_bluets_from_growing_azure_bluet.json +0b61dd4f35cff589b99637eeeddd51e749397419 data/energizedpower/recipe/growing/bamboo_from_growing_bamboo.json +06e86f95dd2da62491e5a03205f02a821e0de75f data/energizedpower/recipe/growing/beetroots_from_growing_beetroot_seeds.json +ed8aaa3d52bbd87adb10ab0330604fc4355f7217 data/energizedpower/recipe/growing/blue_orchids_from_growing_blue_orchid.json +971c08e72e4d1f8de1a8aae77ae7af3e5e067363 data/energizedpower/recipe/growing/brown_mushrooms_from_growing_brown_mushroom.json +2c10daa97b0119ba1a435221e2a6697311f93209 data/energizedpower/recipe/growing/carrots_from_growing_carrot.json +9b4947e2cef13ce50ee9473eb2c3dc711c617c20 data/energizedpower/recipe/growing/cornflowers_from_growing_cornflower.json +372725a771e6ef3b28798159f91d3b4ad06af5a6 data/energizedpower/recipe/growing/dandelions_from_growing_dandelion.json +c806449bea4323fd5a2e51e9aed9224aa3f38698 data/energizedpower/recipe/growing/fertilizer/advanced_fertilizer.json +0460abd264cf53db83e91655396cfde5eeb0f0a5 data/energizedpower/recipe/growing/fertilizer/basic_fertilizer.json +77743b83f06b1b5f6080465529b11c228426603a data/energizedpower/recipe/growing/fertilizer/bone_meal.json +b0b2fd7965d70e907a3d0810a9e9d658bc769cb8 data/energizedpower/recipe/growing/fertilizer/good_fertilizer.json +9cddf20d8195114006c107e28bab1bec305c387c data/energizedpower/recipe/growing/glow_berries_from_growing_glow_berries.json +ff4f5a57e3d717f702ace7e2c7d3cdc1c889f2ec data/energizedpower/recipe/growing/lilacs_from_growing_lilac.json +8744b28c92e1bbe7fb581a5d5b699d0854fc5fc8 data/energizedpower/recipe/growing/lily_of_the_valley_from_growing_lily_of_the_valley.json +6cb90d2c69f077456fd6a556a5985cd127ad6914 data/energizedpower/recipe/growing/melon_slices_from_growing_melon_seeds.json +3efd01b3b5b0e75a85dae4524fba59e18a2dc819 data/energizedpower/recipe/growing/orange_tulips_from_growing_orange_tulip.json +224039e2af168b44fafb4cbd75a6a6c90405b764 data/energizedpower/recipe/growing/oxeye_daisies_from_growing_oxeye_daisy.json +0699b104aadf89d3aac978c4f9ad10c18ab0dc4a data/energizedpower/recipe/growing/peonies_from_growing_peony.json +dbb10fb5fa4e0a733162aff5c8da8678bd0358b1 data/energizedpower/recipe/growing/pink_petals_from_growing_pink_petals.json +fcd3a81ee8dfb1fe27d3d5e189cf4489102e888f data/energizedpower/recipe/growing/pink_tulips_from_growing_pink_tulip.json +82ccd436a20b6469f44fb85eba509f63475bccab data/energizedpower/recipe/growing/pitcher_plants_from_growing_pitcher_pod.json +1b928c1a5e176b92cea392c2ddac2c399a1224e2 data/energizedpower/recipe/growing/poppies_from_growing_poppy.json +766a94fe9fa6b8f74173fbdcd046f0379d5f1f79 data/energizedpower/recipe/growing/potatoes_from_growing_potato.json +57cd6679efb7caf85f03afe8d2419d504e09c85a data/energizedpower/recipe/growing/pumpkin_from_growing_pumpkin_seeds.json +b4ddcb268bac50805ab6aebe443a685512559dc6 data/energizedpower/recipe/growing/red_mushrooms_from_growing_red_mushroom.json +069b68699117eecd0cdb61dabb66f2e1ce4665b5 data/energizedpower/recipe/growing/red_tulips_from_growing_red_tulip.json +5832218e8d5b502f263b1464be8edc196736c330 data/energizedpower/recipe/growing/rose_bushes_from_growing_rose_bush.json +615bdfea573b837d13e926f558b4370bb9d83ab7 data/energizedpower/recipe/growing/sugar_canes_from_growing_sugar_cane.json +4ff5b3533c02a02e149d3b76fe4c0065f8b22850 data/energizedpower/recipe/growing/sunflowers_from_growing_sunflower.json +053d5ca7f5f83b637ce09a4262705f2d4e6cd0ff data/energizedpower/recipe/growing/sweet_berries_from_growing_sweet_berries.json +7c055740946b78ee4ac41e80b2acff55f1091bcf data/energizedpower/recipe/growing/torchflowers_from_growing_torchflower_seeds.json +89e68e263b159e50a8d9674656cdb137e796e413 data/energizedpower/recipe/growing/wheat_from_growing_wheat_seeds.json +34cf2ca875f9d4a27b3fcc4e069ac1f21d6eb9b4 data/energizedpower/recipe/growing/white_tulips_from_growing_white_tulip.json +d3758fa9dc69db9df07786569ab826a38023d466 data/energizedpower/recipe/heat_generator/energy_production_from_flowing_lava.json +7563da4fda255f4f3cb7239c2382192158854c8c data/energizedpower/recipe/heat_generator/energy_production_from_still_lava.json +b0b08a27a1db9e6d49aeb73b4c57cbb4a965bbfc data/energizedpower/recipe/metal_press/copper_wire.json +1eb3f4ac556991a0b650f59e4746fe4e061cbbfd data/energizedpower/recipe/metal_press/energized_copper_wire.json +7121f1df93f4f242132c831a3912206143a635a0 data/energizedpower/recipe/metal_press/energized_gold_wire.json +108db2f98103a37632dc879b37e5790d85b98a87 data/energizedpower/recipe/metal_press/gold_wire.json +5f8bad207d352e5429f14b45689bdd44fcd7b7e9 data/energizedpower/recipe/metal_press/iron_gear.json +a363b8bdd6ab29a44e6fb8dc9ba451b39a1bcf3c data/energizedpower/recipe/metal_press/iron_rod.json +db087ef618cc0ed98dc7156de628bf6bdf9f44e2 data/energizedpower/recipe/metal_press/tin_wire.json +fad18b419c25b8e2e471c441f4439cbb42f848f4 data/energizedpower/recipe/press_mold_maker/raw_gear_press_mold.json +b9a5e84cddd9f3a3acf7f3eb598f01acebbcb192 data/energizedpower/recipe/press_mold_maker/raw_rod_press_mold.json +c627926293185882b0e55249e66f81334e05c903 data/energizedpower/recipe/press_mold_maker/raw_wire_press_mold.json +eeb56a2e25e2dbb74af7e2b8b45954521ace6123 data/energizedpower/recipe/pulverizer/charcoal_dust_from_pulverizer_charcoal.json +500ca2af144b4c692366b184f086ebcca8210c05 data/energizedpower/recipe/pulverizer/coal_from_pulverizer_coal_ores.json +fc5211ec0f10bbc49ddbf0ccb0af665eba0c4c03 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ingots.json +98d5390ae73b774d49c84ac4e4b0c1bd6d1564bb data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_copper_ores.json +15614b48e28a465d80b16ca339af11110f96cd9f data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper.json +4dd44f7fb9a85b24a9648aaaeeb8c94cc0f23359 data/energizedpower/recipe/pulverizer/copper_dust_from_pulverizer_raw_copper_blocks.json +69807032765d3bb2f1338d5ffbc56f1209c8c0a1 data/energizedpower/recipe/pulverizer/diamond_from_pulverizer_diamond_ores.json +0900d1a8c8463f941af5b270971ac8b482aca301 data/energizedpower/recipe/pulverizer/emerald_from_pulverizer_emerald_ores.json +0a4179086a5965bfef1d9e5a1c15d295c992533c data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ingots.json +3abe4dc6f55c9946eed61355697b76ec78d4ce08 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_gold_ores.json +4f8448f83034e022f7053a53abb4c6aa0f2a1473 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold.json +df8d1b49552807525456a9aefb8a559b34f58fd9 data/energizedpower/recipe/pulverizer/gold_dust_from_pulverizer_raw_gold_blocks.json +9773fec9f6dab3fedda1cfbda2bfbc3b291d7b2f data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ingots.json +a48695983233fa17784412f9c54cdfddb46b29a2 data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_iron_ores.json +2f148d253c491747755275e59f92c138933fff9d data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron.json +bc4b82ef30b1c3b96be54b3a226e8556c8a14398 data/energizedpower/recipe/pulverizer/iron_dust_from_pulverizer_raw_iron_blocks.json +3f64f60decdeb55a91d2767d4a0478fee053cd84 data/energizedpower/recipe/pulverizer/lapis_lazuli_from_pulverizer_lapis_ores.json +16fd5d7677b8bbe21f5bd970e9ebb728fb6f716a data/energizedpower/recipe/pulverizer/netherite_scrap_from_pulverizer_ancient_debris.json +4ab38ca134db9e58b8b0b4764a67c04cb285503c data/energizedpower/recipe/pulverizer/quartz_from_pulverizer_nether_quartz_ores.json +93ecc19f4ea4f5633d52636bf70410a1b1eb4762 data/energizedpower/recipe/pulverizer/redstone_from_pulverizer_redstone_ores.json +ac403c47d3544cd2b22725ce6a0fd6b4bbdae970 data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin.json +d6495cdde93a587cdab90c1770a5b4a677cdf54d data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_raw_tin_blocks.json +ae2779a90ee587a5e22dd25144c3c8dbd03ce30b data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ingots.json +1078a56e450a9ae9fd39304445ae7a1bb942b6f5 data/energizedpower/recipe/pulverizer/tin_dust_from_pulverizer_tin_ores.json +207abb45ba9c73ad9042e8b813e47290b21f55c4 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_boat.json +9c3d0ee741f384dcc0634304610942379c727c1b data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_chest_boat.json +444dbcf7bfd640053e2bf5796e7f23bc5c8e4252 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_door.json +867e7167a690f8b9d46772f0882cb87b7c6ad46b data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence.json +917fd159a28a27e938f463bbcd9d59a7e1398805 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_fence_gate.json +a0b075e8213d3457e506b54cf7b5cf3b3db2c25e data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_logs.json +80e04582d4e340f1059675804a9f56f86d61b60b data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_pressure_plate.json +7c0f04a86317796753dc04edcd632f23cf490ed5 data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_sign.json +ea6e5bddbf171259c8ebf29bddffb8c1529661af data/energizedpower/recipe/sawmill/acacia_planks_from_sawing_acacia_trapdoor.json +c6463171686793151fd744272e7e4887b0c0454d data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_blocks.json +3dac9b248ab1fc7fc121c91af106325f457d19f4 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_chest_raft.json +a9d267f17b690097684ecd5e775b94f4bc2b0a22 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_door.json +62c8eb5656f1e531ffe2fb99bb93ec45f2d22f28 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence.json +3a6e94252b9d9f25c2681b9ecc4f9a678569be88 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_fence_gate.json +c2966404bb90194fbfd16cab2ac08bfbec3de5ac data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_pressure_plate.json +3a4568006e67c7c68b23e065f20b97e676a2b96e data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_raft.json +ad83b5b1169e6b2211b3abc4a1aa26f9e9119430 data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_sign.json +19e7127253a9a6296c8f662b6cd66c35a286d8ed data/energizedpower/recipe/sawmill/bamboo_planks_from_sawing_bamboo_trapdoor.json +f3ffed9dc855c4899d8d3a07a5f8b56f3377cb54 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_boat.json +20b174019153e79e2a53d11dddb378784995d4eb data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_chest_boat.json +2edd3e4b1f8ca675ce5c2bd11a4a3f6d0197e31e data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_door.json +3d026ab9c17794f752264eca135f3bbef8cd8dd1 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence.json +3be4e7de54f46327c8dabb1196687dda65447fa8 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_fence_gate.json +9025c3a4fcda98fdb4044214337e76f436ae75f4 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_logs.json +031801b83f5ea89492b8807568e722601b2f2d86 data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_pressure_plate.json +0b590fa3a2cd3c55d3bfead1d76d0da642e6b0bc data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_sign.json +ca1d0eae3e8dea18bd9251e57fec88a8c003cb1e data/energizedpower/recipe/sawmill/birch_planks_from_sawing_birch_trapdoor.json +c238119c281f44dcc5f8d4e07398a2d417e8fd84 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_boat.json +2204f934d2e458fed0288f99fda2a1d35fd6554e data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_chest_boat.json +08ab5d6872b920069000f8c34f978c50f1cf1279 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_door.json +249854b21b23e1e5da3e7013fda64995b1f67a80 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence.json +2aa7d558bf43803b2c41ca632fc5fc1c2f61cdcb data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_fence_gate.json +ef01656ba5e6bcd1c9e2f333367840a25a6062d6 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_logs.json +94f05159af2fbb6bb0b0150b527d363ae8a9c9ca data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_pressure_plate.json +e44e45ab6196760d7a788e12a956b9eaa92d8029 data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_sign.json +786cab9ce4c352ed24012a1fbe0b006d9b5136da data/energizedpower/recipe/sawmill/cherry_planks_from_sawing_cherry_trapdoor.json +b12d6a6a8fc4218f9002515f4f73fe4498ba9e0f data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_door.json +ad76e020c4e21404341beb5b51901d5b97dedb23 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence.json +c5657d8820e7e661fcf041d172f9da052ce16f17 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_fence_gate.json +a6d0f2476be322593c90abda37546c77534b8c0e data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_pressure_plate.json +b282a3fec39412c721a7b3030cab29567a3620fc data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_sign.json +73f0bd9de7f7db0e60ad040db8cff9b24ba45de3 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_stems.json +28e19e0bb0d8da55eeb3187f0384015a6a85d765 data/energizedpower/recipe/sawmill/crimson_planks_from_sawing_crimson_trapdoor.json +e66453cc10f6ebf6f4cc270ff8933af848e2d340 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_boat.json +8613a067f8e99f98a6392e104420187ab4a2bb1f data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_chest_boat.json +3fcb00c29425812bef3a7d5f9fe4f87fae48e525 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_door.json +cdcd6d33e9b3631b5ae487bbdf204b50fc3b5f67 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence.json +08db1103f03bf81f9e6394bc205e1f734f50d463 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_fence_gate.json +f9a824bbfbecc0e3793469ca19b1ef7b465b38f1 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_logs.json +b3f02ac2ad35115fbdf05ffcbb53fc324cf0b82c data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_pressure_plate.json +5b8da25d4a63dcb9601d92292e1c3f67f8fe3fda data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_sign.json +a018ff092cb050aea000c2102045a4c256d63bb6 data/energizedpower/recipe/sawmill/dark_oak_planks_from_sawing_dark_oak_trapdoor.json +2c5f57f1235bd494e4ee067063ccb66f8106e992 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_boat.json +2328f1c05dbd32e49adff4f5d6638eab442b2439 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_chest_boat.json +4e33c044096ebc52ccc024ca9531b80182f7cebc data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_door.json +9295206fb8a6352f0d431c79fe78453c71a08c7c data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence.json +7ebade0dd09106e55d1aba2a104ec3b7c32bd32d data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_fence_gate.json +d646e60125f6b0cb940e326dc740eff8fc8d0f6b data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_logs.json +fc082ca18d113413400919cb63a6d2d9bd707f09 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_pressure_plate.json +42158aa523e9b07a4eb72d153c38aa2b39cd57ff data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_sign.json +c81ce0e4e322a32852e6b6ab1499c3cbbbe964c6 data/energizedpower/recipe/sawmill/jungle_planks_from_sawing_jungle_trapdoor.json +c97eeb59ea706cda3b90185ffdc43118c7b70552 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_boat.json +d17648081eda6023d8da67140496d0eea0603ae8 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_chest_boat.json +6f318ef284764791254d452699eb5ec7b1df16ab data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_door.json +30eaa4158c2f312f2d8941eb2b0d4ba830f471a2 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence.json +2274d4eb8de63f2a06b25a368b7ef4b455f8a98e data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_fence_gate.json +6e257a2723f6a7b588958378de77931e54fb184d data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_logs.json +9575a805e9d8f669989fb45fec56bc821c11bc0d data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_pressure_plate.json +fd874b59e6ecf81d209412de3ce23d7436270e42 data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_sign.json +4b570b168fb09b49283d9960bf5f43214becf25b data/energizedpower/recipe/sawmill/mangrove_planks_from_sawing_mangrove_trapdoor.json +ce04ec6d4cc5054a54e1f3a175362fe5138c940b data/energizedpower/recipe/sawmill/oak_planks_from_sawing_barrel.json +064ca60d9d71dde21ad51bc60e7de97c3001de2a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_bookshelf.json +8bd52b9808f69521336c39e356ea7f613c500387 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_cartography_table.json +db5ca3efbbb29a9e6248aeb58ae9dc1ea8836909 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chest.json +97f17d5357f7af4eb2df6bcfc668534fe9a8430e data/energizedpower/recipe/sawmill/oak_planks_from_sawing_chiseled_bookshelf.json +3dded8ebae4e31d7bfe3e8a271bb73c667b499f8 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_composter.json +9d6782a075dadb8c6696ee11f5e449a7401a1270 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_crafting_table.json +1327cfed9d09884b9f74643637d5055f5b924d0a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_fletching_table.json +fe8cfbc9f172285c36bedf23d6076bc2cf28f5ee data/energizedpower/recipe/sawmill/oak_planks_from_sawing_jukebox.json +adfb64ac8d752d8fd44984f69912d67741aae25f data/energizedpower/recipe/sawmill/oak_planks_from_sawing_lectern.json +2e3122cc422ce1f185540792406336fa348e69e2 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_loom.json +340a803c83ce7559f45d00a50a4f2e0011a0d44b data/energizedpower/recipe/sawmill/oak_planks_from_sawing_note_block.json +7a4f5fc7d4b7ecc14421219ce355cd651958f685 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_boat.json +8d70767507857c9caa7c45f9ac3adebce85349ff data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_chest_boat.json +d53d75184e7f6f89a31cb9b34c2ba9bff1cf012b data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_door.json +5313269a11053f2ad94c6e1dd4331dae37e1ca66 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence.json +1e80012adaff6c1bcdf74cf7b03db03c7bb64496 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_fence_gate.json +09d43fa0bdbae6b9943aa6842f6ee95e221e7b2a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_logs.json +59b8d21f4471a8bf440ea88b6d5dd65f74a932fd data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_pressure_plate.json +78c00ea93df2e7485e23e487aaef187410f46516 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_sign.json +0325c05b723206bd92dbe2d8c41aa20b4e1699ba data/energizedpower/recipe/sawmill/oak_planks_from_sawing_oak_trapdoor.json +89e6952cac789fc5cf3f5713e2d7766d6770f94a data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_axe.json +2080ee0e0016265c509ebe17f16b498e3397e58b data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hammer.json +3c5afd0a2c8f66d45db8c0932163c043a1c56346 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_hoe.json +395fcb39730398c31c5b4d0cb5d360c1a6beee0d data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_pickaxe.json +5ffeb3ddebdf1c65e4eaef73b45498ed5dfedba7 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_shovel.json +2ea3dbe228757fe06956a107fa3c9e906575bf73 data/energizedpower/recipe/sawmill/oak_planks_from_sawing_wooden_sword.json +0af44c33ec2e50dc309868012c6080d6bc0c92bb data/energizedpower/recipe/sawmill/sawdust_from_sawing_sticks.json +d2f36dc4cd693e8a4c751c8ee41b8a20921ec715 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_boat.json +0140165442f00f4923a1217b58cfd3173dc7c1f5 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_chest_boat.json +30c1e11777d5589c8eaf01ffe237f904403fb9c9 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_door.json +49a5467c9ecfb85ad773bb8b67cdc0e1a13b1bde data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence.json +cd1ecd318e3520940e92f742edd77b979e32bc1e data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_fence_gate.json +aa0868ea2b9410c44a3cd4dcaeaf0c6a0a760f34 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_logs.json +4d6e32e1c163004b92241b03198fd794e48a7968 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_pressure_plate.json +5d07ad49e14ed5bd9a6f832dcf87f0d54690c67e data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_sign.json +0f8af185fadbf5f8f9c3f024218870d282e724b8 data/energizedpower/recipe/sawmill/spruce_planks_from_sawing_spruce_trapdoor.json +d9d82e3474fcad5be4521b1641e6a1377d161c36 data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic.json +7ed5566019122ca4d1cd1843af7e7b046f40cc78 data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_slabs.json +14209b7e1597d14e372d7e6ad1409ecdae379320 data/energizedpower/recipe/sawmill/sticks_from_sawing_bamboo_mosaic_stairs.json +b7724b84d3cb814c74fff1be7038a0abcd820ea6 data/energizedpower/recipe/sawmill/sticks_from_sawing_bow.json +0ad33bb93a148cd37fb8e74971f3525f73f72c88 data/energizedpower/recipe/sawmill/sticks_from_sawing_bowl.json +dfe352f4b70f8d6585d35f2fc7e201fd18e9d3c4 data/energizedpower/recipe/sawmill/sticks_from_sawing_buttons.json +8ff4d3830d52ab15abe2d7560aa20b4fde7db0fa data/energizedpower/recipe/sawmill/sticks_from_sawing_fishing_rod.json +8237900b282bb98ea786e72e3778c75c484c72d1 data/energizedpower/recipe/sawmill/sticks_from_sawing_ladder.json +b8a3d6ea0c7a20c69276ea7e84cb51e77688a47b data/energizedpower/recipe/sawmill/sticks_from_sawing_planks.json +eb731a4d4bae8a3ca888b44c019b7991f7738159 data/energizedpower/recipe/sawmill/sticks_from_sawing_slabs.json +9002cd7ef47562ce823db7fea5c1b6079477de6e data/energizedpower/recipe/sawmill/sticks_from_sawing_stairs.json +2451c386d4b548bd2537170dfd47da29898fb202 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_door.json +bf2a05c216d5254a2179444f731cb4a5a21ef592 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence.json +b47a6bfd112d9203f62ade3c9b5a11a8d0665b74 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_fence_gate.json +0435cbc4a4776419d503f9b0964c76f8072f949b data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_pressure_plate.json +7aded38d090b199daf9bd3f14edb2cb092d0e832 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_sign.json +ee56ed64fee3396a25a861877ac72401b9ce3632 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_stems.json +92096d4cf36a00e7909c26cbeab14259cb866bc9 data/energizedpower/recipe/sawmill/warped_planks_from_sawing_warped_trapdoor.json +48d93e11ccd4c9a68d4f66ee442736728502d172 data/energizedpower/recipe/smelting/charcoal_from_smelting_sawdust_block.json +3289c73dc3f5a1163796113de27ae2c5a3b3c4a6 data/energizedpower/recipe/smelting/copper_ingot_from_smelting_copper_dust.json +87f472dadf1421cd03f6097fa8c6b0192155023e data/energizedpower/recipe/smelting/gear_press_mold.json +b779f590419a8916aeb1b681ccd1a107ee8afbb8 data/energizedpower/recipe/smelting/gold_ingot_from_smelting_gold_dust.json +c0af29b09146e26ce4ff344e615e250e123f7ebe data/energizedpower/recipe/smelting/gold_nugget_from_smelting_golden_hammer.json +25691a326a5fddd2dfbf43aa9ea9046754eb8402 data/energizedpower/recipe/smelting/iron_ingot_from_smelting_iron_dust.json +abf144ea2bce5049971a84fc4a3c1e02ad0d25f2 data/energizedpower/recipe/smelting/iron_nugget_from_smelting_iron_hammer.json +07295055100187bb9a57c6cde904c8a6589e5bd8 data/energizedpower/recipe/smelting/rod_press_mold.json +27d193b9b04218208792d9a226d3d5528c8ea3af data/energizedpower/recipe/smelting/silicon_from_smelting_nether_quartz.json +992a58b9886939fd9299b483c3d8014da6035260 data/energizedpower/recipe/smelting/tin_ingot_from_smelting_raw_tin.json +625ef31f948efe7d57f6e13bb7170ee02f54ae26 data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_dust.json +975c1d684d84ffccda18a7d740232f510b2dc123 data/energizedpower/recipe/smelting/tin_ingot_from_smelting_tin_ores.json +75fc4e75616e578346f0d75975ff8c3599428932 data/energizedpower/recipe/smelting/wire_press_mold.json +8b58956aeb2454aca36e2970e726f763a10a097d data/energizedpower/recipe/smithing/netherite_hammer.json +3dfe16ef5a814dc70911ff82cf55e79c139f163e data/energizedpower/recipe/stone_solidifier/andesite.json +9e60c24a81c4dcbce45c2cdf9f876f0ec82e91b3 data/energizedpower/recipe/stone_solidifier/blackstone.json +896387cb6bc3ceb9d2bfc586a94c9a882e026679 data/energizedpower/recipe/stone_solidifier/cobbled_deepslate.json +ac0f9f5b97b04575deb34282a2994f7a70c1459c data/energizedpower/recipe/stone_solidifier/cobblestone.json +270c22f08289c77b3421392d5993f707e9b97894 data/energizedpower/recipe/stone_solidifier/deepslate.json +88760be68799414d8a8ce6f5b437057f8f55ab86 data/energizedpower/recipe/stone_solidifier/diorite.json +f2dd064ba6d7a3017c4a8508142e64746df486b6 data/energizedpower/recipe/stone_solidifier/granite.json +059518b8c4a6f2b92030b47bf555c1825d84b038 data/energizedpower/recipe/stone_solidifier/obsidian.json +70b3a777af4e1fb4474c936f8182f8f8dad4171d data/energizedpower/recipe/stone_solidifier/stone.json +4d1873e781a2d5d29588a8597c8f77adac5aef39 data/energizedpower/recipe/thermal_generator/energy_production_from_lava.json diff --git a/src/generated/resources/.cache/b3317be5f016ede3a16657368a8ba6418b6d1bea b/src/generated/resources/.cache/b3317be5f016ede3a16657368a8ba6418b6d1bea index e229a83d4..2910b9845 100644 --- a/src/generated/resources/.cache/b3317be5f016ede3a16657368a8ba6418b6d1bea +++ b/src/generated/resources/.cache/b3317be5f016ede3a16657368a8ba6418b6d1bea @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-08T15:51:55.62264695 Item Models: energizedpower +// 1.21.2 2025-01-22T20:37:01.287878143 Item Models: energizedpower 924d24d253d5e8c92cfcd342e35f13f9eb6eb1d3 assets/energizedpower/models/item/advanced_alloy_ingot.json a875e626086cb13fc9cf52bec9d323a84902103d assets/energizedpower/models/item/advanced_alloy_plate.json ec0a6b00d6535d32f24b246de790516aff3c7895 assets/energizedpower/models/item/advanced_battery_box_minecart.json diff --git a/src/generated/resources/.cache/ddb524ff5694e6b8a7add20ed906a5aa3f3d5aa8 b/src/generated/resources/.cache/ddb524ff5694e6b8a7add20ed906a5aa3f3d5aa8 index e1efcf5af..79bd42eef 100644 --- a/src/generated/resources/.cache/ddb524ff5694e6b8a7add20ed906a5aa3f3d5aa8 +++ b/src/generated/resources/.cache/ddb524ff5694e6b8a7add20ed906a5aa3f3d5aa8 @@ -1,2 +1,2 @@ -// 1.21.1 2024-09-08T15:51:55.624873254 Tags for minecraft:point_of_interest_type mod id energizedpower +// 1.21.2 2025-01-22T20:37:01.289081686 Tags for minecraft:point_of_interest_type mod id energizedpower d042174582c5889006d89649caed5acc8e3f05e7 data/minecraft/tags/point_of_interest_type/acquirable_job_site.json diff --git a/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 b/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 index 0b4f767d2..91e62e168 100644 --- a/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 +++ b/src/generated/resources/.cache/e5c5eb35b4ba40351ecb7d9f04c3527f2f5779b0 @@ -1,4 +1,4 @@ -// 1.21.1 2024-09-08T15:51:55.629570379 Advancements +// 1.21.2 2025-01-22T20:37:01.292661438 Advancements f3b8999fc7c12f2fd7f510d35406d677b457a760 data/energizedpower/advancement/main/advanced/advanced_alloy_ingot.json 89c1c7ef87c8c50e1f7dbb67442125e730fa928d data/energizedpower/advancement/main/advanced/advanced_alloy_plate.json de6621b52b3485d7937459c0b49fb544a62858dd data/energizedpower/advancement/main/advanced/advanced_auto_crafter.json 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 a7479499c..dc4743bce 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": { "count": 1, "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 423fa3148..3efb94e10 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": { "count": 1, "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 62b966363..14c9c1cae 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": { "count": 1, "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 93913cc85..b151467bc 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": { "count": 1, "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 8c71a9fc5..217403761 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": { "count": 1, "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 2cbf7c3f6..42d12e8fa 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": { "count": 1, "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 28db39131..8ac51de94 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": { "count": 1, "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 14ebfc231..d6fb93438 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": { "count": 1, "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 31aa0e83c..dcd35be75 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": { "count": 1, "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..1dbc8eac0 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": "#c:gems/diamond", + "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..96357e846 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": "#c:ingots/gold", + "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..507a3c991 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": "#c:ingots/iron", + "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..e0a4b645d 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:planks", + "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 89548bdf2..6b071d2c3 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": { "count": 1, "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 2cf3a8959..d16e731f5 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": { "count": 1, "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 8dc40f47e..cf5ed11b7 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": { "count": 1, "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 d043d38b3..0bf8e3fc2 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": { "count": 1, "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 cdeae2099..b30144dbf 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": { "count": 1, "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 2f4604300..16b86d9d1 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": { "count": 1, "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 ee47707b8..32e698b79 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": { "count": 1, "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 26af85c79..b69c6c8b5 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": { "count": 1, "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 2de7c011f..df4713bb4 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": { "count": 1, "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 be1bcb7e9..9bc202494 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": { "count": 1, "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 9fba9fa52..5d99e11cb 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": { "count": 1, "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 4984c0253..fd8824700 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": { "count": 1, "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 881252f24..049db28db 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": { "count": 1, "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/EnergizedPowerMod.java b/src/main/java/me/jddev0/ep/EnergizedPowerMod.java index 7e0997e5b..7b7319b31 100644 --- a/src/main/java/me/jddev0/ep/EnergizedPowerMod.java +++ b/src/main/java/me/jddev0/ep/EnergizedPowerMod.java @@ -1,7 +1,5 @@ package me.jddev0.ep; -import com.mojang.blaze3d.shaders.FogShape; -import com.mojang.blaze3d.systems.RenderSystem; import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.block.EPBlocks; import me.jddev0.ep.block.behavior.ModBlockBehaviors; @@ -27,6 +25,7 @@ import net.minecraft.client.Camera; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.FogParameters; import net.minecraft.client.renderer.FogRenderer; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; @@ -54,9 +53,9 @@ import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.Mod; import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; +import org.joml.Vector4f; @Mod(EPAPI.MOD_ID) public class EnergizedPowerMod { @@ -384,10 +383,10 @@ public static void onClientSetup(FMLClientSetupEvent event) { }); EntityRenderers.register(EPEntityTypes.BATTERY_BOX_MINECART.get(), - entity -> new MinecartRenderer<>(entity, new ModelLayerLocation( + entity -> new MinecartRenderer(entity, new ModelLayerLocation( ResourceLocation.fromNamespaceAndPath("minecraft", "chest_minecart"), "main"))); EntityRenderers.register(EPEntityTypes.ADVANCED_BATTERY_BOX_MINECART.get(), - entity -> new MinecartRenderer<>(entity, new ModelLayerLocation( + entity -> new MinecartRenderer(entity, new ModelLayerLocation( ResourceLocation.fromNamespaceAndPath("minecraft", "chest_minecart"), "main"))); ItemBlockRenderTypes.setRenderLayer(EPFluids.DIRTY_WATER.get(), RenderType.translucent()); @@ -424,14 +423,27 @@ public ResourceLocation getFlowingTexture() { } @Override - public @NotNull Vector3f modifyFogColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, Vector3f fluidFogColor) { - return EPFluidTypes.DIRTY_WATER_FLUID_TYPE.get().getFogColor(); + public Vector4f modifyFogColor(Camera camera, float partialTick, ClientLevel level, int renderDistance, float darkenWorldAmount, Vector4f fluidFogColor) { + Vector3f fogColor = EPFluidTypes.DIRTY_WATER_FLUID_TYPE.get().getFogColor(); + return new Vector4f( + fogColor.x, + fogColor.y, + fogColor.z, + fluidFogColor.w + ); } @Override - public void modifyFogRender(Camera camera, FogRenderer.FogMode mode, float renderDistance, float partialTick, float nearDistance, float farDistance, FogShape shape) { - RenderSystem.setShaderFogStart(.25f); - RenderSystem.setShaderFogEnd(3.f); + public FogParameters modifyFogRender(Camera camera, FogRenderer.FogMode mode, float renderDistance, float partialTick, FogParameters fogParameters) { + return new FogParameters( + .25f, + 3.f, + fogParameters.shape(), + fogParameters.red(), + fogParameters.green(), + fogParameters.blue(), + fogParameters.alpha() + ); } }, EPFluidTypes.DIRTY_WATER_FLUID_TYPE.get()); } diff --git a/src/main/java/me/jddev0/ep/block/AdvancedAutoCrafterBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedAutoCrafterBlock.java index a5981f59e..3fdf35f47 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedAutoCrafterBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedAutoCrafterBlock.java @@ -25,6 +25,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -88,7 +89,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedAutoCrafterBlockEntity)) @@ -96,12 +97,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedAutoCrafterBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedBatteryBoxBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedBatteryBoxBlock.java index fd2099349..62f95909b 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedBatteryBoxBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedBatteryBoxBlock.java @@ -66,7 +66,7 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos blockPo @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedBatteryBoxBlockEntity)) @@ -74,7 +74,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedBatteryBoxBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Nullable diff --git a/src/main/java/me/jddev0/ep/block/AdvancedChargerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedChargerBlock.java index 94740de18..7c9e01101 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedChargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedChargerBlock.java @@ -24,6 +24,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -87,7 +88,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedChargerBlockEntity)) @@ -95,12 +96,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedChargerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedCrusherBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedCrusherBlock.java index 8c7c41c5b..043d88cf8 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedCrusherBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedCrusherBlock.java @@ -24,6 +24,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -87,7 +88,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedCrusherBlockEntity)) @@ -95,12 +96,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedCrusherBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedMinecartChargerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedMinecartChargerBlock.java index cf2f90cd8..2d21b8805 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedMinecartChargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedMinecartChargerBlock.java @@ -23,7 +23,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -32,7 +32,7 @@ public class AdvancedMinecartChargerBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(AdvancedMinecartChargerBlock::new); - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; protected AdvancedMinecartChargerBlock(Properties props) { super(props); @@ -73,7 +73,7 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos blockPo @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedMinecartChargerBlockEntity)) @@ -81,7 +81,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedMinecartChargerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/me/jddev0/ep/block/AdvancedMinecartUnchargerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedMinecartUnchargerBlock.java index 8d8be138c..57f3c8b03 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedMinecartUnchargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedMinecartUnchargerBlock.java @@ -23,7 +23,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -32,7 +32,7 @@ public class AdvancedMinecartUnchargerBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(AdvancedMinecartUnchargerBlock::new); - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; protected AdvancedMinecartUnchargerBlock(Properties props) { super(props); @@ -73,7 +73,7 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos blockPo @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedMinecartUnchargerBlockEntity)) @@ -81,7 +81,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedMinecartUnchargerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/me/jddev0/ep/block/AdvancedPoweredFurnaceBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedPoweredFurnaceBlock.java index 787f84ad1..a6de92b54 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedPoweredFurnaceBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedPoweredFurnaceBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -28,7 +29,7 @@ public class AdvancedPoweredFurnaceBlock extends BaseEntityBlock { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty LIT = BlockStateProperties.LIT; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.getValue(LIT) ? 5 : 0; @@ -86,7 +87,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedPoweredFurnaceBlockEntity)) @@ -94,12 +95,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedPoweredFurnaceBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedPulverizerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedPulverizerBlock.java index 077c95826..526d5f5c4 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedPulverizerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedPulverizerBlock.java @@ -24,6 +24,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -87,7 +88,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedPulverizerBlockEntity)) @@ -95,12 +96,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedPulverizerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AdvancedUnchargerBlock.java b/src/main/java/me/jddev0/ep/block/AdvancedUnchargerBlock.java index 083e48c7a..367618c5d 100644 --- a/src/main/java/me/jddev0/ep/block/AdvancedUnchargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AdvancedUnchargerBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AdvancedUnchargerBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AdvancedUnchargerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AlloyFurnaceBlock.java b/src/main/java/me/jddev0/ep/block/AlloyFurnaceBlock.java index 33407e271..0f1852505 100644 --- a/src/main/java/me/jddev0/ep/block/AlloyFurnaceBlock.java +++ b/src/main/java/me/jddev0/ep/block/AlloyFurnaceBlock.java @@ -21,7 +21,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -31,7 +31,7 @@ public class AlloyFurnaceBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(AlloyFurnaceBlock::new); public static final BooleanProperty LIT = BlockStateProperties.LIT; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.getValue(LIT) ? 13 : 0; @@ -89,7 +89,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AlloyFurnaceBlockEntity)) @@ -97,7 +97,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AlloyFurnaceBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/me/jddev0/ep/block/AssemblingMachineBlock.java b/src/main/java/me/jddev0/ep/block/AssemblingMachineBlock.java index e2642c4da..e4b9e89a6 100644 --- a/src/main/java/me/jddev0/ep/block/AssemblingMachineBlock.java +++ b/src/main/java/me/jddev0/ep/block/AssemblingMachineBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -25,7 +26,7 @@ public class AssemblingMachineBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(AssemblingMachineBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected AssemblingMachineBlock(Properties props) { super(props); @@ -80,7 +81,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AssemblingMachineBlockEntity)) @@ -88,12 +89,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AssemblingMachineBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AutoCrafterBlock.java b/src/main/java/me/jddev0/ep/block/AutoCrafterBlock.java index e408780a0..1cb09e6fe 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.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -86,7 +87,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AutoCrafterBlockEntity)) @@ -94,12 +95,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AutoCrafterBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AutoPressMoldMakerBlock.java b/src/main/java/me/jddev0/ep/block/AutoPressMoldMakerBlock.java index 0ce43273b..c2112a607 100644 --- a/src/main/java/me/jddev0/ep/block/AutoPressMoldMakerBlock.java +++ b/src/main/java/me/jddev0/ep/block/AutoPressMoldMakerBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AutoPressMoldMakerBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AutoPressMoldMakerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/AutoStonecutterBlock.java b/src/main/java/me/jddev0/ep/block/AutoStonecutterBlock.java index f5df23c32..4ebbd106f 100644 --- a/src/main/java/me/jddev0/ep/block/AutoStonecutterBlock.java +++ b/src/main/java/me/jddev0/ep/block/AutoStonecutterBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof AutoStonecutterBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((AutoStonecutterBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/BatteryBoxBlock.java b/src/main/java/me/jddev0/ep/block/BatteryBoxBlock.java index e22dc8ec2..2ffed1592 100644 --- a/src/main/java/me/jddev0/ep/block/BatteryBoxBlock.java +++ b/src/main/java/me/jddev0/ep/block/BatteryBoxBlock.java @@ -66,7 +66,7 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos blockPo @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof BatteryBoxBlockEntity)) @@ -74,7 +74,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((BatteryBoxBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Nullable diff --git a/src/main/java/me/jddev0/ep/block/BlockPlacerBlock.java b/src/main/java/me/jddev0/ep/block/BlockPlacerBlock.java index a9e021cf7..a1514ae6d 100644 --- a/src/main/java/me/jddev0/ep/block/BlockPlacerBlock.java +++ b/src/main/java/me/jddev0/ep/block/BlockPlacerBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -25,7 +26,7 @@ public class BlockPlacerBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(BlockPlacerBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; protected BlockPlacerBlock(Properties props) { super(props); @@ -80,7 +81,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof BlockPlacerBlockEntity)) @@ -88,12 +89,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((BlockPlacerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/CableBlock.java b/src/main/java/me/jddev0/ep/block/CableBlock.java index d1c0785de..9a144dc6b 100644 --- a/src/main/java/me/jddev0/ep/block/CableBlock.java +++ b/src/main/java/me/jddev0/ep/block/CableBlock.java @@ -11,13 +11,12 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.RandomSource; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.*; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; @@ -30,6 +29,7 @@ import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; import net.minecraft.world.level.material.MapColor; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -42,7 +42,9 @@ public class CableBlock extends BaseEntityBlock implements SimpleWaterloggedBlock { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> { return instance.group(ExtraCodecs.NON_EMPTY_STRING.xmap(Tier::valueOf, Tier::toString).fieldOf("tier"). - forGetter(CableBlock::getTier)).apply(instance, CableBlock::new); + forGetter(CableBlock::getTier), + Properties.CODEC.fieldOf("properties").forGetter(Block::properties)). + apply(instance, CableBlock::new); }); public static final BooleanProperty UP = BlockStateProperties.UP; @@ -63,8 +65,8 @@ public class CableBlock extends BaseEntityBlock implements SimpleWaterloggedBloc private final Tier tier; - public CableBlock(Tier tier) { - super(tier.getProperties()); + public CableBlock(Tier tier, Properties properties) { + super(properties); this.registerDefaultState(this.stateDefinition.any().setValue(UP, false).setValue(DOWN, false). setValue(NORTH, false).setValue(SOUTH, false).setValue(EAST, false).setValue(WEST, false). @@ -172,11 +174,12 @@ public FluidState getFluidState(BlockState state) { } @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor level, BlockPos selfPos, BlockPos facingPos) { + public BlockState updateShape(BlockState state, LevelReader level, ScheduledTickAccess tickView, BlockPos selfPos, Direction facing, + BlockPos facingPos, BlockState facingState, RandomSource random) { if(state.getValue(WATERLOGGED)) - level.scheduleTick(selfPos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + tickView.scheduleTick(selfPos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); - return super.updateShape(state, facing, facingState, level, selfPos, facingPos); + return super.updateShape(state, level, tickView, selfPos, facing, facingPos, facingState, random); } @Override @@ -185,8 +188,8 @@ protected void createBlockStateDefinition(StateDefinition.Builder FACING = BlockStateProperties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.getValue(LIT) ? 13 : 0; @@ -90,7 +91,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof CoalEngineBlockEntity)) @@ -98,12 +99,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((CoalEngineBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/CompressorBlock.java b/src/main/java/me/jddev0/ep/block/CompressorBlock.java index 76d9b745c..24548b799 100644 --- a/src/main/java/me/jddev0/ep/block/CompressorBlock.java +++ b/src/main/java/me/jddev0/ep/block/CompressorBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof CompressorBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((CompressorBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/CreativeBatteryBoxBlock.java b/src/main/java/me/jddev0/ep/block/CreativeBatteryBoxBlock.java index 1fcc698df..575cf1282 100644 --- a/src/main/java/me/jddev0/ep/block/CreativeBatteryBoxBlock.java +++ b/src/main/java/me/jddev0/ep/block/CreativeBatteryBoxBlock.java @@ -51,7 +51,7 @@ public RenderShape getRenderShape(BlockState state) { @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof CreativeBatteryBoxBlockEntity)) @@ -59,7 +59,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((CreativeBatteryBoxBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Nullable diff --git a/src/main/java/me/jddev0/ep/block/CreativeFluidTankBlock.java b/src/main/java/me/jddev0/ep/block/CreativeFluidTankBlock.java index d18a4daed..571612ae1 100644 --- a/src/main/java/me/jddev0/ep/block/CreativeFluidTankBlock.java +++ b/src/main/java/me/jddev0/ep/block/CreativeFluidTankBlock.java @@ -22,7 +22,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -31,7 +31,7 @@ public class CreativeFluidTankBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(CreativeFluidTankBlock::new); - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public CreativeFluidTankBlock(Properties props) { super(props); @@ -58,7 +58,7 @@ public RenderShape getRenderShape(BlockState state) { @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof CreativeFluidTankBlockEntity)) @@ -66,7 +66,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((CreativeFluidTankBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/me/jddev0/ep/block/CrusherBlock.java b/src/main/java/me/jddev0/ep/block/CrusherBlock.java index de6f0eff7..495eebbfe 100644 --- a/src/main/java/me/jddev0/ep/block/CrusherBlock.java +++ b/src/main/java/me/jddev0/ep/block/CrusherBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof CrusherBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((CrusherBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/CrystalGrowthChamberBlock.java b/src/main/java/me/jddev0/ep/block/CrystalGrowthChamberBlock.java index f869f5f61..5ded5aff0 100644 --- a/src/main/java/me/jddev0/ep/block/CrystalGrowthChamberBlock.java +++ b/src/main/java/me/jddev0/ep/block/CrystalGrowthChamberBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof CrystalGrowthChamberBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((CrystalGrowthChamberBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/DrainBlock.java b/src/main/java/me/jddev0/ep/block/DrainBlock.java index 9d7192bdd..018bc4a9e 100644 --- a/src/main/java/me/jddev0/ep/block/DrainBlock.java +++ b/src/main/java/me/jddev0/ep/block/DrainBlock.java @@ -65,7 +65,7 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos blockPo @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof DrainBlockEntity)) @@ -73,7 +73,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((DrainBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Nullable diff --git a/src/main/java/me/jddev0/ep/block/EPBlocks.java b/src/main/java/me/jddev0/ep/block/EPBlocks.java index bad6038e3..6a9339be4 100644 --- a/src/main/java/me/jddev0/ep/block/EPBlocks.java +++ b/src/main/java/me/jddev0/ep/block/EPBlocks.java @@ -2,6 +2,9 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.item.EPItems; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -16,552 +19,549 @@ import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; +import java.util.function.BiFunction; +import java.util.function.Function; + public final class EPBlocks { private EPBlocks() {} - public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(EPAPI.MOD_ID); + public static DeferredBlock registerBlock(String name, Block.Properties props) { + return registerBlock(name, Block::new, props); + } + + public static DeferredBlock registerBlock(String name, Function factory, Block.Properties props) { + ResourceLocation blockId = EPAPI.id(name); + return BLOCKS.register(name, () -> factory.apply(props.setId(ResourceKey.create(Registries.BLOCK, blockId)))); + } + + public static DeferredItem createBlockItem(String name, DeferredBlock block) { + return createBlockItem(name, BlockItem::new, block, new Item.Properties()); + } + + public static DeferredItem createBlockItem(String name, BiFunction factory, DeferredBlock block) { + return createBlockItem(name, props -> factory.apply(block.get(), props), new Item.Properties()); + } + + public static DeferredItem createBlockItem(String name, BiFunction factory, DeferredBlock block, Item.Properties props) { + return createBlockItem(name, p -> factory.apply(block.get(), p), props); + } - private static DeferredItem createBlockItem(String name, DeferredBlock blockRegistryObject, Item.Properties props) { - return EPItems.ITEMS.register(name, () -> new BlockItem(blockRegistryObject.get(), props)); + public static DeferredItem createBlockItem(String name, Function factory) { + return createBlockItem(name, factory, new Item.Properties()); } - private static DeferredItem createBlockItem(String name, DeferredBlock blockRegistryObject) { - return createBlockItem(name, blockRegistryObject, new Item.Properties()); + + public static DeferredItem createBlockItem(String name, Function factory, Item.Properties props) { + return EPItems.registerItem(name, factory, props); } - public static final DeferredBlock SILICON_BLOCK = BLOCKS.register("silicon_block", - () -> new Block(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(EPAPI.MOD_ID); + + public static final DeferredBlock SILICON_BLOCK = registerBlock("silicon_block", + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem SILICON_BLOCK_ITEM = createBlockItem("silicon_block", SILICON_BLOCK); - public static final DeferredBlock TIN_BLOCK = BLOCKS.register("tin_block", - () -> new Block(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock TIN_BLOCK = registerBlock("tin_block", + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem TIN_BLOCK_ITEM = createBlockItem("tin_block", TIN_BLOCK); - public static final DeferredBlock SAWDUST_BLOCK = BLOCKS.register("sawdust_block", - () -> new SimpleFlammableBlock(BlockBehaviour.Properties.of().mapColor(MapColor.WOOD). - strength(2.0f, 3.0f).sound(SoundType.WOOD), 5, 20)); + public static final DeferredBlock SAWDUST_BLOCK = registerBlock("sawdust_block", + props -> new SimpleFlammableBlock(props, 5, 20), + BlockBehaviour.Properties.of().mapColor(MapColor.WOOD).strength(2.0f, 3.0f).sound(SoundType.WOOD)); public static final DeferredItem SAWDUST_BLOCK_ITEM = createBlockItem("sawdust_block", SAWDUST_BLOCK); - public static final DeferredBlock TIN_ORE = BLOCKS.register("tin_ore", - () -> new DropExperienceBlock(ConstantInt.of(0), BlockBehaviour.Properties.of().mapColor(MapColor.STONE) - .instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.0f, 3.0f))); + public static final DeferredBlock TIN_ORE = registerBlock("tin_ore", + props -> new DropExperienceBlock(ConstantInt.of(0), props), + BlockBehaviour.Properties.of().mapColor(MapColor.STONE).instrument(NoteBlockInstrument.BASEDRUM). + requiresCorrectToolForDrops().strength(3.0f, 3.0f)); public static final DeferredItem TIN_ORE_ITEM = createBlockItem("tin_ore", TIN_ORE); - public static final DeferredBlock DEEPSLATE_TIN_ORE = BLOCKS.register("deepslate_tin_ore", - () -> new DropExperienceBlock(ConstantInt.of(0), BlockBehaviour.Properties.of().mapColor(MapColor.DEEPSLATE) - .requiresCorrectToolForDrops().strength(4.5f, 3.0f).sound(SoundType.DEEPSLATE))); + public static final DeferredBlock DEEPSLATE_TIN_ORE = registerBlock("deepslate_tin_ore", + props -> new DropExperienceBlock(ConstantInt.of(0), props), + BlockBehaviour.Properties.of().mapColor(MapColor.DEEPSLATE).requiresCorrectToolForDrops(). + strength(4.5f, 3.0f).sound(SoundType.DEEPSLATE)); public static final DeferredItem DEEPSLATE_TIN_ORE_ITEM = createBlockItem("deepslate_tin_ore", DEEPSLATE_TIN_ORE); - public static final DeferredBlock RAW_TIN_BLOCK = BLOCKS.register("raw_tin_block", - () -> new Block(BlockBehaviour.Properties.of().mapColor(MapColor.RAW_IRON) - .instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(5.0f, 6.0f))); + public static final DeferredBlock RAW_TIN_BLOCK = registerBlock("raw_tin_block", + BlockBehaviour.Properties.of().mapColor(MapColor.RAW_IRON) + .instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(5.0f, 6.0f)); public static final DeferredItem RAW_TIN_BLOCK_ITEM = createBlockItem("raw_tin_block", RAW_TIN_BLOCK); - public static final DeferredBlock ITEM_CONVEYOR_BELT = BLOCKS.register("item_conveyor_belt", - () -> new ItemConveyorBeltBlock(BlockBehaviour.Properties.of().noCollission(). - strength(2.5f, 3.0f).sound(SoundType.METAL))); - public static final DeferredItem ITEM_CONVEYOR_BELT_ITEM = EPItems.ITEMS.register("item_conveyor_belt", - () -> new ItemConveyorBeltBlock.Item(ITEM_CONVEYOR_BELT.get(), new Item.Properties())); + public static final DeferredBlock ITEM_CONVEYOR_BELT = registerBlock("item_conveyor_belt", + ItemConveyorBeltBlock::new, BlockBehaviour.Properties.of().noCollission(). + strength(2.5f, 3.0f).sound(SoundType.METAL)); + public static final DeferredItem ITEM_CONVEYOR_BELT_ITEM = createBlockItem("item_conveyor_belt", + ItemConveyorBeltBlock.Item::new, ITEM_CONVEYOR_BELT); - public static final DeferredBlock ITEM_CONVEYOR_BELT_LOADER = BLOCKS.register("item_conveyor_belt_loader", - () -> new ItemConveyorBeltLoaderBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE). - instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE))); + public static final DeferredBlock ITEM_CONVEYOR_BELT_LOADER = registerBlock("item_conveyor_belt_loader", + ItemConveyorBeltLoaderBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.STONE). + instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE)); public static final DeferredItem ITEM_CONVEYOR_BELT_LOADER_ITEM = createBlockItem("item_conveyor_belt_loader", ITEM_CONVEYOR_BELT_LOADER); - public static final DeferredBlock ITEM_CONVEYOR_BELT_SORTER = BLOCKS.register("item_conveyor_belt_sorter", - () -> new ItemConveyorBeltSorterBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE). - instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE))); + public static final DeferredBlock ITEM_CONVEYOR_BELT_SORTER = registerBlock("item_conveyor_belt_sorter", + ItemConveyorBeltSorterBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.STONE). + instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE)); public static final DeferredItem ITEM_CONVEYOR_BELT_SORTER_ITEM = createBlockItem("item_conveyor_belt_sorter", ITEM_CONVEYOR_BELT_SORTER); - public static final DeferredBlock ITEM_CONVEYOR_BELT_SWITCH = BLOCKS.register("item_conveyor_belt_switch", - () -> new ItemConveyorBeltSwitchBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE). - instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE))); + public static final DeferredBlock ITEM_CONVEYOR_BELT_SWITCH = registerBlock("item_conveyor_belt_switch", + ItemConveyorBeltSwitchBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.STONE). + instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE)); public static final DeferredItem ITEM_CONVEYOR_BELT_SWITCH_ITEM = createBlockItem("item_conveyor_belt_switch", ITEM_CONVEYOR_BELT_SWITCH); - public static final DeferredBlock ITEM_CONVEYOR_BELT_SPLITTER = BLOCKS.register("item_conveyor_belt_splitter", - () -> new ItemConveyorBeltSplitterBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE). - instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE))); + public static final DeferredBlock ITEM_CONVEYOR_BELT_SPLITTER = registerBlock("item_conveyor_belt_splitter", + ItemConveyorBeltSplitterBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.STONE). + instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE)); public static final DeferredItem ITEM_CONVEYOR_BELT_SPLITTER_ITEM = createBlockItem("item_conveyor_belt_splitter", ITEM_CONVEYOR_BELT_SPLITTER); - public static final DeferredBlock ITEM_CONVEYOR_BELT_MERGER = BLOCKS.register("item_conveyor_belt_merger", - () -> new ItemConveyorBeltMergerBlock(BlockBehaviour.Properties.of().mapColor(MapColor.STONE). - instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE))); + public static final DeferredBlock ITEM_CONVEYOR_BELT_MERGER = registerBlock("item_conveyor_belt_merger", + ItemConveyorBeltMergerBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.STONE). + instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(3.5f).sound(SoundType.STONE)); public static final DeferredItem ITEM_CONVEYOR_BELT_MERGER_ITEM = createBlockItem("item_conveyor_belt_merger", ITEM_CONVEYOR_BELT_MERGER); - public static final DeferredBlock IRON_FLUID_PIPE = BLOCKS.register("fluid_pipe", - () -> new FluidPipeBlock(FluidPipeBlock.Tier.IRON)); - public static final DeferredItem IRON_FLUID_PIPE_ITEM = EPItems.ITEMS.register("fluid_pipe", - () -> new FluidPipeBlock.Item(IRON_FLUID_PIPE.get(), new Item.Properties(), FluidPipeBlock.Tier.IRON)); - - public static final DeferredBlock GOLDEN_FLUID_PIPE = BLOCKS.register("golden_fluid_pipe", - () -> new FluidPipeBlock(FluidPipeBlock.Tier.GOLDEN)); - public static final DeferredItem GOLDEN_FLUID_PIPE_ITEM = EPItems.ITEMS.register("golden_fluid_pipe", - () -> new FluidPipeBlock.Item(GOLDEN_FLUID_PIPE.get(), new Item.Properties(), FluidPipeBlock.Tier.GOLDEN)); - - public static final DeferredBlock FLUID_TANK_SMALL = BLOCKS.register("fluid_tank_small", - () -> new FluidTankBlock(FluidTankBlock.Tier.SMALL)); - public static final DeferredItem FLUID_TANK_SMALL_ITEM = EPItems.ITEMS.register("fluid_tank_small", - () -> new FluidTankBlock.Item(FLUID_TANK_SMALL.get(), new Item.Properties(), FluidTankBlock.Tier.SMALL)); - - public static final DeferredBlock FLUID_TANK_MEDIUM = BLOCKS.register("fluid_tank_medium", - () -> new FluidTankBlock(FluidTankBlock.Tier.MEDIUM)); - public static final DeferredItem FLUID_TANK_MEDIUM_ITEM = EPItems.ITEMS.register("fluid_tank_medium", - () -> new FluidTankBlock.Item(FLUID_TANK_MEDIUM.get(), new Item.Properties(), FluidTankBlock.Tier.MEDIUM)); - - public static final DeferredBlock FLUID_TANK_LARGE = BLOCKS.register("fluid_tank_large", - () -> new FluidTankBlock(FluidTankBlock.Tier.LARGE)); - public static final DeferredItem FLUID_TANK_LARGE_ITEM = EPItems.ITEMS.register("fluid_tank_large", - () -> new FluidTankBlock.Item(FLUID_TANK_LARGE.get(), new Item.Properties(), FluidTankBlock.Tier.LARGE)); - - public static final DeferredBlock CREATIVE_FLUID_TANK = BLOCKS.register("creative_fluid_tank", - () -> new CreativeFluidTankBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_PURPLE). - requiresCorrectToolForDrops().strength(-1.f, 3600000.f).noLootTable())); - public static final DeferredItem CREATIVE_FLUID_TANK_ITEM = EPItems.ITEMS.register("creative_fluid_tank", - () -> new CreativeFluidTankBlock.Item(CREATIVE_FLUID_TANK.get(), new Item.Properties())); - - public static final DeferredBlock TIN_CABLE = BLOCKS.register("tin_cable", - () -> new CableBlock(CableBlock.Tier.TIER_TIN)); - public static final DeferredItem TIN_CABLE_ITEM = EPItems.ITEMS.register("tin_cable", - () -> new CableBlock.Item(TIN_CABLE.get(), new Item.Properties(), CableBlock.Tier.TIER_TIN)); - - public static final DeferredBlock COPPER_CABLE = BLOCKS.register("copper_cable", - () -> new CableBlock(CableBlock.Tier.TIER_COPPER)); - public static final DeferredItem COPPER_CABLE_ITEM = EPItems.ITEMS.register("copper_cable", - () -> new CableBlock.Item(COPPER_CABLE.get(), new Item.Properties(), CableBlock.Tier.TIER_COPPER)); - - public static final DeferredBlock GOLD_CABLE = BLOCKS.register("gold_cable", - () -> new CableBlock(CableBlock.Tier.TIER_GOLD)); - public static final DeferredItem GOLD_CABLE_ITEM = EPItems.ITEMS.register("gold_cable", - () -> new CableBlock.Item(GOLD_CABLE.get(), new Item.Properties(), CableBlock.Tier.TIER_GOLD)); - - public static final DeferredBlock ENERGIZED_COPPER_CABLE = BLOCKS.register("energized_copper_cable", - () -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_COPPER)); - public static final DeferredItem ENERGIZED_COPPER_CABLE_ITEM = EPItems.ITEMS.register("energized_copper_cable", - () -> new CableBlock.Item(ENERGIZED_COPPER_CABLE.get(), new Item.Properties(), CableBlock.Tier.TIER_ENERGIZED_COPPER)); - - public static final DeferredBlock ENERGIZED_GOLD_CABLE = BLOCKS.register("energized_gold_cable", - () -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_GOLD)); - public static final DeferredItem ENERGIZED_GOLD_CABLE_ITEM = EPItems.ITEMS.register("energized_gold_cable", - () -> new CableBlock.Item(ENERGIZED_GOLD_CABLE.get(), new Item.Properties(), CableBlock.Tier.TIER_ENERGIZED_GOLD)); - - public static final DeferredBlock ENERGIZED_CRYSTAL_MATRIX_CABLE = BLOCKS.register("energized_crystal_matrix_cable", - () -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX)); - public static final DeferredItem ENERGIZED_CRYSTAL_MATRIX_CABLE_ITEM = EPItems.ITEMS.register("energized_crystal_matrix_cable", - () -> new CableBlock.Item(ENERGIZED_CRYSTAL_MATRIX_CABLE.get(), new Item.Properties(), CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX)); - - public static final DeferredBlock LV_TRANSFORMER_1_TO_N = BLOCKS.register("lv_transformer_1_to_n", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_1_TO_N)); - public static final DeferredItem LV_TRANSFORMER_1_TO_N_ITEM = EPItems.ITEMS.register("lv_transformer_1_to_n", - () -> new TransformerBlock.Item(LV_TRANSFORMER_1_TO_N.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_1_TO_N)); - - public static final DeferredBlock LV_TRANSFORMER_3_TO_3 = BLOCKS.register("lv_transformer_3_to_3", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_3_TO_3)); - public static final DeferredItem LV_TRANSFORMER_3_TO_3_ITEM = EPItems.ITEMS.register("lv_transformer_3_to_3", - () -> new TransformerBlock.Item(LV_TRANSFORMER_3_TO_3.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_3_TO_3)); - - public static final DeferredBlock LV_TRANSFORMER_N_TO_1 = BLOCKS.register("lv_transformer_n_to_1", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_N_TO_1)); - public static final DeferredItem LV_TRANSFORMER_N_TO_1_ITEM = EPItems.ITEMS.register("lv_transformer_n_to_1", - () -> new TransformerBlock.Item(LV_TRANSFORMER_N_TO_1.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_N_TO_1)); - - public static final DeferredBlock MV_TRANSFORMER_1_TO_N = BLOCKS.register("transformer_1_to_n", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_1_TO_N)); - public static final DeferredItem MV_TRANSFORMER_1_TO_N_ITEM = EPItems.ITEMS.register("transformer_1_to_n", - () -> new TransformerBlock.Item(MV_TRANSFORMER_1_TO_N.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_1_TO_N)); - - public static final DeferredBlock MV_TRANSFORMER_3_TO_3 = BLOCKS.register("transformer_3_to_3", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_3_TO_3)); - public static final DeferredItem MV_TRANSFORMER_3_TO_3_ITEM = EPItems.ITEMS.register("transformer_3_to_3", - () -> new TransformerBlock.Item(MV_TRANSFORMER_3_TO_3.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_3_TO_3)); - - public static final DeferredBlock MV_TRANSFORMER_N_TO_1 = BLOCKS.register("transformer_n_to_1", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_N_TO_1)); - public static final DeferredItem MV_TRANSFORMER_N_TO_1_ITEM = EPItems.ITEMS.register("transformer_n_to_1", - () -> new TransformerBlock.Item(MV_TRANSFORMER_N_TO_1.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_N_TO_1)); - - public static final DeferredBlock HV_TRANSFORMER_1_TO_N = BLOCKS.register("hv_transformer_1_to_n", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_1_TO_N)); - public static final DeferredItem HV_TRANSFORMER_1_TO_N_ITEM = EPItems.ITEMS.register("hv_transformer_1_to_n", - () -> new TransformerBlock.Item(HV_TRANSFORMER_1_TO_N.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_1_TO_N)); - - public static final DeferredBlock HV_TRANSFORMER_3_TO_3 = BLOCKS.register("hv_transformer_3_to_3", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_3_TO_3)); - public static final DeferredItem HV_TRANSFORMER_3_TO_3_ITEM = EPItems.ITEMS.register("hv_transformer_3_to_3", - () -> new TransformerBlock.Item(HV_TRANSFORMER_3_TO_3.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_3_TO_3)); - - public static final DeferredBlock HV_TRANSFORMER_N_TO_1 = BLOCKS.register("hv_transformer_n_to_1", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_N_TO_1)); - public static final DeferredItem HV_TRANSFORMER_N_TO_1_ITEM = EPItems.ITEMS.register("hv_transformer_n_to_1", - () -> new TransformerBlock.Item(HV_TRANSFORMER_N_TO_1.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_N_TO_1)); - - public static final DeferredBlock EHV_TRANSFORMER_1_TO_N = BLOCKS.register("ehv_transformer_1_to_n", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_1_TO_N)); - public static final DeferredItem EHV_TRANSFORMER_1_TO_N_ITEM = EPItems.ITEMS.register("ehv_transformer_1_to_n", - () -> new TransformerBlock.Item(EHV_TRANSFORMER_1_TO_N.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_1_TO_N)); - - public static final DeferredBlock EHV_TRANSFORMER_3_TO_3 = BLOCKS.register("ehv_transformer_3_to_3", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_3_TO_3)); - public static final DeferredItem EHV_TRANSFORMER_3_TO_3_ITEM = EPItems.ITEMS.register("ehv_transformer_3_to_3", - () -> new TransformerBlock.Item(EHV_TRANSFORMER_3_TO_3.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_3_TO_3)); - - public static final DeferredBlock EHV_TRANSFORMER_N_TO_1 = BLOCKS.register("ehv_transformer_n_to_1", - () -> new TransformerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_N_TO_1)); - public static final DeferredItem EHV_TRANSFORMER_N_TO_1_ITEM = EPItems.ITEMS.register("ehv_transformer_n_to_1", - () -> new TransformerBlock.Item(EHV_TRANSFORMER_N_TO_1.get(), new Item.Properties(), - TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_N_TO_1)); - - public static final DeferredBlock BATTERY_BOX = BLOCKS.register("battery_box", - () -> new BatteryBoxBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem BATTERY_BOX_ITEM = EPItems.ITEMS.register("battery_box", - () -> new BatteryBoxBlock.Item(BATTERY_BOX.get(), new Item.Properties())); - - public static final DeferredBlock ADVANCED_BATTERY_BOX = BLOCKS.register("advanced_battery_box", - () -> new AdvancedBatteryBoxBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem ADVANCED_BATTERY_BOX_ITEM = EPItems.ITEMS.register("advanced_battery_box", - () -> new AdvancedBatteryBoxBlock.Item(ADVANCED_BATTERY_BOX.get(), new Item.Properties())); - - public static final DeferredBlock CREATIVE_BATTERY_BOX = BLOCKS.register("creative_battery_box", - () -> new CreativeBatteryBoxBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_PURPLE). - requiresCorrectToolForDrops().strength(-1.f, 3600000.f).noLootTable())); - public static final DeferredItem CREATIVE_BATTERY_BOX_ITEM = EPItems.ITEMS.register("creative_battery_box", - () -> new CreativeBatteryBoxBlock.Item(CREATIVE_BATTERY_BOX.get(), new Item.Properties())); - - public static final DeferredBlock PRESS_MOLD_MAKER = BLOCKS.register("press_mold_maker", - () -> new PressMoldMakerBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED). - instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(2.0f, 6.0f).sound(SoundType.STONE))); + public static final DeferredBlock IRON_FLUID_PIPE = registerBlock("fluid_pipe", + props -> new FluidPipeBlock(FluidPipeBlock.Tier.IRON, props), FluidPipeBlock.Tier.IRON.getProperties()); + public static final DeferredItem IRON_FLUID_PIPE_ITEM = createBlockItem("fluid_pipe", + props -> new FluidPipeBlock.Item(IRON_FLUID_PIPE.get(), props, FluidPipeBlock.Tier.IRON)); + + public static final DeferredBlock GOLDEN_FLUID_PIPE = registerBlock("golden_fluid_pipe", + props -> new FluidPipeBlock(FluidPipeBlock.Tier.GOLDEN, props), FluidPipeBlock.Tier.GOLDEN.getProperties()); + public static final DeferredItem GOLDEN_FLUID_PIPE_ITEM = createBlockItem("golden_fluid_pipe", + props -> new FluidPipeBlock.Item(GOLDEN_FLUID_PIPE.get(), props, FluidPipeBlock.Tier.GOLDEN)); + + public static final DeferredBlock FLUID_TANK_SMALL = registerBlock("fluid_tank_small", + props -> new FluidTankBlock(FluidTankBlock.Tier.SMALL, props), FluidTankBlock.Tier.SMALL.getProperties()); + public static final DeferredItem FLUID_TANK_SMALL_ITEM = createBlockItem("fluid_tank_small", + props -> new FluidTankBlock.Item(FLUID_TANK_SMALL.get(), props, FluidTankBlock.Tier.SMALL)); + + public static final DeferredBlock FLUID_TANK_MEDIUM = registerBlock("fluid_tank_medium", + props -> new FluidTankBlock(FluidTankBlock.Tier.MEDIUM, props), FluidTankBlock.Tier.MEDIUM.getProperties()); + public static final DeferredItem FLUID_TANK_MEDIUM_ITEM = createBlockItem("fluid_tank_medium", + props -> new FluidTankBlock.Item(FLUID_TANK_MEDIUM.get(), props, FluidTankBlock.Tier.MEDIUM)); + + public static final DeferredBlock FLUID_TANK_LARGE = registerBlock("fluid_tank_large", + props -> new FluidTankBlock(FluidTankBlock.Tier.LARGE, props), FluidTankBlock.Tier.LARGE.getProperties()); + public static final DeferredItem FLUID_TANK_LARGE_ITEM = createBlockItem("fluid_tank_large", + props -> new FluidTankBlock.Item(FLUID_TANK_LARGE.get(), props, FluidTankBlock.Tier.LARGE)); + + public static final DeferredBlock CREATIVE_FLUID_TANK = registerBlock("creative_fluid_tank", + CreativeFluidTankBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_PURPLE). + requiresCorrectToolForDrops().strength(-1.f, 3600000.f).noLootTable()); + public static final DeferredItem CREATIVE_FLUID_TANK_ITEM = createBlockItem("creative_fluid_tank", + CreativeFluidTankBlock.Item::new, CREATIVE_FLUID_TANK); + + private static DeferredItem createCableBlockItem(String name, DeferredBlock block) { + return createBlockItem(name, props -> new CableBlock.Item(block.get(), props, block.get().getTier())); + } + public static final DeferredBlock TIN_CABLE = registerBlock("tin_cable", + props -> new CableBlock(CableBlock.Tier.TIER_TIN, props), CableBlock.Tier.TIER_TIN.getProperties()); + public static final DeferredItem TIN_CABLE_ITEM = createCableBlockItem("tin_cable", TIN_CABLE); + + public static final DeferredBlock COPPER_CABLE = registerBlock("copper_cable", + props -> new CableBlock(CableBlock.Tier.TIER_COPPER, props), CableBlock.Tier.TIER_COPPER.getProperties()); + public static final DeferredItem COPPER_CABLE_ITEM = createCableBlockItem("copper_cable", COPPER_CABLE); + + public static final DeferredBlock GOLD_CABLE = registerBlock("gold_cable", + props -> new CableBlock(CableBlock.Tier.TIER_GOLD, props), CableBlock.Tier.TIER_GOLD.getProperties()); + public static final DeferredItem GOLD_CABLE_ITEM = createCableBlockItem("gold_cable", GOLD_CABLE); + + public static final DeferredBlock ENERGIZED_COPPER_CABLE = registerBlock("energized_copper_cable", + props -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_COPPER, props), CableBlock.Tier.TIER_ENERGIZED_COPPER.getProperties()); + public static final DeferredItem ENERGIZED_COPPER_CABLE_ITEM = createCableBlockItem("energized_copper_cable", ENERGIZED_COPPER_CABLE); + + public static final DeferredBlock ENERGIZED_GOLD_CABLE = registerBlock("energized_gold_cable", + props -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_GOLD, props), CableBlock.Tier.TIER_ENERGIZED_GOLD.getProperties()); + public static final DeferredItem ENERGIZED_GOLD_CABLE_ITEM = createCableBlockItem("energized_gold_cable", ENERGIZED_GOLD_CABLE); + + public static final DeferredBlock ENERGIZED_CRYSTAL_MATRIX_CABLE = registerBlock("energized_crystal_matrix_cable", + props -> new CableBlock(CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX, props), CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX.getProperties()); + public static final DeferredItem ENERGIZED_CRYSTAL_MATRIX_CABLE_ITEM = createCableBlockItem("energized_crystal_matrix_cable", ENERGIZED_CRYSTAL_MATRIX_CABLE); + + private static DeferredItem createTransformerBlockItem(String name, DeferredBlock block) { + return createBlockItem(name, props -> new TransformerBlock.Item(block.get(), props, block.get().getTier(), block.get().getTransformerType())); + } + public static final DeferredBlock LV_TRANSFORMER_1_TO_N = registerBlock("lv_transformer_1_to_n", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_1_TO_N), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem LV_TRANSFORMER_1_TO_N_ITEM = createTransformerBlockItem("lv_transformer_1_to_n", + LV_TRANSFORMER_1_TO_N); + + public static final DeferredBlock LV_TRANSFORMER_3_TO_3 = registerBlock("lv_transformer_3_to_3", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_3_TO_3), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem LV_TRANSFORMER_3_TO_3_ITEM = createTransformerBlockItem("lv_transformer_3_to_3", + LV_TRANSFORMER_3_TO_3); + + public static final DeferredBlock LV_TRANSFORMER_N_TO_1 = registerBlock("lv_transformer_n_to_1", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_N_TO_1), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem LV_TRANSFORMER_N_TO_1_ITEM = createTransformerBlockItem("lv_transformer_n_to_1", + LV_TRANSFORMER_N_TO_1); + + public static final DeferredBlock MV_TRANSFORMER_1_TO_N = registerBlock("transformer_1_to_n", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_1_TO_N), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem MV_TRANSFORMER_1_TO_N_ITEM = createTransformerBlockItem("transformer_1_to_n", + MV_TRANSFORMER_1_TO_N); + + public static final DeferredBlock MV_TRANSFORMER_3_TO_3 = registerBlock("transformer_3_to_3", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_3_TO_3), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem MV_TRANSFORMER_3_TO_3_ITEM = createTransformerBlockItem("transformer_3_to_3", + MV_TRANSFORMER_3_TO_3); + + public static final DeferredBlock MV_TRANSFORMER_N_TO_1 = registerBlock("transformer_n_to_1", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_N_TO_1), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem MV_TRANSFORMER_N_TO_1_ITEM = createTransformerBlockItem("transformer_n_to_1", + MV_TRANSFORMER_N_TO_1); + + public static final DeferredBlock HV_TRANSFORMER_1_TO_N = registerBlock("hv_transformer_1_to_n", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_1_TO_N), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem HV_TRANSFORMER_1_TO_N_ITEM = createTransformerBlockItem("hv_transformer_1_to_n", + HV_TRANSFORMER_1_TO_N); + + public static final DeferredBlock HV_TRANSFORMER_3_TO_3 = registerBlock("hv_transformer_3_to_3", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_3_TO_3), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem HV_TRANSFORMER_3_TO_3_ITEM = createTransformerBlockItem("hv_transformer_3_to_3", + HV_TRANSFORMER_3_TO_3); + + public static final DeferredBlock HV_TRANSFORMER_N_TO_1 = registerBlock("hv_transformer_n_to_1", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_N_TO_1), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem HV_TRANSFORMER_N_TO_1_ITEM = createTransformerBlockItem("hv_transformer_n_to_1", + HV_TRANSFORMER_N_TO_1); + + public static final DeferredBlock EHV_TRANSFORMER_1_TO_N = registerBlock("ehv_transformer_1_to_n", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_1_TO_N), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem EHV_TRANSFORMER_1_TO_N_ITEM = createTransformerBlockItem("ehv_transformer_1_to_n", + EHV_TRANSFORMER_1_TO_N); + + public static final DeferredBlock EHV_TRANSFORMER_3_TO_3 = registerBlock("ehv_transformer_3_to_3", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_3_TO_3), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem EHV_TRANSFORMER_3_TO_3_ITEM = createTransformerBlockItem("ehv_transformer_3_to_3", + EHV_TRANSFORMER_3_TO_3); + + public static final DeferredBlock EHV_TRANSFORMER_N_TO_1 = registerBlock("ehv_transformer_n_to_1", + props -> new TransformerBlock(props, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_N_TO_1), + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem EHV_TRANSFORMER_N_TO_1_ITEM = createTransformerBlockItem("ehv_transformer_n_to_1", + EHV_TRANSFORMER_N_TO_1); + + public static final DeferredBlock BATTERY_BOX = registerBlock("battery_box", + BatteryBoxBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem BATTERY_BOX_ITEM = createBlockItem("battery_box", + BatteryBoxBlock.Item::new, BATTERY_BOX); + + public static final DeferredBlock ADVANCED_BATTERY_BOX = registerBlock("advanced_battery_box", + AdvancedBatteryBoxBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem ADVANCED_BATTERY_BOX_ITEM = createBlockItem("advanced_battery_box", + AdvancedBatteryBoxBlock.Item::new, ADVANCED_BATTERY_BOX); + + public static final DeferredBlock CREATIVE_BATTERY_BOX = registerBlock("creative_battery_box", + CreativeBatteryBoxBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_PURPLE). + requiresCorrectToolForDrops().strength(-1.f, 3600000.f).noLootTable()); + public static final DeferredItem CREATIVE_BATTERY_BOX_ITEM = createBlockItem("creative_battery_box", + CreativeBatteryBoxBlock.Item::new, CREATIVE_BATTERY_BOX); + + public static final DeferredBlock PRESS_MOLD_MAKER = registerBlock("press_mold_maker", + PressMoldMakerBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED). + instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(2.0f, 6.0f).sound(SoundType.STONE)); public static final DeferredItem PRESS_MOLD_MAKER_ITEM = createBlockItem("press_mold_maker", PRESS_MOLD_MAKER); - public static final DeferredBlock ALLOY_FURNACE = BLOCKS.register("alloy_furnace", - () -> new AlloyFurnaceBlock(BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED). + public static final DeferredBlock ALLOY_FURNACE = registerBlock("alloy_furnace", + AlloyFurnaceBlock::new, BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_RED). instrument(NoteBlockInstrument.BASEDRUM).requiresCorrectToolForDrops().strength(2.0f, 6.0f).sound(SoundType.STONE). - lightLevel(AlloyFurnaceBlock.LIGHT_EMISSION))); + lightLevel(AlloyFurnaceBlock.LIGHT_EMISSION)); public static final DeferredItem ALLOY_FURNACE_ITEM = createBlockItem("alloy_furnace", ALLOY_FURNACE); - public static final DeferredBlock AUTO_CRAFTER = BLOCKS.register("auto_crafter", - () -> new AutoCrafterBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem AUTO_CRAFTER_ITEM = EPItems.ITEMS.register("auto_crafter", - () -> new AutoCrafterBlock.Item(AUTO_CRAFTER.get(), new Item.Properties())); - - public static final DeferredBlock ADVANCED_AUTO_CRAFTER = BLOCKS.register("advanced_auto_crafter", - () -> new AdvancedAutoCrafterBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem ADVANCED_AUTO_CRAFTER_ITEM = EPItems.ITEMS.register("advanced_auto_crafter", - () -> new AdvancedAutoCrafterBlock.Item(ADVANCED_AUTO_CRAFTER.get(), new Item.Properties())); - - public static final DeferredBlock CRUSHER = BLOCKS.register("crusher", - () -> new CrusherBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock AUTO_CRAFTER = registerBlock("auto_crafter", + AutoCrafterBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem AUTO_CRAFTER_ITEM = createBlockItem("auto_crafter", + AutoCrafterBlock.Item::new, AUTO_CRAFTER); + + public static final DeferredBlock ADVANCED_AUTO_CRAFTER = registerBlock("advanced_auto_crafter", + AdvancedAutoCrafterBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem ADVANCED_AUTO_CRAFTER_ITEM = createBlockItem("advanced_auto_crafter", + AdvancedAutoCrafterBlock.Item::new, ADVANCED_AUTO_CRAFTER); + + public static final DeferredBlock CRUSHER = registerBlock("crusher", + CrusherBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem CRUSHER_ITEM = createBlockItem("crusher", CRUSHER); - public static final DeferredBlock ADVANCED_CRUSHER = BLOCKS.register("advanced_crusher", - () -> new AdvancedCrusherBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem ADVANCED_CRUSHER_ITEM = EPItems.ITEMS.register("advanced_crusher", - () -> new AdvancedCrusherBlock.Item(ADVANCED_CRUSHER.get(), new Item.Properties())); + public static final DeferredBlock ADVANCED_CRUSHER = registerBlock("advanced_crusher", + AdvancedCrusherBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem ADVANCED_CRUSHER_ITEM = createBlockItem("advanced_crusher", + AdvancedCrusherBlock.Item::new, ADVANCED_CRUSHER); - public static final DeferredBlock PULVERIZER = BLOCKS.register("pulverizer", - () -> new PulverizerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock PULVERIZER = registerBlock("pulverizer", + PulverizerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem PULVERIZER_ITEM = createBlockItem("pulverizer", PULVERIZER); - public static final DeferredBlock ADVANCED_PULVERIZER = BLOCKS.register("advanced_pulverizer", - () -> new AdvancedPulverizerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem ADVANCED_PULVERIZER_ITEM = EPItems.ITEMS.register("advanced_pulverizer", - () -> new AdvancedPulverizerBlock.Item(ADVANCED_PULVERIZER.get(), new Item.Properties())); + public static final DeferredBlock ADVANCED_PULVERIZER = registerBlock("advanced_pulverizer", + AdvancedPulverizerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem ADVANCED_PULVERIZER_ITEM = createBlockItem("advanced_pulverizer", + AdvancedPulverizerBlock.Item::new, ADVANCED_PULVERIZER); - public static final DeferredBlock SAWMILL = BLOCKS.register("sawmill", - () -> new SawmillBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock SAWMILL = registerBlock("sawmill", + SawmillBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem SAWMILL_ITEM = createBlockItem("sawmill", SAWMILL); - public static final DeferredBlock COMPRESSOR = BLOCKS.register("compressor", - () -> new CompressorBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock COMPRESSOR = registerBlock("compressor", + CompressorBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem COMPRESSOR_ITEM = createBlockItem("compressor", COMPRESSOR); - public static final DeferredBlock METAL_PRESS = BLOCKS.register("metal_press", - () -> new MetalPressBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem METAL_PRESS_ITEM = EPItems.ITEMS.register("metal_press", - () -> new MetalPressBlock.Item(METAL_PRESS.get(), new Item.Properties())); + public static final DeferredBlock METAL_PRESS = registerBlock("metal_press", + MetalPressBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem METAL_PRESS_ITEM = createBlockItem("metal_press", + MetalPressBlock.Item::new, METAL_PRESS); - public static final DeferredBlock AUTO_PRESS_MOLD_MAKER = BLOCKS.register("auto_press_mold_maker", - () -> new AutoPressMoldMakerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock AUTO_PRESS_MOLD_MAKER = registerBlock("auto_press_mold_maker", + AutoPressMoldMakerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem AUTO_PRESS_MOLD_MAKER_ITEM = createBlockItem("auto_press_mold_maker", AUTO_PRESS_MOLD_MAKER); - public static final DeferredBlock AUTO_STONECUTTER = BLOCKS.register("auto_stonecutter", - () -> new AutoStonecutterBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock AUTO_STONECUTTER = registerBlock("auto_stonecutter", + AutoStonecutterBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem AUTO_STONECUTTER_ITEM = createBlockItem("auto_stonecutter", AUTO_STONECUTTER); - public static final DeferredBlock PLANT_GROWTH_CHAMBER = BLOCKS.register("plant_growth_chamber", - () -> new PlantGrowthChamberBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock PLANT_GROWTH_CHAMBER = registerBlock("plant_growth_chamber", + PlantGrowthChamberBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem PLANT_GROWTH_CHAMBER_ITEM = createBlockItem("plant_growth_chamber", PLANT_GROWTH_CHAMBER); - public static final DeferredBlock BLOCK_PLACER = BLOCKS.register("block_placer", - () -> new BlockPlacerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock BLOCK_PLACER = registerBlock("block_placer", + BlockPlacerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem BLOCK_PLACER_ITEM = createBlockItem("block_placer", BLOCK_PLACER); - public static final DeferredBlock ASSEMBLING_MACHINE = BLOCKS.register("assembling_machine", - () -> new AssemblingMachineBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock ASSEMBLING_MACHINE = registerBlock("assembling_machine", + AssemblingMachineBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem ASSEMBLING_MACHINE_ITEM = createBlockItem("assembling_machine", ASSEMBLING_MACHINE); - public static final DeferredBlock INDUCTION_SMELTER = BLOCKS.register("induction_smelter", - () -> new InductionSmelterBlock(BlockBehaviour.Properties.of(). + public static final DeferredBlock INDUCTION_SMELTER = registerBlock("induction_smelter", + InductionSmelterBlock::new, BlockBehaviour.Properties.of(). requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL). - lightLevel(InductionSmelterBlock.LIGHT_EMISSION))); + lightLevel(InductionSmelterBlock.LIGHT_EMISSION)); public static final DeferredItem INDUCTION_SMELTER_ITEM = createBlockItem("induction_smelter", INDUCTION_SMELTER); - public static final DeferredBlock FLUID_FILLER = BLOCKS.register("fluid_filler", - () -> new FluidFillerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock FLUID_FILLER = registerBlock("fluid_filler", + FluidFillerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem FLUID_FILLER_ITEM = createBlockItem("fluid_filler", FLUID_FILLER); - public static final DeferredBlock STONE_SOLIDIFIER = BLOCKS.register("stone_solidifier", - () -> new StoneSolidifierBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock STONE_SOLIDIFIER = registerBlock("stone_solidifier", + StoneSolidifierBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem STONE_SOLIDIFIER_ITEM = createBlockItem("stone_solidifier", STONE_SOLIDIFIER); - public static final DeferredBlock FILTRATION_PLANT = BLOCKS.register("filtration_plant", - () -> new FiltrationPlantBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem FILTRATION_PLANT_ITEM = EPItems.ITEMS.register("filtration_plant", - () -> new FiltrationPlantBlock.Item(FILTRATION_PLANT.get(), new Item.Properties())); + public static final DeferredBlock FILTRATION_PLANT = registerBlock("filtration_plant", + FiltrationPlantBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem FILTRATION_PLANT_ITEM = createBlockItem("filtration_plant", + FiltrationPlantBlock.Item::new, FILTRATION_PLANT); - public static final DeferredBlock FLUID_TRANSPOSER = BLOCKS.register("fluid_transposer", - () -> new FluidTransposerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock FLUID_TRANSPOSER = registerBlock("fluid_transposer", + FluidTransposerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem FLUID_TRANSPOSER_ITEM = createBlockItem("fluid_transposer", FLUID_TRANSPOSER); - public static final DeferredBlock FLUID_DRAINER = BLOCKS.register("fluid_drainer", - () -> new FluidDrainerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock FLUID_DRAINER = registerBlock("fluid_drainer", + FluidDrainerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem FLUID_DRAINER_ITEM = createBlockItem("fluid_drainer", FLUID_DRAINER); - public static final DeferredBlock FLUID_PUMP = BLOCKS.register("fluid_pump", - () -> new FluidPumpBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock FLUID_PUMP = registerBlock("fluid_pump", + FluidPumpBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem FLUID_PUMP_ITEM = createBlockItem("fluid_pump", FLUID_PUMP); - public static final DeferredBlock DRAIN = BLOCKS.register("drain", - () -> new DrainBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem DRAIN_ITEM = EPItems.ITEMS.register("drain", - () -> new DrainBlock.Item(DRAIN.get(), new Item.Properties())); - - public static final DeferredBlock CHARGER = BLOCKS.register("charger", - () -> new ChargerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem CHARGER_ITEM = EPItems.ITEMS.register("charger", - () -> new ChargerBlock.Item(CHARGER.get(), new Item.Properties())); - - public static final DeferredBlock ADVANCED_CHARGER = BLOCKS.register("advanced_charger", - () -> new AdvancedChargerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem ADVANCED_CHARGER_ITEM = EPItems.ITEMS.register("advanced_charger", - () -> new AdvancedChargerBlock.Item(ADVANCED_CHARGER.get(), new Item.Properties())); - - public static final DeferredBlock UNCHARGER = BLOCKS.register("uncharger", - () -> new UnchargerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock DRAIN = registerBlock("drain", + DrainBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem DRAIN_ITEM = createBlockItem("drain", + DrainBlock.Item::new, DRAIN); + + public static final DeferredBlock CHARGER = registerBlock("charger", + ChargerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem CHARGER_ITEM = createBlockItem("charger", + ChargerBlock.Item::new, CHARGER); + + public static final DeferredBlock ADVANCED_CHARGER = registerBlock("advanced_charger", + AdvancedChargerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem ADVANCED_CHARGER_ITEM = createBlockItem("advanced_charger", + AdvancedChargerBlock.Item::new, ADVANCED_CHARGER); + + public static final DeferredBlock UNCHARGER = registerBlock("uncharger", + UnchargerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem UNCHARGER_ITEM = createBlockItem("uncharger", UNCHARGER); - public static final DeferredBlock ADVANCED_UNCHARGER = BLOCKS.register("advanced_uncharger", - () -> new AdvancedUnchargerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock ADVANCED_UNCHARGER = registerBlock("advanced_uncharger", + AdvancedUnchargerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem ADVANCED_UNCHARGER_ITEM = createBlockItem("advanced_uncharger", ADVANCED_UNCHARGER); - public static final DeferredBlock MINECART_CHARGER = BLOCKS.register("minecart_charger", - () -> new MinecartChargerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem MINECART_CHARGER_ITEM = EPItems.ITEMS.register("minecart_charger", - () -> new MinecartChargerBlock.Item(MINECART_CHARGER.get(), new Item.Properties())); + public static final DeferredBlock MINECART_CHARGER = registerBlock("minecart_charger", + MinecartChargerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem MINECART_CHARGER_ITEM = createBlockItem("minecart_charger", + MinecartChargerBlock.Item::new, MINECART_CHARGER); - public static final DeferredBlock ADVANCED_MINECART_CHARGER = BLOCKS.register("advanced_minecart_charger", - () -> new AdvancedMinecartChargerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem ADVANCED_MINECART_CHARGER_ITEM = EPItems.ITEMS.register("advanced_minecart_charger", - () -> new AdvancedMinecartChargerBlock.Item(ADVANCED_MINECART_CHARGER.get(), new Item.Properties())); + public static final DeferredBlock ADVANCED_MINECART_CHARGER = registerBlock("advanced_minecart_charger", + AdvancedMinecartChargerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem ADVANCED_MINECART_CHARGER_ITEM = createBlockItem("advanced_minecart_charger", + AdvancedMinecartChargerBlock.Item::new, ADVANCED_MINECART_CHARGER); - public static final DeferredBlock MINECART_UNCHARGER = BLOCKS.register("minecart_uncharger", - () -> new MinecartUnchargerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem MINECART_UNCHARGER_ITEM = EPItems.ITEMS.register("minecart_uncharger", - () -> new MinecartUnchargerBlock.Item(MINECART_UNCHARGER.get(), new Item.Properties())); + public static final DeferredBlock MINECART_UNCHARGER = registerBlock("minecart_uncharger", + MinecartUnchargerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem MINECART_UNCHARGER_ITEM = createBlockItem("minecart_uncharger", + MinecartUnchargerBlock.Item::new, MINECART_UNCHARGER); - public static final DeferredBlock ADVANCED_MINECART_UNCHARGER = BLOCKS.register("advanced_minecart_uncharger", - () -> new AdvancedMinecartUnchargerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem ADVANCED_MINECART_UNCHARGER_ITEM = EPItems.ITEMS.register("advanced_minecart_uncharger", - () -> new AdvancedMinecartUnchargerBlock.Item(ADVANCED_MINECART_UNCHARGER.get(), new Item.Properties())); + public static final DeferredBlock ADVANCED_MINECART_UNCHARGER = registerBlock("advanced_minecart_uncharger", + AdvancedMinecartUnchargerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem ADVANCED_MINECART_UNCHARGER_ITEM = createBlockItem("advanced_minecart_uncharger", + AdvancedMinecartUnchargerBlock.Item::new, ADVANCED_MINECART_UNCHARGER); private static DeferredItem createSolarPanelBlockItem(String name, DeferredBlock blockRegistryObject) { - return EPItems.ITEMS.register(name, () -> new SolarPanelBlock.Item(blockRegistryObject.get(), new Item.Properties(), + return createBlockItem(name, props -> new SolarPanelBlock.Item(blockRegistryObject.get(), props, blockRegistryObject.get().getTier())); } - public static final DeferredBlock SOLAR_PANEL_1 = BLOCKS.register("solar_panel_1", - () -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_1)); + public static final DeferredBlock SOLAR_PANEL_1 = registerBlock("solar_panel_1", + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_1, props), SolarPanelBlock.Tier.TIER_1.getProperties()); public static final DeferredItem SOLAR_PANEL_ITEM_1 = createSolarPanelBlockItem("solar_panel_1", SOLAR_PANEL_1); - public static final DeferredBlock SOLAR_PANEL_2 = BLOCKS.register("solar_panel_2", - () -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_2)); + public static final DeferredBlock SOLAR_PANEL_2 = registerBlock("solar_panel_2", + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_2, props), SolarPanelBlock.Tier.TIER_2.getProperties()); public static final DeferredItem SOLAR_PANEL_ITEM_2 = createSolarPanelBlockItem("solar_panel_2", SOLAR_PANEL_2); - public static final DeferredBlock SOLAR_PANEL_3 = BLOCKS.register("solar_panel_3", - () -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_3)); + public static final DeferredBlock SOLAR_PANEL_3 = registerBlock("solar_panel_3", + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_3, props), SolarPanelBlock.Tier.TIER_3.getProperties()); public static final DeferredItem SOLAR_PANEL_ITEM_3 = createSolarPanelBlockItem("solar_panel_3", SOLAR_PANEL_3); - public static final DeferredBlock SOLAR_PANEL_4 = BLOCKS.register("solar_panel_4", - () -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_4)); + public static final DeferredBlock SOLAR_PANEL_4 = registerBlock("solar_panel_4", + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_4, props), SolarPanelBlock.Tier.TIER_4.getProperties()); public static final DeferredItem SOLAR_PANEL_ITEM_4 = createSolarPanelBlockItem("solar_panel_4", SOLAR_PANEL_4); - public static final DeferredBlock SOLAR_PANEL_5 = BLOCKS.register("solar_panel_5", - () -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_5)); + public static final DeferredBlock SOLAR_PANEL_5 = registerBlock("solar_panel_5", + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_5, props), SolarPanelBlock.Tier.TIER_5.getProperties()); public static final DeferredItem SOLAR_PANEL_ITEM_5 = createSolarPanelBlockItem("solar_panel_5", SOLAR_PANEL_5); - public static final DeferredBlock SOLAR_PANEL_6 = BLOCKS.register("solar_panel_6", - () -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_6)); + public static final DeferredBlock SOLAR_PANEL_6 = registerBlock("solar_panel_6", + props -> new SolarPanelBlock(SolarPanelBlock.Tier.TIER_6, props), SolarPanelBlock.Tier.TIER_6.getProperties()); public static final DeferredItem SOLAR_PANEL_ITEM_6 = createSolarPanelBlockItem("solar_panel_6", SOLAR_PANEL_6); - public static final DeferredBlock COAL_ENGINE = BLOCKS.register("coal_engine", - () -> new CoalEngineBlock(BlockBehaviour.Properties.of(). + public static final DeferredBlock COAL_ENGINE = registerBlock("coal_engine", + CoalEngineBlock::new, BlockBehaviour.Properties.of(). requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL). - lightLevel(CoalEngineBlock.LIGHT_EMISSION))); + lightLevel(CoalEngineBlock.LIGHT_EMISSION)); public static final DeferredItem COAL_ENGINE_ITEM = createBlockItem("coal_engine", COAL_ENGINE); - public static final DeferredBlock HEAT_GENERATOR = BLOCKS.register("heat_generator", - () -> new HeatGeneratorBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock HEAT_GENERATOR = registerBlock("heat_generator", + HeatGeneratorBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem HEAT_GENERATOR_ITEM = createBlockItem("heat_generator", HEAT_GENERATOR); - public static final DeferredBlock THERMAL_GENERATOR = BLOCKS.register("thermal_generator", - () -> new ThermalGeneratorBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock THERMAL_GENERATOR = registerBlock("thermal_generator", + ThermalGeneratorBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem THERMAL_GENERATOR_ITEM = createBlockItem("thermal_generator", THERMAL_GENERATOR); - public static final DeferredBlock POWERED_LAMP = BLOCKS.register("powered_lamp", - () -> new PoweredLampBlock(BlockBehaviour.Properties.of(). + public static final DeferredBlock POWERED_LAMP = registerBlock("powered_lamp", + PoweredLampBlock::new, BlockBehaviour.Properties.of(). strength(.3f).sound(SoundType.GLASS). - lightLevel(PoweredLampBlock.LIGHT_EMISSION))); + lightLevel(PoweredLampBlock.LIGHT_EMISSION)); public static final DeferredItem POWERED_LAMP_ITEM = createBlockItem("powered_lamp", POWERED_LAMP); - public static final DeferredBlock POWERED_FURNACE = BLOCKS.register("powered_furnace", - () -> new PoweredFurnaceBlock(BlockBehaviour.Properties.of(). + public static final DeferredBlock POWERED_FURNACE = registerBlock("powered_furnace", + PoweredFurnaceBlock::new, BlockBehaviour.Properties.of(). requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL). - lightLevel(PoweredFurnaceBlock.LIGHT_EMISSION))); + lightLevel(PoweredFurnaceBlock.LIGHT_EMISSION)); public static final DeferredItem POWERED_FURNACE_ITEM = createBlockItem("powered_furnace", POWERED_FURNACE); - public static final DeferredBlock ADVANCED_POWERED_FURNACE = BLOCKS.register("advanced_powered_furnace", - () -> new AdvancedPoweredFurnaceBlock(BlockBehaviour.Properties.of(). + public static final DeferredBlock ADVANCED_POWERED_FURNACE = registerBlock("advanced_powered_furnace", + AdvancedPoweredFurnaceBlock::new, BlockBehaviour.Properties.of(). requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL). - lightLevel(AdvancedPoweredFurnaceBlock.LIGHT_EMISSION))); + lightLevel(AdvancedPoweredFurnaceBlock.LIGHT_EMISSION)); public static final DeferredItem ADVANCED_POWERED_FURNACE_ITEM = createBlockItem("advanced_powered_furnace", ADVANCED_POWERED_FURNACE); - public static final DeferredBlock LIGHTNING_GENERATOR = BLOCKS.register("lightning_generator", - () -> new LightningGeneratorBlock(BlockBehaviour.Properties.of(). + public static final DeferredBlock LIGHTNING_GENERATOR = registerBlock("lightning_generator", + LightningGeneratorBlock::new, BlockBehaviour.Properties.of(). requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL). - lightLevel(LightningGeneratorBlock.LIGHT_EMISSION))); - public static final DeferredItem LIGHTNING_GENERATOR_ITEM = EPItems.ITEMS.register("lightning_generator", - () -> new LightningGeneratorBlock.Item(LIGHTNING_GENERATOR.get(), new Item.Properties())); + lightLevel(LightningGeneratorBlock.LIGHT_EMISSION)); + public static final DeferredItem LIGHTNING_GENERATOR_ITEM = createBlockItem("lightning_generator", + LightningGeneratorBlock.Item::new, LIGHTNING_GENERATOR); - public static final DeferredBlock ENERGIZER = BLOCKS.register("energizer", - () -> new EnergizerBlock(BlockBehaviour.Properties.of(). + public static final DeferredBlock ENERGIZER = registerBlock("energizer", + EnergizerBlock::new, BlockBehaviour.Properties.of(). requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL). - lightLevel(EnergizerBlock.LIGHT_EMISSION))); + lightLevel(EnergizerBlock.LIGHT_EMISSION)); public static final DeferredItem ENERGIZER_ITEM = createBlockItem("energizer", ENERGIZER); - public static final DeferredBlock CHARGING_STATION = BLOCKS.register("charging_station", - () -> new ChargingStationBlock(BlockBehaviour.Properties.of(). + public static final DeferredBlock CHARGING_STATION = registerBlock("charging_station", + ChargingStationBlock::new, BlockBehaviour.Properties.of(). requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL). - lightLevel(ChargingStationBlock.LIGHT_EMISSION))); - public static final DeferredItem CHARGING_STATION_ITEM = EPItems.ITEMS.register("charging_station", - () -> new ChargingStationBlock.Item(CHARGING_STATION.get(), new Item.Properties())); + lightLevel(ChargingStationBlock.LIGHT_EMISSION)); + public static final DeferredItem CHARGING_STATION_ITEM = createBlockItem("charging_station", + ChargingStationBlock.Item::new, CHARGING_STATION); - public static final DeferredBlock CRYSTAL_GROWTH_CHAMBER = BLOCKS.register("crystal_growth_chamber", - () -> new CrystalGrowthChamberBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock CRYSTAL_GROWTH_CHAMBER = registerBlock("crystal_growth_chamber", + CrystalGrowthChamberBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem CRYSTAL_GROWTH_CHAMBER_ITEM = createBlockItem("crystal_growth_chamber", CRYSTAL_GROWTH_CHAMBER); - public static final DeferredBlock WEATHER_CONTROLLER = BLOCKS.register("weather_controller", - () -> new WeatherControllerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock WEATHER_CONTROLLER = registerBlock("weather_controller", + WeatherControllerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem WEATHER_CONTROLLER_ITEM = createBlockItem("weather_controller", WEATHER_CONTROLLER); - public static final DeferredBlock TIME_CONTROLLER = BLOCKS.register("time_controller", - () -> new TimeControllerBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock TIME_CONTROLLER = registerBlock("time_controller", + TimeControllerBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem TIME_CONTROLLER_ITEM = createBlockItem("time_controller", TIME_CONTROLLER); - public static final DeferredBlock TELEPORTER = BLOCKS.register("teleporter", - () -> new TeleporterBlock(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); - public static final DeferredItem TELEPORTER_ITEM = EPItems.ITEMS.register("teleporter", - () -> new TeleporterBlock.Item(TELEPORTER.get(), new Item.Properties())); + public static final DeferredBlock TELEPORTER = registerBlock("teleporter", + TeleporterBlock::new, BlockBehaviour.Properties.of(). + requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); + public static final DeferredItem TELEPORTER_ITEM = createBlockItem("teleporter", + TeleporterBlock.Item::new, TELEPORTER); - public static final DeferredBlock BASIC_MACHINE_FRAME = BLOCKS.register("basic_machine_frame", - () -> new Block(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock BASIC_MACHINE_FRAME = registerBlock("basic_machine_frame", + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem BASIC_MACHINE_FRAME_ITEM = createBlockItem("basic_machine_frame", BASIC_MACHINE_FRAME); - public static final DeferredBlock HARDENED_MACHINE_FRAME = BLOCKS.register("hardened_machine_frame", - () -> new Block(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock HARDENED_MACHINE_FRAME = registerBlock("hardened_machine_frame", + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem HARDENED_MACHINE_FRAME_ITEM = createBlockItem("hardened_machine_frame", HARDENED_MACHINE_FRAME); - public static final DeferredBlock ADVANCED_MACHINE_FRAME = BLOCKS.register("advanced_machine_frame", - () -> new Block(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock ADVANCED_MACHINE_FRAME = registerBlock("advanced_machine_frame", + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem ADVANCED_MACHINE_FRAME_ITEM = createBlockItem("advanced_machine_frame", ADVANCED_MACHINE_FRAME); - public static final DeferredBlock REINFORCED_ADVANCED_MACHINE_FRAME = BLOCKS.register("reinforced_advanced_machine_frame", - () -> new Block(BlockBehaviour.Properties.of(). - requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL))); + public static final DeferredBlock REINFORCED_ADVANCED_MACHINE_FRAME = registerBlock("reinforced_advanced_machine_frame", + BlockBehaviour.Properties.of().requiresCorrectToolForDrops().strength(5.0f, 6.0f).sound(SoundType.METAL)); public static final DeferredItem REINFORCED_ADVANCED_MACHINE_FRAME_ITEM = createBlockItem("reinforced_advanced_machine_frame", REINFORCED_ADVANCED_MACHINE_FRAME); public static void register(IEventBus modEventBus) { diff --git a/src/main/java/me/jddev0/ep/block/EnergizerBlock.java b/src/main/java/me/jddev0/ep/block/EnergizerBlock.java index 69aefb6a8..72fb2a71b 100644 --- a/src/main/java/me/jddev0/ep/block/EnergizerBlock.java +++ b/src/main/java/me/jddev0/ep/block/EnergizerBlock.java @@ -19,7 +19,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -30,7 +31,7 @@ public class EnergizerBlock extends BaseEntityBlock { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty LIT = BlockStateProperties.LIT; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.getValue(LIT) ? 8 : 0; @@ -88,7 +89,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof EnergizerBlockEntity)) @@ -96,12 +97,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((EnergizerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/FiltrationPlantBlock.java b/src/main/java/me/jddev0/ep/block/FiltrationPlantBlock.java index 64b0b432d..f1598ca73 100644 --- a/src/main/java/me/jddev0/ep/block/FiltrationPlantBlock.java +++ b/src/main/java/me/jddev0/ep/block/FiltrationPlantBlock.java @@ -24,6 +24,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -87,7 +88,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof FiltrationPlantBlockEntity)) @@ -95,12 +96,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((FiltrationPlantBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/FluidDrainerBlock.java b/src/main/java/me/jddev0/ep/block/FluidDrainerBlock.java index d7b8c31fb..d6036c885 100644 --- a/src/main/java/me/jddev0/ep/block/FluidDrainerBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidDrainerBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof FluidDrainerBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((FluidDrainerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/FluidFillerBlock.java b/src/main/java/me/jddev0/ep/block/FluidFillerBlock.java index 519f31f07..e30153959 100644 --- a/src/main/java/me/jddev0/ep/block/FluidFillerBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidFillerBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof FluidFillerBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((FluidFillerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/FluidPipeBlock.java b/src/main/java/me/jddev0/ep/block/FluidPipeBlock.java index 1e2ef8c70..12b5c5945 100644 --- a/src/main/java/me/jddev0/ep/block/FluidPipeBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidPipeBlock.java @@ -13,6 +13,7 @@ import net.minecraft.network.protocol.game.ClientboundSetActionBarTextPacket; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.RandomSource; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; @@ -20,9 +21,7 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.item.context.UseOnContext; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.*; import net.minecraft.world.level.block.*; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; @@ -35,6 +34,7 @@ import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.level.material.FluidState; import net.minecraft.world.level.material.Fluids; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; @@ -48,7 +48,9 @@ public class FluidPipeBlock extends BaseEntityBlock implements SimpleWaterloggedBlock, WrenchConfigurable { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> { return instance.group(ExtraCodecs.NON_EMPTY_STRING.xmap(Tier::valueOf, Tier::toString).fieldOf("tier"). - forGetter(FluidPipeBlock::getTier)).apply(instance, FluidPipeBlock::new); + forGetter(FluidPipeBlock::getTier), + Properties.CODEC.fieldOf("properties").forGetter(Block::properties)). + apply(instance, FluidPipeBlock::new); }); public static final EnumProperty UP = EPBlockStateProperties.PIPE_CONNECTION_UP; @@ -88,8 +90,8 @@ public static Block getBlockFromTier(Tier tier) { }; } - public FluidPipeBlock(Tier tier) { - super(tier.getProperties()); + public FluidPipeBlock(Tier tier, Properties properties) { + super(properties); this.tier = tier; @@ -297,11 +299,12 @@ public FluidState getFluidState(BlockState state) { } @Override - public BlockState updateShape(BlockState state, Direction facing, BlockState facingState, LevelAccessor level, BlockPos selfPos, BlockPos facingPos) { + public BlockState updateShape(BlockState state, LevelReader level, ScheduledTickAccess tickView, BlockPos selfPos, Direction facing, + BlockPos facingPos, BlockState facingState, RandomSource random) { if(state.getValue(WATERLOGGED)) - level.scheduleTick(selfPos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); + tickView.scheduleTick(selfPos, Fluids.WATER, Fluids.WATER.getTickDelay(level)); - return super.updateShape(state, facing, facingState, level, selfPos, facingPos); + return super.updateShape(state, level, tickView, selfPos, facing, facingPos, facingState, random); } @Override @@ -310,47 +313,31 @@ protected void createBlockStateDefinition(StateDefinition.Builder pipeConnectionProperty = getPipeConnectionPropertyFromDirection(dir); - newState = defaultBlockState(). - setValue(UP, selfState.getValue(UP)). - setValue(DOWN, selfState.getValue(DOWN)). - setValue(NORTH, selfState.getValue(NORTH)). - setValue(SOUTH, selfState.getValue(SOUTH)). - setValue(EAST, selfState.getValue(EAST)). - setValue(WEST, selfState.getValue(WEST)). - setValue(pipeConnectionProperty, shouldConnectTo(level, selfPos, selfState, dir)). - setValue(WATERLOGGED, fluidState.getType() == Fluids.WATER); + newState = newState.setValue(pipeConnectionProperty, shouldConnectTo(level, selfPos, selfState, dir)); + level.setBlockAndUpdate(selfPos, newState); } - level.setBlockAndUpdate(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 8405b208e..e51c37a90 100644 --- a/src/main/java/me/jddev0/ep/block/FluidPumpBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidPumpBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof FluidPumpBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((FluidPumpBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/FluidTankBlock.java b/src/main/java/me/jddev0/ep/block/FluidTankBlock.java index 9d657a6d0..c8dd77588 100644 --- a/src/main/java/me/jddev0/ep/block/FluidTankBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidTankBlock.java @@ -25,7 +25,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -34,10 +34,12 @@ public class FluidTankBlock extends BaseEntityBlock { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> { return instance.group(ExtraCodecs.NON_EMPTY_STRING.xmap(Tier::valueOf, Tier::toString).fieldOf("tier"). - forGetter(FluidTankBlock::getTier)).apply(instance, FluidTankBlock::new); + forGetter(FluidTankBlock::getTier), + Properties.CODEC.fieldOf("properties").forGetter(Block::properties)). + apply(instance, FluidTankBlock::new); }); - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; private final Tier tier; @@ -49,8 +51,8 @@ public static Block getBlockFromTier(Tier tier) { }; } - public FluidTankBlock(Tier tier) { - super(tier.getProperties()); + public FluidTankBlock(Tier tier, Properties properties) { + super(properties); this.tier = tier; @@ -94,7 +96,7 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos blockPo @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof FluidTankBlockEntity) || ((FluidTankBlockEntity)blockEntity).getTier() != tier) @@ -102,7 +104,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((FluidTankBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/me/jddev0/ep/block/FluidTransposerBlock.java b/src/main/java/me/jddev0/ep/block/FluidTransposerBlock.java index 930a056aa..bf1b7b5e1 100644 --- a/src/main/java/me/jddev0/ep/block/FluidTransposerBlock.java +++ b/src/main/java/me/jddev0/ep/block/FluidTransposerBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -25,7 +26,7 @@ public class FluidTransposerBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(FluidTransposerBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected FluidTransposerBlock(Properties props) { super(props); @@ -80,7 +81,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof FluidTransposerBlockEntity)) @@ -88,12 +89,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((FluidTransposerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/HeatGeneratorBlock.java b/src/main/java/me/jddev0/ep/block/HeatGeneratorBlock.java index fd2331a4e..aac375888 100644 --- a/src/main/java/me/jddev0/ep/block/HeatGeneratorBlock.java +++ b/src/main/java/me/jddev0/ep/block/HeatGeneratorBlock.java @@ -55,7 +55,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof HeatGeneratorBlockEntity)) @@ -63,7 +63,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((HeatGeneratorBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Nullable diff --git a/src/main/java/me/jddev0/ep/block/InductionSmelterBlock.java b/src/main/java/me/jddev0/ep/block/InductionSmelterBlock.java index 83e701012..252c09b5f 100644 --- a/src/main/java/me/jddev0/ep/block/InductionSmelterBlock.java +++ b/src/main/java/me/jddev0/ep/block/InductionSmelterBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -28,7 +29,7 @@ public class InductionSmelterBlock extends BaseEntityBlock { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty LIT = BlockStateProperties.LIT; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.getValue(LIT) ? 5 : 0; @@ -86,7 +87,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof InductionSmelterBlockEntity)) @@ -94,12 +95,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((InductionSmelterBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltLoaderBlock.java b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltLoaderBlock.java index 2753330a9..d639fe312 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltLoaderBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltLoaderBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -25,7 +26,7 @@ public class ItemConveyorBeltLoaderBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(ItemConveyorBeltLoaderBlock::new); public static final BooleanProperty ENABLED = BlockStateProperties.ENABLED; - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; protected ItemConveyorBeltLoaderBlock(Properties props) { super(props); @@ -80,7 +81,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof ItemConveyorBeltLoaderBlockEntity)) @@ -88,12 +89,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((ItemConveyorBeltLoaderBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltMergerBlock.java b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltMergerBlock.java index 81da792c8..f9b086159 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltMergerBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltMergerBlock.java @@ -14,13 +14,13 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import org.jetbrains.annotations.Nullable; public class ItemConveyorBeltMergerBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(ItemConveyorBeltMergerBlock::new); - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected ItemConveyorBeltMergerBlock(Properties 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 b1dedbb98..910655c6f 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSorterBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSorterBlock.java @@ -18,7 +18,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -26,7 +27,7 @@ public class ItemConveyorBeltSorterBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(ItemConveyorBeltSorterBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected ItemConveyorBeltSorterBlock(Properties props) { super(props); @@ -63,7 +64,7 @@ public int getSignal(BlockState state, BlockGetter getter, BlockPos blockPos, Di @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof ItemConveyorBeltSorterBlockEntity)) @@ -71,24 +72,22 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((ItemConveyorBeltSorterBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; - int dx = fromPos.getX() - selfPos.getX(); - int dy = fromPos.getY() - selfPos.getY(); - int dz = fromPos.getZ() - selfPos.getZ(); - Direction dir = Direction.fromDelta(dx, dy, dz); - if(dir == Direction.UP || dir == Direction.DOWN || dir == selfState.getValue(FACING)) - return; + for(Direction dir:Direction.values()) { + if(dir == Direction.UP || dir == Direction.DOWN || dir == selfState.getValue(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 cd1bcfc4d..74a2a0f86 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSplitterBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSplitterBlock.java @@ -14,13 +14,13 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import org.jetbrains.annotations.Nullable; public class ItemConveyorBeltSplitterBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(ItemConveyorBeltSplitterBlock::new); - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected ItemConveyorBeltSplitterBlock(Properties 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 fd7286c99..c743d0105 100644 --- a/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSwitchBlock.java +++ b/src/main/java/me/jddev0/ep/block/ItemConveyorBeltSwitchBlock.java @@ -15,14 +15,15 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import org.jetbrains.annotations.Nullable; public class ItemConveyorBeltSwitchBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(ItemConveyorBeltSwitchBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected ItemConveyorBeltSwitchBlock(Properties props) { super(props); @@ -47,8 +48,8 @@ public RenderShape getRenderShape(BlockState state) { } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/LightningGeneratorBlock.java b/src/main/java/me/jddev0/ep/block/LightningGeneratorBlock.java index 002b35189..8177a7ca6 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.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -76,7 +77,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder CODEC = simpleCodec(MinecartChargerBlock::new); - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; protected MinecartChargerBlock(Properties props) { super(props); @@ -73,7 +73,7 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos blockPo @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof MinecartChargerBlockEntity)) @@ -81,7 +81,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((MinecartChargerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/me/jddev0/ep/block/MinecartUnchargerBlock.java b/src/main/java/me/jddev0/ep/block/MinecartUnchargerBlock.java index a77cda688..7ef7daec0 100644 --- a/src/main/java/me/jddev0/ep/block/MinecartUnchargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/MinecartUnchargerBlock.java @@ -23,7 +23,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -32,7 +32,7 @@ public class MinecartUnchargerBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(MinecartUnchargerBlock::new); - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.FACING; protected MinecartUnchargerBlock(Properties props) { super(props); @@ -73,7 +73,7 @@ public int getAnalogOutputSignal(BlockState state, Level level, BlockPos blockPo @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof MinecartUnchargerBlockEntity)) @@ -81,7 +81,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((MinecartUnchargerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override diff --git a/src/main/java/me/jddev0/ep/block/PlantGrowthChamberBlock.java b/src/main/java/me/jddev0/ep/block/PlantGrowthChamberBlock.java index 9e3a3ee04..26855c779 100644 --- a/src/main/java/me/jddev0/ep/block/PlantGrowthChamberBlock.java +++ b/src/main/java/me/jddev0/ep/block/PlantGrowthChamberBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -25,7 +26,7 @@ public class PlantGrowthChamberBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(PlantGrowthChamberBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected PlantGrowthChamberBlock(Properties props) { super(props); @@ -80,7 +81,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof PlantGrowthChamberBlockEntity)) @@ -88,12 +89,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((PlantGrowthChamberBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/PoweredFurnaceBlock.java b/src/main/java/me/jddev0/ep/block/PoweredFurnaceBlock.java index bd9abdfe3..c274f19dd 100644 --- a/src/main/java/me/jddev0/ep/block/PoweredFurnaceBlock.java +++ b/src/main/java/me/jddev0/ep/block/PoweredFurnaceBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -28,7 +29,7 @@ public class PoweredFurnaceBlock extends BaseEntityBlock { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty LIT = BlockStateProperties.LIT; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; public static final ToIntFunction LIGHT_EMISSION = (state) -> state.getValue(LIT) ? 5 : 0; @@ -86,7 +87,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof PoweredFurnaceBlockEntity)) @@ -94,12 +95,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((PoweredFurnaceBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/PressMoldMakerBlock.java b/src/main/java/me/jddev0/ep/block/PressMoldMakerBlock.java index 0232047d2..8d6693d3b 100644 --- a/src/main/java/me/jddev0/ep/block/PressMoldMakerBlock.java +++ b/src/main/java/me/jddev0/ep/block/PressMoldMakerBlock.java @@ -68,7 +68,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof PressMoldMakerBlockEntity)) @@ -76,6 +76,6 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((PressMoldMakerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } } diff --git a/src/main/java/me/jddev0/ep/block/PulverizerBlock.java b/src/main/java/me/jddev0/ep/block/PulverizerBlock.java index 941a8929f..971bed5ba 100644 --- a/src/main/java/me/jddev0/ep/block/PulverizerBlock.java +++ b/src/main/java/me/jddev0/ep/block/PulverizerBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof PulverizerBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((PulverizerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/SawmillBlock.java b/src/main/java/me/jddev0/ep/block/SawmillBlock.java index 6fd7f1aca..0a47bc3b4 100644 --- a/src/main/java/me/jddev0/ep/block/SawmillBlock.java +++ b/src/main/java/me/jddev0/ep/block/SawmillBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof SawmillBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((SawmillBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/SolarPanelBlock.java b/src/main/java/me/jddev0/ep/block/SolarPanelBlock.java index 862c185e6..10ee24e5e 100644 --- a/src/main/java/me/jddev0/ep/block/SolarPanelBlock.java +++ b/src/main/java/me/jddev0/ep/block/SolarPanelBlock.java @@ -36,7 +36,9 @@ public class SolarPanelBlock extends BaseEntityBlock { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> { return instance.group(ExtraCodecs.NON_EMPTY_STRING.xmap(Tier::valueOf, Tier::toString).fieldOf("tier"). - forGetter(SolarPanelBlock::getTier)).apply(instance, SolarPanelBlock::new); + forGetter(SolarPanelBlock::getTier), + Properties.CODEC.fieldOf("properties").forGetter(Block::properties)). + apply(instance, SolarPanelBlock::new); }); private static final VoxelShape SHAPE = Block.box(0.d, 0.d, 0.d, 16.d, 4.d, 16.d); @@ -54,8 +56,8 @@ public static Block getBlockFromTier(SolarPanelBlock.Tier tier) { }; } - public SolarPanelBlock(Tier tier) { - super(tier.getProperties()); + public SolarPanelBlock(Tier tier, Properties properties) { + super(properties); this.tier = tier; } @@ -102,7 +104,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof SolarPanelBlockEntity) || ((SolarPanelBlockEntity)blockEntity).getTier() != tier) @@ -110,7 +112,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((SolarPanelBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Nullable diff --git a/src/main/java/me/jddev0/ep/block/StoneSolidifierBlock.java b/src/main/java/me/jddev0/ep/block/StoneSolidifierBlock.java index 1243e7741..b94fbbafe 100644 --- a/src/main/java/me/jddev0/ep/block/StoneSolidifierBlock.java +++ b/src/main/java/me/jddev0/ep/block/StoneSolidifierBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -25,7 +26,7 @@ public class StoneSolidifierBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(StoneSolidifierBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected StoneSolidifierBlock(Properties props) { super(props); @@ -80,7 +81,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof StoneSolidifierBlockEntity)) @@ -88,12 +89,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((StoneSolidifierBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/TeleporterBlock.java b/src/main/java/me/jddev0/ep/block/TeleporterBlock.java index 3c91956e2..177792c88 100644 --- a/src/main/java/me/jddev0/ep/block/TeleporterBlock.java +++ b/src/main/java/me/jddev0/ep/block/TeleporterBlock.java @@ -22,6 +22,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -96,7 +97,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof TeleporterBlockEntity)) @@ -104,12 +105,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((TeleporterBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/ThermalGeneratorBlock.java b/src/main/java/me/jddev0/ep/block/ThermalGeneratorBlock.java index 75c858a20..e33af13b9 100644 --- a/src/main/java/me/jddev0/ep/block/ThermalGeneratorBlock.java +++ b/src/main/java/me/jddev0/ep/block/ThermalGeneratorBlock.java @@ -17,7 +17,8 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -25,7 +26,7 @@ public class ThermalGeneratorBlock extends BaseEntityBlock { public static final MapCodec CODEC = simpleCodec(ThermalGeneratorBlock::new); public static final BooleanProperty POWERED = BlockStateProperties.POWERED; - public static final DirectionProperty FACING = BlockStateProperties.HORIZONTAL_FACING; + public static final EnumProperty FACING = BlockStateProperties.HORIZONTAL_FACING; protected ThermalGeneratorBlock(Properties props) { super(props); @@ -80,7 +81,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof ThermalGeneratorBlockEntity)) @@ -88,12 +89,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((ThermalGeneratorBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/TimeControllerBlock.java b/src/main/java/me/jddev0/ep/block/TimeControllerBlock.java index 47b10ebcf..242a27c31 100644 --- a/src/main/java/me/jddev0/ep/block/TimeControllerBlock.java +++ b/src/main/java/me/jddev0/ep/block/TimeControllerBlock.java @@ -40,7 +40,7 @@ public RenderShape getRenderShape(BlockState state) { @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof TimeControllerBlockEntity)) @@ -48,6 +48,6 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((TimeControllerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } } diff --git a/src/main/java/me/jddev0/ep/block/TransformerBlock.java b/src/main/java/me/jddev0/ep/block/TransformerBlock.java index c4c00d751..b351b221a 100644 --- a/src/main/java/me/jddev0/ep/block/TransformerBlock.java +++ b/src/main/java/me/jddev0/ep/block/TransformerBlock.java @@ -22,7 +22,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.level.block.state.properties.DirectionProperty; +import net.minecraft.world.level.block.state.properties.EnumProperty; import org.jetbrains.annotations.Nullable; import java.util.List; @@ -37,7 +37,7 @@ public class TransformerBlock extends BaseEntityBlock { ).apply(instance, TransformerBlock::new); }); - public static final DirectionProperty FACING = BlockStateProperties.FACING; + public static final EnumProperty FACING = BlockStateProperties.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 db39bc429..d71bf77a2 100644 --- a/src/main/java/me/jddev0/ep/block/UnchargerBlock.java +++ b/src/main/java/me/jddev0/ep/block/UnchargerBlock.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.BlockStateProperties; import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.level.redstone.Orientation; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.Nullable; @@ -79,7 +80,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof UnchargerBlockEntity)) @@ -87,12 +88,12 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((UnchargerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Override - public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, BlockPos fromPos, boolean isMoving) { - super.neighborChanged(selfState, level, selfPos, fromBlock, fromPos, isMoving); + public void neighborChanged(BlockState selfState, Level level, BlockPos selfPos, Block fromBlock, @Nullable Orientation orientation, boolean isMoving) { + super.neighborChanged(selfState, level, selfPos, fromBlock, orientation, isMoving); if(level.isClientSide()) return; diff --git a/src/main/java/me/jddev0/ep/block/WeatherControllerBlock.java b/src/main/java/me/jddev0/ep/block/WeatherControllerBlock.java index fc9fc71eb..2df5b416b 100644 --- a/src/main/java/me/jddev0/ep/block/WeatherControllerBlock.java +++ b/src/main/java/me/jddev0/ep/block/WeatherControllerBlock.java @@ -56,7 +56,7 @@ public void onRemove(BlockState state, Level level, BlockPos blockPos, BlockStat @Override public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos blockPos, Player player, BlockHitResult hit) { if(level.isClientSide()) - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; BlockEntity blockEntity = level.getBlockEntity(blockPos); if(!(blockEntity instanceof WeatherControllerBlockEntity)) @@ -64,7 +64,7 @@ public InteractionResult useWithoutItem(BlockState state, Level level, BlockPos player.openMenu((WeatherControllerBlockEntity)blockEntity, blockPos); - return InteractionResult.sidedSuccess(level.isClientSide()); + return InteractionResult.SUCCESS; } @Nullable 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 a758cd1e8..0a30b9517 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedAutoCrafterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedAutoCrafterBlockEntity.java @@ -13,12 +13,16 @@ 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.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.*; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.*; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -27,10 +31,7 @@ import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.inventory.TransientCraftingContainer; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.neoforge.energy.IEnergyStorage; @@ -86,7 +87,8 @@ public int getMaxStackSize() { private final boolean[] hasRecipeLoaded = new boolean[] { false, false, false }; - private final ResourceLocation[] recipeIdForSetRecipe = new ResourceLocation[] { + @SuppressWarnings("unchecked") + private final ResourceKey>[] recipeIdForSetRecipe = new ResourceKey[] { null, null, null }; @SuppressWarnings("unchecked") @@ -287,7 +289,7 @@ protected void saveAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr for(int i = 0;i < 3;i++) { if(craftingRecipe[i] != null) - nbt.put("recipe.id." + i, StringTag.valueOf(craftingRecipe[i].id().toString())); + nbt.put("recipe.id." + i, StringTag.valueOf(craftingRecipe[i].id().location().toString())); nbt.put("recipe.progress." + i, IntTag.valueOf(progress[i])); nbt.put("recipe.max_progress." + i, IntTag.valueOf(maxProgress[i])); @@ -323,7 +325,7 @@ protected void loadAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr if(!(tag instanceof StringTag stringTag)) throw new IllegalArgumentException("Tag must be of type StringTag!"); - recipeIdForSetRecipe[i] = ResourceLocation.tryParse(stringTag.getAsString()); + recipeIdForSetRecipe[i] = ResourceKey.create(Registries.RECIPE, ResourceLocation.tryParse(stringTag.getAsString())); } progress[i] = nbt.getInt("recipe.progress." + i); @@ -467,7 +469,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().location(), recipeIdForSetRecipe[currentRecipeIndex].location())) { recipeIdForSetRecipe[currentRecipeIndex] = recipes.get((i + 1) % recipes.size()).id(); break; @@ -477,7 +479,7 @@ public void cycleRecipe() { updateRecipe(currentRecipeIndex); } - public void setRecipeIdForSetRecipe(ResourceLocation recipeIdForSetRecipe) { + public void setRecipeIdForSetRecipe(ResourceKey> recipeIdForSetRecipe) { this.recipeIdForSetRecipe[currentRecipeIndex] = recipeIdForSetRecipe; updateRecipe(currentRecipeIndex); @@ -492,9 +494,7 @@ private void updateRecipe(int index) { if(hasRecipeLoaded[index] && craftingRecipe[index] != null && oldCopyOfRecipe[index] != null) { oldRecipe = craftingRecipe[index]; - oldResult = craftingRecipe[index].value() instanceof CustomRecipe?craftingRecipe[index].value(). - assemble(oldCopyOfRecipe[index].asCraftInput(), level.registryAccess()): - craftingRecipe[index].value().getResultItem(level.registryAccess()); + oldResult = craftingRecipe[index].value().assemble(oldCopyOfRecipe[index].asCraftInput(), level.registryAccess()); } hasRecipeLoaded[index] = true; @@ -504,19 +504,17 @@ private void updateRecipe(int index) { for(int i = 0;i < patternSlotsForRecipe.getContainerSize();i++) copyOfPatternSlots.setItem(i, patternSlotsForRecipe.getItem(i)); - Optional>> recipe = getRecipeFor(copyOfPatternSlots, level, recipeIdForSetRecipe[index]); + Optional>, RecipeHolder>> recipe = getRecipeFor(copyOfPatternSlots, level, 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().location(), recipeIdForSetRecipe[index].location())) { recipeIdForSetRecipe[index] = craftingRecipe[index].id(); resetProgress(index); } - ItemStack resultItemStack = craftingRecipe[index].value() instanceof CustomRecipe?craftingRecipe[index].value(). - assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()): - craftingRecipe[index].value().getResultItem(level.registryAccess()); + ItemStack resultItemStack = craftingRecipe[index].value().assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()); patternResultSlots[index].setItem(0, resultItemStack); @@ -576,9 +574,7 @@ private void craftItem(int index, CraftingContainer copyOfPatternSlots) { List outputItemStacks = new ArrayList<>(10); - ItemStack resultItemStack = craftingRecipe[index].value() instanceof CustomRecipe?craftingRecipe[index].value(). - assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()): - craftingRecipe[index].value().getResultItem(level.registryAccess()); + ItemStack resultItemStack = craftingRecipe[index].value().assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()); outputItemStacks.add(resultItemStack); @@ -688,9 +684,8 @@ private boolean canInsertItemsIntoOutputSlots(int index) { copyOfPatternSlots.setItem(i, patternSlotsForRecipe.getItem(i)); List outputItemStacks = new ArrayList<>(10); - ItemStack resultItemStack = craftingRecipe[index].value() instanceof CustomRecipe?craftingRecipe[index].value(). - assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()): - craftingRecipe[index].value().getResultItem(level.registryAccess()); + ItemStack resultItemStack = craftingRecipe[index].value(). + assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()); if(!resultItemStack.isEmpty()) outputItemStacks.add(resultItemStack); @@ -758,9 +753,7 @@ private boolean isOutputOrCraftingRemainderOfInput(ItemStack itemStack) { for(int j = 0;j < patternSlotsForRecipe.getContainerSize();j++) copyOfPatternSlots.setItem(j, patternSlotsForRecipe.getItem(j)); - ItemStack resultItemStack = craftingRecipe[i].value() instanceof CustomRecipe? - craftingRecipe[i].value().assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()): - craftingRecipe[i].value().getResultItem(level.registryAccess()); + ItemStack resultItemStack = craftingRecipe[i].value().assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()); if(ItemStack.isSameItemSameComponents(itemStack, resultItemStack)) return true; @@ -838,16 +831,19 @@ private SimpleContainer replaceCraftingPatternWithCurrentNBTItems(SimpleContaine } private List> getRecipesFor(CraftingContainer patternSlots, Level level) { - return level.getRecipeManager().getAllRecipesFor(RecipeType.CRAFTING). - stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id())). + if(!(level instanceof ServerLevel serverLevel)) + return List.of(); + + return RecipeUtils.getAllRecipesFor(serverLevel, RecipeType.CRAFTING). + stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id().location())). filter(recipe -> recipe.value().matches(patternSlots.asCraftInput(), level)). - sorted(Comparator.comparing(recipe -> recipe.value().getResultItem(level.registryAccess()).getDescriptionId())). + sorted(Comparator.comparing(recipe -> recipe.id().location())). toList(); } - private Optional>> getRecipeFor(CraftingContainer patternSlots, Level level, ResourceLocation recipeId) { + private Optional>, RecipeHolder>> getRecipeFor(CraftingContainer patternSlots, Level level, ResourceKey> 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().location().equals(recipeId.location())).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 2cd74453a..8461c60c5 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedChargerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedChargerBlockEntity.java @@ -8,8 +8,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; @@ -18,12 +22,15 @@ import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.IntTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -34,21 +41,26 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +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<>(); + private final IItemHandler itemHandlerSided = new InputOutputItemHandler(itemHandler, (i, stack) -> true, i -> { if(i < 0 || i > 2) return false; ItemStack stack = itemHandler.getStackInSlot(i); - if(level != null && RecipeUtils.isResultOfAny(level, ChargerRecipe.Type.INSTANCE, stack)) + if(level instanceof ServerLevel serverLevel && RecipeUtils.isResultOfAny(serverLevel, ChargerRecipe.Type.INSTANCE, stack)) return true; - if(level == null || RecipeUtils.isIngredientOfAny(level, ChargerRecipe.Type.INSTANCE, stack)) + if(!(level instanceof ServerLevel serverLevel) || RecipeUtils.isIngredientOfAny(serverLevel, ChargerRecipe.Type.INSTANCE, stack)) return false; IEnergyStorage energyStorage = stack.getCapability(Capabilities.EnergyStorage.ITEM); @@ -111,7 +123,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { if(slot >= 0 && slot < 3) { - if(level == null || RecipeUtils.isIngredientOfAny(level, ChargerRecipe.Type.INSTANCE, stack)) + if((level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, ChargerRecipe.Type.INSTANCE, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)) return true; IEnergyStorage energyStorage = stack.getCapability(Capabilities.EnergyStorage.ITEM); @@ -178,6 +192,7 @@ public int getCount() { @Override public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { syncEnergyToPlayer(player); + syncIngredientListToPlayer(player); return new AdvancedChargerMenu(id, inventory, this, upgradeModuleInventory, this.data); } @@ -210,7 +225,7 @@ protected void loadAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr } public static void tick(Level level, BlockPos blockPos, BlockState state, AdvancedChargerBlockEntity blockEntity) { - if(level.isClientSide) + if(level.isClientSide || !(level instanceof ServerLevel serverLevel)) return; if(!blockEntity.redstoneMode.isActive(state.getValue(AdvancedChargerBlock.POWERED))) @@ -227,7 +242,7 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, Advanc SimpleContainer inventory = new SimpleContainer(1); inventory.setItem(0, blockEntity.itemHandler.getStackInSlot(i)); - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverLevel.recipeAccess(). getRecipeFor(ChargerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); if(recipe.isPresent()) { if(blockEntity.energyConsumptionLeft[i] == -1) @@ -273,7 +288,7 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, Advanc if(blockEntity.energyConsumptionLeft[i] <= 0) { final int index = i; recipe.ifPresent(chargerRecipe -> blockEntity.itemHandler.setStackInSlot(index, - chargerRecipe.value().getResultItem(level.registryAccess()).copyWithCount(1))); + chargerRecipe.value().assemble(null, level.registryAccess()).copyWithCount(1))); blockEntity.resetProgress(i); } @@ -290,6 +305,9 @@ private void resetProgress(int index) { } private boolean hasRecipe(int index) { + if(!(level instanceof ServerLevel serverLevel)) + return false; + ItemStack stack = itemHandler.getStackInSlot(index); if(stack.getCapability(Capabilities.EnergyStorage.ITEM) != null) return true; @@ -297,7 +315,7 @@ private boolean hasRecipe(int index) { SimpleContainer inventory = new SimpleContainer(1); inventory.setItem(0, itemHandler.getStackInSlot(index)); - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverLevel.recipeAccess(). getRecipeFor(ChargerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); return recipe.isPresent(); @@ -310,4 +328,21 @@ protected void updateUpgradeModules() { super.updateUpgradeModules(); } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, EPRecipes.CHARGER_TYPE.get())), (ServerPlayer)player); + } + + 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 6d77900d0..39115dd81 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedCrusherBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedCrusherBlockEntity.java @@ -14,6 +14,7 @@ import me.jddev0.ep.util.*; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.item.ItemStack; @@ -68,7 +69,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0 -> level == null || RecipeUtils.isIngredientOfAny(level, CrusherRecipe.Type.INSTANCE, stack); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 1 -> false; default -> super.isItemValid(slot, stack); }; @@ -142,9 +145,9 @@ protected void craftItem(RecipeHolder recipe) { fluidStorage.fill(new FluidStack(EPFluids.DIRTY_WATER.get(), WATER_CONSUMPTION_PER_RECIPE), IFluidHandler.FluidAction.EXECUTE); itemHandler.extractItem(0, 1, false); - itemHandler.setStackInSlot(1, recipe.value().getResultItem(level.registryAccess()). + itemHandler.setStackInSlot(1, recipe.value().assemble(null, level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(1).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).getCount())); resetProgress(); } @@ -154,6 +157,6 @@ protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder= WATER_CONSUMPTION_PER_RECIPE && fluidStorage.getCapacity(1) - fluidStorage.getFluid(1).getAmount() >= WATER_CONSUMPTION_PER_RECIPE && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().assemble(null, level.registryAccess())); } } \ 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 cddb97ef8..bd0150bc6 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedPoweredFurnaceBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedPoweredFurnaceBlockEntity.java @@ -8,8 +8,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; @@ -28,10 +28,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.AbstractCookingRecipe; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeType; -import net.minecraft.world.item.crafting.SingleRecipeInput; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -41,12 +38,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +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 ResourceLocation> RECIPE_BLACKLIST = ModConfigs.COMMON_ADVANCED_POWERED_FURNACE_RECIPE_BLACKLIST.getValue(); private static final int ENERGY_USAGE_PER_INPUT_PER_TICK = ModConfigs.COMMON_ADVANCED_POWERED_FURNACE_ENERGY_CONSUMPTION_PER_INPUT_PER_TICK.getValue(); @@ -68,7 +66,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 +120,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> level == null || RecipeUtils.isIngredientOfAny(level, getRecipeForFurnaceModeUpgrade(), stack); + case 0, 1, 2 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, getRecipeForFurnaceModeUpgrade(), stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 3, 4, 5 -> false; default -> super.isItemValid(slot, stack); }; @@ -203,8 +203,7 @@ public int getCount() { @Override public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { syncEnergyToPlayer(player); - ModMessages.sendToPlayer(new SyncFurnaceRecipeTypeS2CPacket(getRecipeForFurnaceModeUpgrade(), getBlockPos()), - (ServerPlayer)player); + syncIngredientListToPlayer(player); return new AdvancedPoweredFurnaceMenu(id, inventory, this, upgradeModuleInventory, this.data); } @@ -264,7 +263,7 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, Advanc if(recipe.isEmpty()) continue; - int cookingTime = recipe.get().value().getCookingTime(); + int cookingTime = recipe.get().value().cookingTime(); if(blockEntity.maxProgress[i] == 0) //Default Cooking Time = 200 -> maxProgress = 34 (= 200 / 6) blockEntity.maxProgress[i] = Math.max(1, (int)Math.ceil(cookingTime * RECIPE_DURATION_MULTIPLIER / 6.f / @@ -341,8 +340,8 @@ private static void craftItem(int index, BlockPos blockPos, BlockState state, Ad return; blockEntity.itemHandler.extractItem(index, 1, false); - blockEntity.itemHandler.setStackInSlot(3 + index, recipe.get().value().getResultItem(level.registryAccess()).copyWithCount( - blockEntity.itemHandler.getStackInSlot(3 + index).getCount() + recipe.get().value().getResultItem(level.registryAccess()).getCount())); + blockEntity.itemHandler.setStackInSlot(3 + index, recipe.get().value().assemble(null, level.registryAccess()).copyWithCount( + blockEntity.itemHandler.getStackInSlot(3 + index).getCount() + recipe.get().value().assemble(null, level.registryAccess()).getCount())); blockEntity.resetProgress(index, blockPos, state); } @@ -361,20 +360,20 @@ private static boolean hasRecipe(int index, AdvancedPoweredFurnaceBlockEntity bl inventory.setItem(i, blockEntity.itemHandler.getStackInSlot(i)); return recipe.isPresent() && - InventoryUtils.canInsertItemIntoSlot(inventory, 3 + index, recipe.get().value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 3 + index, recipe.get().value().assemble(null, level.registryAccess())); } private Optional> getRecipeFor(Container container, Level level) { - return level.getRecipeManager().getAllRecipesFor(getRecipeForFurnaceModeUpgrade()). - stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id())). + if(!(level instanceof ServerLevel serverLevel)) + return Optional.empty(); + + return RecipeUtils.getAllRecipesFor(serverLevel, getRecipeForFurnaceModeUpgrade()). + stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id().location())). filter(recipe -> recipe.value().matches(new SingleRecipeInput(container.getItem(0)), level)). findFirst(); } public RecipeType getRecipeForFurnaceModeUpgrade() { - if(level != null && level.isClientSide()) - return recipeType; - double value = upgradeModuleInventory.getUpgradeModuleModifierEffect(3, UpgradeModuleModifier.FURNACE_MODE); if(value == 1) return RecipeType.BLASTING; @@ -384,11 +383,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++) @@ -398,8 +392,25 @@ protected void updateUpgradeModules() { if(level != null && !level.isClientSide()) ModMessages.sendToPlayersWithinXBlocks( - new SyncFurnaceRecipeTypeS2CPacket(getRecipeForFurnaceModeUpgrade(), getBlockPos()), + new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf((ServerLevel)level, getRecipeForFurnaceModeUpgrade())), getBlockPos(), (ServerLevel)level, 32 ); } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, getRecipeForFurnaceModeUpgrade())), (ServerPlayer)player); + } + + 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 e7407a37a..c11f30389 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AdvancedPulverizerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AdvancedPulverizerBlockEntity.java @@ -14,6 +14,7 @@ import me.jddev0.ep.util.*; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.item.ItemStack; @@ -67,7 +68,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0 -> level == null || RecipeUtils.isIngredientOfAny(level, PulverizerRecipe.Type.INSTANCE, stack); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 1, 2 -> false; default -> super.isItemValid(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 4778dfc57..7e29033dc 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AlloyFurnaceBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AlloyFurnaceBlockEntity.java @@ -4,18 +4,20 @@ 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 me.jddev0.ep.util.RecipeUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.IntTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; @@ -23,6 +25,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeInput; import net.minecraft.world.level.Level; @@ -33,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; @@ -46,11 +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.getStackInSlot(i); - return item.getBurnTime(null) <= 0; + return level != null && item.getBurnTime(null, level.fuelValues()) <= 0; } return i > 3 && i < 6; @@ -83,12 +90,10 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> level == null || level.getRecipeManager(). - getAllRecipesFor(AlloyFurnaceRecipe.Type.INSTANCE).stream(). - map(RecipeHolder::value).map(AlloyFurnaceRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); - case 3 -> stack.getBurnTime(null) > 0; + case 0, 1, 2 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, EPRecipes.ALLOY_FURNACE_TYPE.get(), stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); + case 3 -> level != null && stack.getBurnTime(null, level.fuelValues()) > 0; case 4, 5 -> false; default -> super.isItemValid(slot, stack); }; @@ -150,6 +155,8 @@ public int getCount() { @Nullable @Override public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + syncIngredientListToPlayer(player); + return new AlloyFurnaceMenu(id, inventory, this, data); } @@ -225,13 +232,13 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, AlloyF if(blockEntity.litDuration <= 0) { ItemStack item = blockEntity.itemHandler.getStackInSlot(3); - blockEntity.litDuration = blockEntity.maxLitDuration = item.getBurnTime(null); + blockEntity.litDuration = blockEntity.maxLitDuration = item.getBurnTime(null, level.fuelValues()); if(blockEntity.maxLitDuration > 0) { blockEntity.onHasEnoughFuel(); hasNotEnoughFuel = false; - if(item.hasCraftingRemainingItem()) - blockEntity.itemHandler.setStackInSlot(3, item.getCraftingRemainingItem()); + if(!item.getCraftingRemainder().isEmpty()) + blockEntity.itemHandler.setStackInSlot(3, item.getCraftingRemainder()); else blockEntity.itemHandler.extractItem(3, 1, false); } @@ -293,7 +300,10 @@ private RecipeInput getRecipeInput(Container inventory) { } private Optional> getRecipeFor(Container inventory) { - return level.getRecipeManager().getRecipeFor(EPRecipes.ALLOY_FURNACE_TYPE.get(), getRecipeInput(inventory), level); + if(!(level instanceof ServerLevel serverLevel)) + return Optional.empty(); + + return serverLevel.recipeAccess().getRecipeFor(EPRecipes.ALLOY_FURNACE_TYPE.get(), getRecipeInput(inventory), level); } private Optional> getCurrentRecipe() { @@ -379,4 +389,21 @@ private void resetProgress() { progress = 0; maxProgress = 0; } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, EPRecipes.ALLOY_FURNACE_TYPE.get())), (ServerPlayer)player); + } + + 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 b686007e6..32392a27a 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AssemblingMachineBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AssemblingMachineBlockEntity.java @@ -11,8 +11,10 @@ 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.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.item.ItemStack; @@ -58,11 +60,9 @@ protected ItemStackHandler initInventoryStorage() { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0, 1, 2, 3 -> level == null || level.getRecipeManager(). - getAllRecipesFor(AssemblingMachineRecipe.Type.INSTANCE).stream(). - map(RecipeHolder::value).map(AssemblingMachineRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); + case 0, 1, 2, 3 -> ((level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); case 4 -> false; default -> false; }; @@ -155,9 +155,9 @@ protected void craftItem(RecipeHolder recipe) { itemHandler.extractItem(indexMinCount, input.count(), false); } - itemHandler.setStackInSlot(4, recipe.value().getResultItem(level.registryAccess()).copyWithCount( + itemHandler.setStackInSlot(4, recipe.value().assemble(null, level.registryAccess()).copyWithCount( itemHandler.getStackInSlot(4).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).getCount())); resetProgress(); } @@ -165,6 +165,6 @@ protected void craftItem(RecipeHolder recipe) { @Override protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder recipe) { return level != null && - InventoryUtils.canInsertItemIntoSlot(inventory, 4, recipe.value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 4, recipe.value().assemble(null, level.registryAccess())); } } \ 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 67ea3d302..09a50dfa4 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AutoCrafterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AutoCrafterBlockEntity.java @@ -13,12 +13,16 @@ 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.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.*; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.*; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -27,10 +31,7 @@ import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.inventory.TransientCraftingContainer; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.neoforge.energy.IEnergyStorage; @@ -65,7 +66,7 @@ public int getMaxStackSize() { private final SimpleContainer patternResultSlots = new SimpleContainer(1); private final ContainerListener updatePatternListener = container -> updateRecipe(); private boolean hasRecipeLoaded = false; - private ResourceLocation recipeIdForSetRecipe; + private ResourceKey> recipeIdForSetRecipe; private RecipeHolder craftingRecipe; private CraftingContainer oldCopyOfRecipe; private final AbstractContainerMenu dummyContainerMenu = new AbstractContainerMenu(null, -1) { @@ -216,7 +217,7 @@ protected void saveAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr nbt.put("pattern", savePatternContainer(registries)); if(craftingRecipe != null) - nbt.put("recipe.id", StringTag.valueOf(craftingRecipe.id().toString())); + nbt.put("recipe.id", StringTag.valueOf(craftingRecipe.id().location().toString())); nbt.put("recipe.progress", IntTag.valueOf(progress)); nbt.put("recipe.max_progress", IntTag.valueOf(maxProgress)); @@ -246,7 +247,7 @@ protected void loadAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr if(!(tag instanceof StringTag stringTag)) throw new IllegalArgumentException("Tag must be of type StringTag!"); - recipeIdForSetRecipe = ResourceLocation.tryParse(stringTag.getAsString()); + recipeIdForSetRecipe = ResourceKey.create(Registries.RECIPE, ResourceLocation.tryParse(stringTag.getAsString())); } progress = nbt.getInt("recipe.progress"); @@ -380,7 +381,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().location(), recipeIdForSetRecipe.location())) { recipeIdForSetRecipe = recipes.get((i + 1) % recipes.size()).id(); break; @@ -390,7 +391,7 @@ public void cycleRecipe() { updateRecipe(); } - public void setRecipeIdForSetRecipe(ResourceLocation recipeIdForSetRecipe) { + public void setRecipeIdForSetRecipe(ResourceKey> recipeIdForSetRecipe) { this.recipeIdForSetRecipe = recipeIdForSetRecipe; updateRecipe(); @@ -405,9 +406,7 @@ private void updateRecipe() { if(hasRecipeLoaded && craftingRecipe != null && oldCopyOfRecipe != null) { oldRecipe = craftingRecipe; - oldResult = craftingRecipe.value() instanceof CustomRecipe?craftingRecipe.value(). - assemble(oldCopyOfRecipe.asCraftInput(), level.registryAccess()): - craftingRecipe.value().getResultItem(level.registryAccess()); + oldResult = craftingRecipe.value().assemble(oldCopyOfRecipe.asCraftInput(), level.registryAccess()); } hasRecipeLoaded = true; @@ -417,19 +416,17 @@ private void updateRecipe() { for(int i = 0;i < patternSlotsForRecipe.getContainerSize();i++) copyOfPatternSlots.setItem(i, patternSlotsForRecipe.getItem(i)); - Optional>> recipe = getRecipeFor(copyOfPatternSlots, level, recipeIdForSetRecipe); + Optional>, RecipeHolder>> recipe = getRecipeFor(copyOfPatternSlots, level, 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().location(), recipeIdForSetRecipe.location())) { recipeIdForSetRecipe = craftingRecipe.id(); resetProgress(); } - ItemStack resultItemStack = craftingRecipe.value() instanceof CustomRecipe?craftingRecipe.value(). - assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()): - craftingRecipe.value().getResultItem(level.registryAccess()); + ItemStack resultItemStack = craftingRecipe.value().assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()); patternResultSlots.setItem(0, resultItemStack); @@ -488,9 +485,7 @@ private void craftItem(CraftingContainer copyOfPatternSlots) { List outputItemStacks = new ArrayList<>(10); - ItemStack resultItemStack = craftingRecipe.value() instanceof CustomRecipe?craftingRecipe.value(). - assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()): - craftingRecipe.value().getResultItem(level.registryAccess()); + ItemStack resultItemStack = craftingRecipe.value().assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()); outputItemStacks.add(resultItemStack); @@ -598,9 +593,7 @@ private boolean canInsertItemsIntoOutputSlots() { copyOfPatternSlots.setItem(i, patternSlotsForRecipe.getItem(i)); List outputItemStacks = new ArrayList<>(10); - ItemStack resultItemStack = craftingRecipe.value() instanceof CustomRecipe?craftingRecipe.value(). - assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()): - craftingRecipe.value().getResultItem(level.registryAccess()); + ItemStack resultItemStack = craftingRecipe.value().assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()); if(!resultItemStack.isEmpty()) outputItemStacks.add(resultItemStack); @@ -666,9 +659,7 @@ private boolean isOutputOrCraftingRemainderOfInput(ItemStack itemStack) { for(int i = 0;i < patternSlotsForRecipe.getContainerSize();i++) copyOfPatternSlots.setItem(i, patternSlotsForRecipe.getItem(i)); - ItemStack resultItemStack = craftingRecipe.value() instanceof CustomRecipe?craftingRecipe.value(). - assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()): - craftingRecipe.value().getResultItem(level.registryAccess()); + ItemStack resultItemStack = craftingRecipe.value().assemble(copyOfPatternSlots.asCraftInput(), level.registryAccess()); if(ItemStack.isSameItemSameComponents(itemStack, resultItemStack)) return true; @@ -743,16 +734,19 @@ private SimpleContainer replaceCraftingPatternWithCurrentNBTItems(SimpleContaine } private List> getRecipesFor(CraftingContainer patternSlots, Level level) { - return level.getRecipeManager().getAllRecipesFor(RecipeType.CRAFTING). - stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id())). + if(!(level instanceof ServerLevel serverLevel)) + return List.of(); + + return RecipeUtils.getAllRecipesFor(serverLevel, RecipeType.CRAFTING). + stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id().location())). filter(recipe -> recipe.value().matches(patternSlots.asCraftInput(), level)). - sorted(Comparator.comparing(recipe -> recipe.value().getResultItem(level.registryAccess()).getDescriptionId())). + sorted(Comparator.comparing(recipe -> recipe.id().location())). toList(); } - private Optional>> getRecipeFor(CraftingContainer patternSlots, Level level, ResourceLocation recipeId) { + private Optional>, RecipeHolder>> getRecipeFor(CraftingContainer patternSlots, Level level, ResourceKey> 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().location().equals(recipeId.location())).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 248a35486..993b38c04 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AutoPressMoldMakerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AutoPressMoldMakerBlockEntity.java @@ -93,9 +93,9 @@ protected void craftItem(RecipeHolder recipe) { itemHandler.setStackInSlot(1, shovel); itemHandler.extractItem(0, recipe.value().getClayCount(), false); - itemHandler.setStackInSlot(2, recipe.value().getResultItem(level.registryAccess()). + itemHandler.setStackInSlot(2, recipe.value().assemble(null, level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(2).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).getCount())); resetProgress(); } @@ -106,6 +106,6 @@ protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder= recipe.value().getClayCount() && itemHandler.getStackInSlot(1).is(ItemTags.SHOVELS) && - InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().assemble(null, level.registryAccess())); } } \ 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 93f67a8c4..6288b8ff2 100644 --- a/src/main/java/me/jddev0/ep/block/entity/AutoStonecutterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/AutoStonecutterBlockEntity.java @@ -57,7 +57,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0 -> level == null || RecipeUtils.isIngredientOfAny(level, recipeType, stack); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 1 -> stack.is(ItemTags.PICKAXES); case 2 -> false; default -> super.isItemValid(slot, stack); @@ -90,9 +92,9 @@ protected void craftItem(RecipeHolder recipe) { itemHandler.setStackInSlot(1, pickaxe); itemHandler.extractItem(0, 1, false); - itemHandler.setStackInSlot(2, recipe.value().getResultItem(level.registryAccess()). + itemHandler.setStackInSlot(2, recipe.value().assemble(null, level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(2).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).getCount())); resetProgress(); } @@ -102,6 +104,6 @@ protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder { + extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity + implements IngredientPacketUpdate { public static final float CHARGER_RECIPE_ENERGY_CONSUMPTION_MULTIPLIER = ModConfigs.COMMON_CHARGER_CHARGER_RECIPE_ENERGY_CONSUMPTION_MULTIPLIER.getValue(); + protected List ingredientsOfRecipes = new ArrayList<>(); + private final IItemHandler itemHandlerSided = new InputOutputItemHandler(itemHandler, (i, stack) -> true, i -> { if(i != 0) return false; ItemStack stack = itemHandler.getStackInSlot(i); - if(level != null && RecipeUtils.isResultOfAny(level, ChargerRecipe.Type.INSTANCE, stack)) + if(level instanceof ServerLevel serverLevel && RecipeUtils.isResultOfAny(serverLevel, ChargerRecipe.Type.INSTANCE, stack)) return true; - if(level == null || RecipeUtils.isIngredientOfAny(level, ChargerRecipe.Type.INSTANCE, stack)) + if(!(level instanceof ServerLevel serverLevel) || RecipeUtils.isIngredientOfAny(serverLevel, ChargerRecipe.Type.INSTANCE, stack)) return false; IEnergyStorage energyStorage = stack.getCapability(Capabilities.EnergyStorage.ITEM); @@ -109,7 +121,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { if(slot == 0) { - if(level == null || RecipeUtils.isIngredientOfAny(level, ChargerRecipe.Type.INSTANCE, stack)) + if(((level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, EPRecipes.CHARGER_TYPE.get(), stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack))) return true; IEnergyStorage energyStorage = stack.getCapability(Capabilities.EnergyStorage.ITEM); @@ -173,6 +187,7 @@ public int getCount() { @Override public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { syncEnergyToPlayer(player); + syncIngredientListToPlayer(player); return new ChargerMenu(id, inventory, this, upgradeModuleInventory, this.data); } @@ -203,7 +218,7 @@ protected void loadAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr } public static void tick(Level level, BlockPos blockPos, BlockState state, ChargerBlockEntity blockEntity) { - if(level.isClientSide) + if(!(level instanceof ServerLevel serverLevel)) return; if(!blockEntity.redstoneMode.isActive(state.getValue(ChargerBlock.POWERED))) @@ -217,7 +232,7 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, Charge for(int i = 0;i < blockEntity.itemHandler.getSlots();i++) inventory.setItem(i, blockEntity.itemHandler.getStackInSlot(i)); - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverLevel.recipeAccess(). getRecipeFor(ChargerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); if(recipe.isPresent()) { if(blockEntity.energyConsumptionLeft == -1) @@ -262,7 +277,7 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, Charge if(blockEntity.energyConsumptionLeft <= 0) { recipe.ifPresent(chargerRecipe -> - blockEntity.itemHandler.setStackInSlot(0, chargerRecipe.value().getResultItem(level.registryAccess()).copyWithCount(1))); + blockEntity.itemHandler.setStackInSlot(0, chargerRecipe.value().assemble(null, level.registryAccess()).copyWithCount(1))); blockEntity.resetProgress(); } @@ -278,6 +293,9 @@ private void resetProgress() { } private boolean hasRecipe() { + if(!(level instanceof ServerLevel serverLevel)) + return false; + ItemStack stack = itemHandler.getStackInSlot(0); if(stack.getCapability(Capabilities.EnergyStorage.ITEM) != null) return true; @@ -286,7 +304,7 @@ private boolean hasRecipe() { for(int i = 0;i < itemHandler.getSlots();i++) inventory.setItem(i, itemHandler.getStackInSlot(i)); - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverLevel.recipeAccess(). getRecipeFor(ChargerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); return recipe.isPresent(); @@ -298,4 +316,21 @@ protected void updateUpgradeModules() { super.updateUpgradeModules(); } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, EPRecipes.CHARGER_TYPE.get())), (ServerPlayer)player); + } + + 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 79ecaaa22..8298303dc 100644 --- a/src/main/java/me/jddev0/ep/block/entity/CoalEngineBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/CoalEngineBlockEntity.java @@ -44,7 +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.getStackInSlot(i); - return item.getBurnTime(null) <= 0; + return level != null && item.getBurnTime(null, level.fuelValues()) <= 0; }); private int progress; @@ -101,7 +101,7 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { if(slot == 0) - return stack.getBurnTime(null) > 0; + return stack.getBurnTime(null, level.fuelValues()) > 0; return super.isItemValid(slot, stack); } @@ -205,7 +205,7 @@ private static void tickRecipe(Level level, BlockPos blockPos, BlockState state, ItemStack item = inventory.getItem(0); - int energyProduction = item.getBurnTime(null); + int energyProduction = item.getBurnTime(null, level.fuelValues()); energyProduction = (int)(energyProduction * ENERGY_PRODUCTION_MULTIPLIER); if(blockEntity.progress == 0) blockEntity.energyProductionLeft = energyProduction; @@ -227,8 +227,8 @@ private static void tickRecipe(Level level, BlockPos blockPos, BlockState state, if(blockEntity.progress == 0) { //Remove item instantly else the item could be removed before finished and energy was cheated - if(item.hasCraftingRemainingItem()) - blockEntity.itemHandler.setStackInSlot(0, item.getCraftingRemainingItem()); + if(!item.getCraftingRemainder().isEmpty()) + blockEntity.itemHandler.setStackInSlot(0, item.getCraftingRemainder()); else blockEntity.itemHandler.extractItem(0, 1, false); } @@ -350,9 +350,9 @@ private static boolean hasRecipe(CoalEngineBlockEntity blockEntity) { ItemStack item = inventory.getItem(0); - if(item.getBurnTime(null) <= 0) + if(blockEntity.level != null && item.getBurnTime(null, blockEntity.level.fuelValues()) <= 0) return false; - return !item.hasCraftingRemainingItem() || item.getCount() == 1; + return item.getCraftingRemainder().isEmpty() || item.getCount() == 1; } } \ No newline at end of file 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 1ccf2fda4..77cccb65b 100644 --- a/src/main/java/me/jddev0/ep/block/entity/CompressorBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/CompressorBlockEntity.java @@ -60,10 +60,10 @@ protected void craftItem(RecipeHolder recipe) { if(level == null || !hasRecipe()) return; - itemHandler.extractItem(0, recipe.value().getInputCount(), false); - itemHandler.setStackInSlot(1, recipe.value().getResultItem(level.registryAccess()). + itemHandler.extractItem(0, recipe.value().getInput().count(), false); + itemHandler.setStackInSlot(1, recipe.value().assemble(null, level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(1).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).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 ab7896f5a..1ea8aaadb 100644 --- a/src/main/java/me/jddev0/ep/block/entity/CrystalGrowthChamberBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/CrystalGrowthChamberBlockEntity.java @@ -9,8 +9,10 @@ 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.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.item.ItemStack; @@ -60,10 +62,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0 -> level == null || level.getRecipeManager(). - getAllRecipesFor(CrystalGrowthChamberRecipe.Type.INSTANCE).stream(). - map(RecipeHolder::value).map(CrystalGrowthChamberRecipe::getInput). - anyMatch(ingredient -> ingredient.test(stack)); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 1 -> false; default -> super.isItemValid(slot, stack); }; @@ -108,7 +109,7 @@ protected void craftItem(RecipeHolder recipe) { if(level == null || !hasRecipe()) return; - itemHandler.extractItem(0, recipe.value().getInputCount(), false); + itemHandler.extractItem(0, recipe.value().getInput().count(), false); ItemStack output = recipe.value().generateOutput(level.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 621bc0918..f85a2273f 100644 --- a/src/main/java/me/jddev0/ep/block/entity/EPBlockEntities.java +++ b/src/main/java/me/jddev0/ep/block/entity/EPBlockEntities.java @@ -18,8 +18,8 @@ private EPBlockEntities() {} private static Supplier> createFluidPipeBlockEntity(String name, Supplier blockSupplier) { - return BLOCK_ENTITIES.register(name, () -> BlockEntityType.Builder.of((blockPos, state) -> new FluidPipeBlockEntity(blockPos, state, - blockSupplier.get().getTier()), blockSupplier.get()).build(null)); + return BLOCK_ENTITIES.register(name, () -> new BlockEntityType<>((blockPos, state) -> new FluidPipeBlockEntity(blockPos, state, + blockSupplier.get().getTier()), blockSupplier.get())); } public static final Supplier> IRON_FLUID_PIPE_ENTITY = createFluidPipeBlockEntity("fluid_pipe", EPBlocks.IRON_FLUID_PIPE); @@ -28,8 +28,8 @@ private static Supplier> createFluidPipeBl private static Supplier> createFluidTankBlockEntity(String name, Supplier blockSupplier) { - return BLOCK_ENTITIES.register(name, () -> BlockEntityType.Builder.of((blockPos, state) -> new FluidTankBlockEntity(blockPos, state, - blockSupplier.get().getTier()), blockSupplier.get()).build(null)); + return BLOCK_ENTITIES.register(name, () -> new BlockEntityType<>((blockPos, state) -> new FluidTankBlockEntity(blockPos, state, + blockSupplier.get().getTier()), blockSupplier.get())); } public static final Supplier> FLUID_TANK_SMALL_ENTITY = createFluidTankBlockEntity("fluid_tank_small", EPBlocks.FLUID_TANK_SMALL); @@ -39,184 +39,184 @@ private static Supplier> createFluidTankBl createFluidTankBlockEntity("fluid_tank_large", EPBlocks.FLUID_TANK_LARGE); public static final Supplier> CREATIVE_FLUID_TANK_ENTITY = - BLOCK_ENTITIES.register("creative_fluid_tank", () -> BlockEntityType.Builder.of(CreativeFluidTankBlockEntity::new, - EPBlocks.CREATIVE_FLUID_TANK.get()).build(null)); + BLOCK_ENTITIES.register("creative_fluid_tank", () -> new BlockEntityType<>(CreativeFluidTankBlockEntity::new, + EPBlocks.CREATIVE_FLUID_TANK.get())); public static final Supplier> ITEM_CONVEYOR_BELT_ENTITY = - BLOCK_ENTITIES.register("item_conveyor_belt", () -> BlockEntityType.Builder.of(ItemConveyorBeltBlockEntity::new, - EPBlocks.ITEM_CONVEYOR_BELT.get()).build(null)); + BLOCK_ENTITIES.register("item_conveyor_belt", () -> new BlockEntityType<>(ItemConveyorBeltBlockEntity::new, + EPBlocks.ITEM_CONVEYOR_BELT.get())); public static final Supplier> ITEM_CONVEYOR_BELT_LOADER_ENTITY = - BLOCK_ENTITIES.register("item_conveyor_belt_loader", () -> BlockEntityType.Builder.of(ItemConveyorBeltLoaderBlockEntity::new, - EPBlocks.ITEM_CONVEYOR_BELT_LOADER.get()).build(null)); + BLOCK_ENTITIES.register("item_conveyor_belt_loader", () -> new BlockEntityType<>(ItemConveyorBeltLoaderBlockEntity::new, + EPBlocks.ITEM_CONVEYOR_BELT_LOADER.get())); public static final Supplier> ITEM_CONVEYOR_BELT_SORTER_ENTITY = - BLOCK_ENTITIES.register("item_conveyor_belt_sorter", () -> BlockEntityType.Builder.of(ItemConveyorBeltSorterBlockEntity::new, - EPBlocks.ITEM_CONVEYOR_BELT_SORTER.get()).build(null)); + BLOCK_ENTITIES.register("item_conveyor_belt_sorter", () -> new BlockEntityType<>(ItemConveyorBeltSorterBlockEntity::new, + EPBlocks.ITEM_CONVEYOR_BELT_SORTER.get())); public static final Supplier> ITEM_CONVEYOR_BELT_SWITCH_ENTITY = - BLOCK_ENTITIES.register("item_conveyor_belt_switch", () -> BlockEntityType.Builder.of(ItemConveyorBeltSwitchBlockEntity::new, - EPBlocks.ITEM_CONVEYOR_BELT_SWITCH.get()).build(null)); + BLOCK_ENTITIES.register("item_conveyor_belt_switch", () -> new BlockEntityType<>(ItemConveyorBeltSwitchBlockEntity::new, + EPBlocks.ITEM_CONVEYOR_BELT_SWITCH.get())); public static final Supplier> ITEM_CONVEYOR_BELT_SPLITTER_ENTITY = - BLOCK_ENTITIES.register("item_conveyor_belt_splitter", () -> BlockEntityType.Builder.of(ItemConveyorBeltSplitterBlockEntity::new, - EPBlocks.ITEM_CONVEYOR_BELT_SPLITTER.get()).build(null)); + BLOCK_ENTITIES.register("item_conveyor_belt_splitter", () -> new BlockEntityType<>(ItemConveyorBeltSplitterBlockEntity::new, + EPBlocks.ITEM_CONVEYOR_BELT_SPLITTER.get())); public static final Supplier> ITEM_CONVEYOR_BELT_MERGER_ENTITY = - BLOCK_ENTITIES.register("item_conveyor_belt_merger", () -> BlockEntityType.Builder.of(ItemConveyorBeltMergerBlockEntity::new, - EPBlocks.ITEM_CONVEYOR_BELT_MERGER.get()).build(null)); + BLOCK_ENTITIES.register("item_conveyor_belt_merger", () -> new BlockEntityType<>(ItemConveyorBeltMergerBlockEntity::new, + EPBlocks.ITEM_CONVEYOR_BELT_MERGER.get())); public static final Supplier> TIN_CABLE_ENTITY = - BLOCK_ENTITIES.register("tin_cable", () -> BlockEntityType.Builder.of((blockPos, state) -> - new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_TIN), EPBlocks.TIN_CABLE.get()).build(null)); + BLOCK_ENTITIES.register("tin_cable", () -> new BlockEntityType<>((blockPos, state) -> + new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_TIN), EPBlocks.TIN_CABLE.get())); public static final Supplier> COPPER_CABLE_ENTITY = - BLOCK_ENTITIES.register("copper_cable", () -> BlockEntityType.Builder.of((blockPos, state) -> - new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_COPPER), EPBlocks.COPPER_CABLE.get()).build(null)); + BLOCK_ENTITIES.register("copper_cable", () -> new BlockEntityType<>((blockPos, state) -> + new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_COPPER), EPBlocks.COPPER_CABLE.get())); public static final Supplier> GOLD_CABLE_ENTITY = - BLOCK_ENTITIES.register("gold_cable", () -> BlockEntityType.Builder.of((blockPos, state) -> - new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_GOLD), EPBlocks.GOLD_CABLE.get()).build(null)); + BLOCK_ENTITIES.register("gold_cable", () -> new BlockEntityType<>((blockPos, state) -> + new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_GOLD), EPBlocks.GOLD_CABLE.get())); public static final Supplier> ENERGIZED_COPPER_CABLE_ENTITY = - BLOCK_ENTITIES.register("energized_copper_cable", () -> BlockEntityType.Builder.of((blockPos, state) -> - new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_ENERGIZED_COPPER), EPBlocks.ENERGIZED_COPPER_CABLE.get()).build(null)); + BLOCK_ENTITIES.register("energized_copper_cable", () -> new BlockEntityType<>((blockPos, state) -> + new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_ENERGIZED_COPPER), EPBlocks.ENERGIZED_COPPER_CABLE.get())); public static final Supplier> ENERGIZED_GOLD_CABLE_ENTITY = - BLOCK_ENTITIES.register("energized_gold_cable", () -> BlockEntityType.Builder.of((blockPos, state) -> - new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_ENERGIZED_GOLD), EPBlocks.ENERGIZED_GOLD_CABLE.get()).build(null)); + BLOCK_ENTITIES.register("energized_gold_cable", () -> new BlockEntityType<>((blockPos, state) -> + new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_ENERGIZED_GOLD), EPBlocks.ENERGIZED_GOLD_CABLE.get())); public static final Supplier> ENERGIZED_CRYSTAL_MATRIX_CABLE_ENTITY = - BLOCK_ENTITIES.register("energized_crystal_matrix_cable", () -> BlockEntityType.Builder.of((blockPos, state) -> - new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX), EPBlocks.ENERGIZED_CRYSTAL_MATRIX_CABLE.get()).build(null)); + BLOCK_ENTITIES.register("energized_crystal_matrix_cable", () -> new BlockEntityType<>((blockPos, state) -> + new CableBlockEntity(blockPos, state, CableBlock.Tier.TIER_ENERGIZED_CRYSTAL_MATRIX), EPBlocks.ENERGIZED_CRYSTAL_MATRIX_CABLE.get())); public static final Supplier> AUTO_CRAFTER_ENTITY = - BLOCK_ENTITIES.register("auto_crafter", () -> BlockEntityType.Builder.of(AutoCrafterBlockEntity::new, - EPBlocks.AUTO_CRAFTER.get()).build(null)); + BLOCK_ENTITIES.register("auto_crafter", () -> new BlockEntityType<>(AutoCrafterBlockEntity::new, + EPBlocks.AUTO_CRAFTER.get())); public static final Supplier> ADVANCED_AUTO_CRAFTER_ENTITY = - BLOCK_ENTITIES.register("advanced_auto_crafter", () -> BlockEntityType.Builder.of(AdvancedAutoCrafterBlockEntity::new, - EPBlocks.ADVANCED_AUTO_CRAFTER.get()).build(null)); + BLOCK_ENTITIES.register("advanced_auto_crafter", () -> new BlockEntityType<>(AdvancedAutoCrafterBlockEntity::new, + EPBlocks.ADVANCED_AUTO_CRAFTER.get())); public static final Supplier> PRESS_MOLD_MAKER_ENTITY = - BLOCK_ENTITIES.register("press_mold_maker", () -> BlockEntityType.Builder.of(PressMoldMakerBlockEntity::new, - EPBlocks.PRESS_MOLD_MAKER.get()).build(null)); + BLOCK_ENTITIES.register("press_mold_maker", () -> new BlockEntityType<>(PressMoldMakerBlockEntity::new, + EPBlocks.PRESS_MOLD_MAKER.get())); public static final Supplier> ALLOY_FURNACE_ENTITY = - BLOCK_ENTITIES.register("alloy_furnace", () -> BlockEntityType.Builder.of(AlloyFurnaceBlockEntity::new, - EPBlocks.ALLOY_FURNACE.get()).build(null)); + BLOCK_ENTITIES.register("alloy_furnace", () -> new BlockEntityType<>(AlloyFurnaceBlockEntity::new, + EPBlocks.ALLOY_FURNACE.get())); public static final Supplier> CRUSHER_ENTITY = - BLOCK_ENTITIES.register("crusher", () -> BlockEntityType.Builder.of(CrusherBlockEntity::new, - EPBlocks.CRUSHER.get()).build(null)); + BLOCK_ENTITIES.register("crusher", () -> new BlockEntityType<>(CrusherBlockEntity::new, + EPBlocks.CRUSHER.get())); public static final Supplier> ADVANCED_CRUSHER_ENTITY = - BLOCK_ENTITIES.register("advanced_crusher", () -> BlockEntityType.Builder.of(AdvancedCrusherBlockEntity::new, - EPBlocks.ADVANCED_CRUSHER.get()).build(null)); + BLOCK_ENTITIES.register("advanced_crusher", () -> new BlockEntityType<>(AdvancedCrusherBlockEntity::new, + EPBlocks.ADVANCED_CRUSHER.get())); public static final Supplier> PULVERIZER_ENTITY = - BLOCK_ENTITIES.register("pulverizer", () -> BlockEntityType.Builder.of(PulverizerBlockEntity::new, - EPBlocks.PULVERIZER.get()).build(null)); + BLOCK_ENTITIES.register("pulverizer", () -> new BlockEntityType<>(PulverizerBlockEntity::new, + EPBlocks.PULVERIZER.get())); public static final Supplier> ADVANCED_PULVERIZER_ENTITY = - BLOCK_ENTITIES.register("advanced_pulverizer", () -> BlockEntityType.Builder.of(AdvancedPulverizerBlockEntity::new, - EPBlocks.ADVANCED_PULVERIZER.get()).build(null)); + BLOCK_ENTITIES.register("advanced_pulverizer", () -> new BlockEntityType<>(AdvancedPulverizerBlockEntity::new, + EPBlocks.ADVANCED_PULVERIZER.get())); public static final Supplier> SAWMILL_ENTITY = - BLOCK_ENTITIES.register("sawmill", () -> BlockEntityType.Builder.of(SawmillBlockEntity::new, - EPBlocks.SAWMILL.get()).build(null)); + BLOCK_ENTITIES.register("sawmill", () -> new BlockEntityType<>(SawmillBlockEntity::new, + EPBlocks.SAWMILL.get())); public static final Supplier> COMPRESSOR_ENTITY = - BLOCK_ENTITIES.register("compressor", () -> BlockEntityType.Builder.of(CompressorBlockEntity::new, - EPBlocks.COMPRESSOR.get()).build(null)); + BLOCK_ENTITIES.register("compressor", () -> new BlockEntityType<>(CompressorBlockEntity::new, + EPBlocks.COMPRESSOR.get())); public static final Supplier> METAL_PRESS_ENTITY = - BLOCK_ENTITIES.register("metal_press", () -> BlockEntityType.Builder.of(MetalPressBlockEntity::new, - EPBlocks.METAL_PRESS.get()).build(null)); + BLOCK_ENTITIES.register("metal_press", () -> new BlockEntityType<>(MetalPressBlockEntity::new, + EPBlocks.METAL_PRESS.get())); public static final Supplier> AUTO_PRESS_MOLD_MAKER_ENTITY = - BLOCK_ENTITIES.register("auto_press_mold_maker", () -> BlockEntityType.Builder.of(AutoPressMoldMakerBlockEntity::new, - EPBlocks.AUTO_PRESS_MOLD_MAKER.get()).build(null)); + BLOCK_ENTITIES.register("auto_press_mold_maker", () -> new BlockEntityType<>(AutoPressMoldMakerBlockEntity::new, + EPBlocks.AUTO_PRESS_MOLD_MAKER.get())); public static final Supplier> AUTO_STONECUTTER_ENTITY = - BLOCK_ENTITIES.register("auto_stonecutter", () -> BlockEntityType.Builder.of(AutoStonecutterBlockEntity::new, - EPBlocks.AUTO_STONECUTTER.get()).build(null)); + BLOCK_ENTITIES.register("auto_stonecutter", () -> new BlockEntityType<>(AutoStonecutterBlockEntity::new, + EPBlocks.AUTO_STONECUTTER.get())); public static final Supplier> PLANT_GROWTH_CHAMBER_ENTITY = - BLOCK_ENTITIES.register("plant_growth_chamber", () -> BlockEntityType.Builder.of(PlantGrowthChamberBlockEntity::new, - EPBlocks.PLANT_GROWTH_CHAMBER.get()).build(null)); + BLOCK_ENTITIES.register("plant_growth_chamber", () -> new BlockEntityType<>(PlantGrowthChamberBlockEntity::new, + EPBlocks.PLANT_GROWTH_CHAMBER.get())); public static final Supplier> BLOCK_PLACER_ENTITY = - BLOCK_ENTITIES.register("block_placer", () -> BlockEntityType.Builder.of(BlockPlacerBlockEntity::new, - EPBlocks.BLOCK_PLACER.get()).build(null)); + BLOCK_ENTITIES.register("block_placer", () -> new BlockEntityType<>(BlockPlacerBlockEntity::new, + EPBlocks.BLOCK_PLACER.get())); public static final Supplier> ASSEMBLING_MACHINE_ENTITY = - BLOCK_ENTITIES.register("assembling_machine", () -> BlockEntityType.Builder.of(AssemblingMachineBlockEntity::new, - EPBlocks.ASSEMBLING_MACHINE.get()).build(null)); + BLOCK_ENTITIES.register("assembling_machine", () -> new BlockEntityType<>(AssemblingMachineBlockEntity::new, + EPBlocks.ASSEMBLING_MACHINE.get())); public static final Supplier> INDUCTION_SMELTER_ENTITY = - BLOCK_ENTITIES.register("induction_smelter", () -> BlockEntityType.Builder.of(InductionSmelterBlockEntity::new, - EPBlocks.INDUCTION_SMELTER.get()).build(null)); + BLOCK_ENTITIES.register("induction_smelter", () -> new BlockEntityType<>(InductionSmelterBlockEntity::new, + EPBlocks.INDUCTION_SMELTER.get())); public static final Supplier> STONE_SOLIDIFIER_ENTITY = - BLOCK_ENTITIES.register("stone_solidifier", () -> BlockEntityType.Builder.of(StoneSolidifierBlockEntity::new, - EPBlocks.STONE_SOLIDIFIER.get()).build(null)); + BLOCK_ENTITIES.register("stone_solidifier", () -> new BlockEntityType<>(StoneSolidifierBlockEntity::new, + EPBlocks.STONE_SOLIDIFIER.get())); public static final Supplier> FILTRATION_PLANT_ENTITY = - BLOCK_ENTITIES.register("filtration_plant", () -> BlockEntityType.Builder.of(FiltrationPlantBlockEntity::new, - EPBlocks.FILTRATION_PLANT.get()).build(null)); + BLOCK_ENTITIES.register("filtration_plant", () -> new BlockEntityType<>(FiltrationPlantBlockEntity::new, + EPBlocks.FILTRATION_PLANT.get())); public static final Supplier> FLUID_TRANSPOSER_ENTITY = - BLOCK_ENTITIES.register("fluid_transposer", () -> BlockEntityType.Builder.of(FluidTransposerBlockEntity::new, - EPBlocks.FLUID_TRANSPOSER.get()).build(null)); + BLOCK_ENTITIES.register("fluid_transposer", () -> new BlockEntityType<>(FluidTransposerBlockEntity::new, + EPBlocks.FLUID_TRANSPOSER.get())); public static final Supplier> FLUID_FILLER_ENTITY = - BLOCK_ENTITIES.register("fluid_filler", () -> BlockEntityType.Builder.of(FluidFillerBlockEntity::new, - EPBlocks.FLUID_FILLER.get()).build(null)); + BLOCK_ENTITIES.register("fluid_filler", () -> new BlockEntityType<>(FluidFillerBlockEntity::new, + EPBlocks.FLUID_FILLER.get())); public static final Supplier> FLUID_DRAINER_ENTITY = - BLOCK_ENTITIES.register("fluid_drainer", () -> BlockEntityType.Builder.of(FluidDrainerBlockEntity::new, - EPBlocks.FLUID_DRAINER.get()).build(null)); + BLOCK_ENTITIES.register("fluid_drainer", () -> new BlockEntityType<>(FluidDrainerBlockEntity::new, + EPBlocks.FLUID_DRAINER.get())); public static final Supplier> FLUID_PUMP_ENTITY = - BLOCK_ENTITIES.register("fluid_pump", () -> BlockEntityType.Builder.of(FluidPumpBlockEntity::new, - EPBlocks.FLUID_PUMP.get()).build(null)); + BLOCK_ENTITIES.register("fluid_pump", () -> new BlockEntityType<>(FluidPumpBlockEntity::new, + EPBlocks.FLUID_PUMP.get())); public static final Supplier> DRAIN_ENTITY = - BLOCK_ENTITIES.register("drain", () -> BlockEntityType.Builder.of(DrainBlockEntity::new, - EPBlocks.DRAIN.get()).build(null)); + BLOCK_ENTITIES.register("drain", () -> new BlockEntityType<>(DrainBlockEntity::new, + EPBlocks.DRAIN.get())); public static final Supplier> CHARGER_ENTITY = - BLOCK_ENTITIES.register("charger", () -> BlockEntityType.Builder.of(ChargerBlockEntity::new, - EPBlocks.CHARGER.get()).build(null)); + BLOCK_ENTITIES.register("charger", () -> new BlockEntityType<>(ChargerBlockEntity::new, + EPBlocks.CHARGER.get())); public static final Supplier> ADVANCED_CHARGER_ENTITY = - BLOCK_ENTITIES.register("advanced_charger", () -> BlockEntityType.Builder.of(AdvancedChargerBlockEntity::new, - EPBlocks.ADVANCED_CHARGER.get()).build(null)); + BLOCK_ENTITIES.register("advanced_charger", () -> new BlockEntityType<>(AdvancedChargerBlockEntity::new, + EPBlocks.ADVANCED_CHARGER.get())); public static final Supplier> UNCHARGER_ENTITY = - BLOCK_ENTITIES.register("uncharger", () -> BlockEntityType.Builder.of(UnchargerBlockEntity::new, - EPBlocks.UNCHARGER.get()).build(null)); + BLOCK_ENTITIES.register("uncharger", () -> new BlockEntityType<>(UnchargerBlockEntity::new, + EPBlocks.UNCHARGER.get())); public static final Supplier> ADVANCED_UNCHARGER_ENTITY = - BLOCK_ENTITIES.register("advanced_uncharger", () -> BlockEntityType.Builder.of(AdvancedUnchargerBlockEntity::new, - EPBlocks.ADVANCED_UNCHARGER.get()).build(null)); + BLOCK_ENTITIES.register("advanced_uncharger", () -> new BlockEntityType<>(AdvancedUnchargerBlockEntity::new, + EPBlocks.ADVANCED_UNCHARGER.get())); public static final Supplier> MINECART_CHARGER_ENTITY = - BLOCK_ENTITIES.register("minecart_charger", () -> BlockEntityType.Builder.of(MinecartChargerBlockEntity::new, - EPBlocks.MINECART_CHARGER.get()).build(null)); + BLOCK_ENTITIES.register("minecart_charger", () -> new BlockEntityType<>(MinecartChargerBlockEntity::new, + EPBlocks.MINECART_CHARGER.get())); public static final Supplier> ADVANCED_MINECART_CHARGER_ENTITY = - BLOCK_ENTITIES.register("advanced_minecart_charger", () -> BlockEntityType.Builder.of(AdvancedMinecartChargerBlockEntity::new, - EPBlocks.ADVANCED_MINECART_CHARGER.get()).build(null)); + BLOCK_ENTITIES.register("advanced_minecart_charger", () -> new BlockEntityType<>(AdvancedMinecartChargerBlockEntity::new, + EPBlocks.ADVANCED_MINECART_CHARGER.get())); public static final Supplier> MINECART_UNCHARGER_ENTITY = - BLOCK_ENTITIES.register("minecart_uncharger", () -> BlockEntityType.Builder.of(MinecartUnchargerBlockEntity::new, - EPBlocks.MINECART_UNCHARGER.get()).build(null)); + BLOCK_ENTITIES.register("minecart_uncharger", () -> new BlockEntityType<>(MinecartUnchargerBlockEntity::new, + EPBlocks.MINECART_UNCHARGER.get())); public static final Supplier> ADVANCED_MINECART_UNCHARGER_ENTITY = - BLOCK_ENTITIES.register("advanced_minecart_uncharger", () -> BlockEntityType.Builder.of(AdvancedMinecartUnchargerBlockEntity::new, - EPBlocks.ADVANCED_MINECART_UNCHARGER.get()).build(null)); + BLOCK_ENTITIES.register("advanced_minecart_uncharger", () -> new BlockEntityType<>(AdvancedMinecartUnchargerBlockEntity::new, + EPBlocks.ADVANCED_MINECART_UNCHARGER.get())); private static Supplier> createSolarPanelBlockEntity(String name, Supplier blockSupplier) { - return BLOCK_ENTITIES.register(name, () -> BlockEntityType.Builder.of((blockPos, state) -> new SolarPanelBlockEntity(blockPos, state, - blockSupplier.get().getTier()), blockSupplier.get()).build(null)); + return BLOCK_ENTITIES.register(name, () -> new BlockEntityType<>((blockPos, state) -> new SolarPanelBlockEntity(blockPos, state, + blockSupplier.get().getTier()), blockSupplier.get())); } public static final Supplier> SOLAR_PANEL_ENTITY_1 = createSolarPanelBlockEntity("solar_panel_1", EPBlocks.SOLAR_PANEL_1); @@ -232,130 +232,130 @@ private static Supplier> createSolarPanel createSolarPanelBlockEntity("solar_panel_6", EPBlocks.SOLAR_PANEL_6); public static final Supplier> LV_TRANSFORMER_1_TO_N_ENTITY = - BLOCK_ENTITIES.register("lv_transformer_1_to_n", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("lv_transformer_1_to_n", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_1_TO_N), - EPBlocks.LV_TRANSFORMER_1_TO_N.get()).build(null)); + EPBlocks.LV_TRANSFORMER_1_TO_N.get())); public static final Supplier> LV_TRANSFORMER_3_TO_3_ENTITY = - BLOCK_ENTITIES.register("lv_transformer_3_to_3", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("lv_transformer_3_to_3", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_3_TO_3), - EPBlocks.LV_TRANSFORMER_3_TO_3.get()).build(null)); + EPBlocks.LV_TRANSFORMER_3_TO_3.get())); public static final Supplier> LV_TRANSFORMER_N_TO_1_ENTITY = - BLOCK_ENTITIES.register("lv_transformer_n_to_1", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("lv_transformer_n_to_1", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_LV, TransformerBlock.Type.TYPE_N_TO_1), - EPBlocks.LV_TRANSFORMER_N_TO_1.get()).build(null)); + EPBlocks.LV_TRANSFORMER_N_TO_1.get())); public static final Supplier> MV_TRANSFORMER_1_TO_N_ENTITY = - BLOCK_ENTITIES.register("transformer_1_to_n", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("transformer_1_to_n", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_1_TO_N), - EPBlocks.MV_TRANSFORMER_1_TO_N.get()).build(null)); + EPBlocks.MV_TRANSFORMER_1_TO_N.get())); public static final Supplier> MV_TRANSFORMER_3_TO_3_ENTITY = - BLOCK_ENTITIES.register("transformer_3_to_3", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("transformer_3_to_3", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_3_TO_3), - EPBlocks.MV_TRANSFORMER_3_TO_3.get()).build(null)); + EPBlocks.MV_TRANSFORMER_3_TO_3.get())); public static final Supplier> MV_TRANSFORMER_N_TO_1_ENTITY = - BLOCK_ENTITIES.register("transformer_n_to_1", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("transformer_n_to_1", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_MV, TransformerBlock.Type.TYPE_N_TO_1), - EPBlocks.MV_TRANSFORMER_N_TO_1.get()).build(null)); + EPBlocks.MV_TRANSFORMER_N_TO_1.get())); public static final Supplier> HV_TRANSFORMER_1_TO_N_ENTITY = - BLOCK_ENTITIES.register("hv_transformer_1_to_n", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("hv_transformer_1_to_n", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_1_TO_N), - EPBlocks.HV_TRANSFORMER_1_TO_N.get()).build(null)); + EPBlocks.HV_TRANSFORMER_1_TO_N.get())); public static final Supplier> HV_TRANSFORMER_3_TO_3_ENTITY = - BLOCK_ENTITIES.register("hv_transformer_3_to_3", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("hv_transformer_3_to_3", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_3_TO_3), - EPBlocks.HV_TRANSFORMER_3_TO_3.get()).build(null)); + EPBlocks.HV_TRANSFORMER_3_TO_3.get())); public static final Supplier> HV_TRANSFORMER_N_TO_1_ENTITY = - BLOCK_ENTITIES.register("hv_transformer_n_to_1", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("hv_transformer_n_to_1", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_HV, TransformerBlock.Type.TYPE_N_TO_1), - EPBlocks.HV_TRANSFORMER_N_TO_1.get()).build(null)); + EPBlocks.HV_TRANSFORMER_N_TO_1.get())); public static final Supplier> EHV_TRANSFORMER_1_TO_N_ENTITY = - BLOCK_ENTITIES.register("ehv_transformer_1_to_n", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("ehv_transformer_1_to_n", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_1_TO_N), - EPBlocks.EHV_TRANSFORMER_1_TO_N.get()).build(null)); + EPBlocks.EHV_TRANSFORMER_1_TO_N.get())); public static final Supplier> EHV_TRANSFORMER_3_TO_3_ENTITY = - BLOCK_ENTITIES.register("ehv_transformer_3_to_3", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("ehv_transformer_3_to_3", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_3_TO_3), - EPBlocks.EHV_TRANSFORMER_3_TO_3.get()).build(null)); + EPBlocks.EHV_TRANSFORMER_3_TO_3.get())); public static final Supplier> EHV_TRANSFORMER_N_TO_1_ENTITY = - BLOCK_ENTITIES.register("ehv_transformer_n_to_1", () -> BlockEntityType.Builder.of((blockPos, state) -> + BLOCK_ENTITIES.register("ehv_transformer_n_to_1", () -> new BlockEntityType<>((blockPos, state) -> new TransformerBlockEntity(blockPos, state, TransformerBlock.Tier.TIER_EHV, TransformerBlock.Type.TYPE_N_TO_1), - EPBlocks.EHV_TRANSFORMER_N_TO_1.get()).build(null)); + EPBlocks.EHV_TRANSFORMER_N_TO_1.get())); public static final Supplier> BATTERY_BOX_ENTITY = - BLOCK_ENTITIES.register("battery_box", () -> BlockEntityType.Builder.of(BatteryBoxBlockEntity::new, - EPBlocks.BATTERY_BOX.get()).build(null)); + BLOCK_ENTITIES.register("battery_box", () -> new BlockEntityType<>(BatteryBoxBlockEntity::new, + EPBlocks.BATTERY_BOX.get())); public static final Supplier> ADVANCED_BATTERY_BOX_ENTITY = - BLOCK_ENTITIES.register("advanced_battery_box", () -> BlockEntityType.Builder.of(AdvancedBatteryBoxBlockEntity::new, - EPBlocks.ADVANCED_BATTERY_BOX.get()).build(null)); + BLOCK_ENTITIES.register("advanced_battery_box", () -> new BlockEntityType<>(AdvancedBatteryBoxBlockEntity::new, + EPBlocks.ADVANCED_BATTERY_BOX.get())); public static final Supplier> CREATIVE_BATTERY_BOX_ENTITY = - BLOCK_ENTITIES.register("creative_battery_box", () -> BlockEntityType.Builder.of(CreativeBatteryBoxBlockEntity::new, - EPBlocks.CREATIVE_BATTERY_BOX.get()).build(null)); + BLOCK_ENTITIES.register("creative_battery_box", () -> new BlockEntityType<>(CreativeBatteryBoxBlockEntity::new, + EPBlocks.CREATIVE_BATTERY_BOX.get())); public static final Supplier> COAL_ENGINE_ENTITY = - BLOCK_ENTITIES.register("coal_engine", () -> BlockEntityType.Builder.of(CoalEngineBlockEntity::new, - EPBlocks.COAL_ENGINE.get()).build(null)); + BLOCK_ENTITIES.register("coal_engine", () -> new BlockEntityType<>(CoalEngineBlockEntity::new, + EPBlocks.COAL_ENGINE.get())); public static final Supplier> HEAT_GENERATOR_ENTITY = - BLOCK_ENTITIES.register("heat_generator", () -> BlockEntityType.Builder.of(HeatGeneratorBlockEntity::new, - EPBlocks.HEAT_GENERATOR.get()).build(null)); + BLOCK_ENTITIES.register("heat_generator", () -> new BlockEntityType<>(HeatGeneratorBlockEntity::new, + EPBlocks.HEAT_GENERATOR.get())); public static final Supplier> THERMAL_GENERATOR_ENTITY = - BLOCK_ENTITIES.register("thermal_generator", () -> BlockEntityType.Builder.of(ThermalGeneratorBlockEntity::new, - EPBlocks.THERMAL_GENERATOR.get()).build(null)); + BLOCK_ENTITIES.register("thermal_generator", () -> new BlockEntityType<>(ThermalGeneratorBlockEntity::new, + EPBlocks.THERMAL_GENERATOR.get())); public static final Supplier> POWERED_LAMP_ENTITY = - BLOCK_ENTITIES.register("powered_lamp", () -> BlockEntityType.Builder.of(PoweredLampBlockEntity::new, - EPBlocks.POWERED_LAMP.get()).build(null)); + BLOCK_ENTITIES.register("powered_lamp", () -> new BlockEntityType<>(PoweredLampBlockEntity::new, + EPBlocks.POWERED_LAMP.get())); public static final Supplier> POWERED_FURNACE_ENTITY = - BLOCK_ENTITIES.register("powered_furnace", () -> BlockEntityType.Builder.of(PoweredFurnaceBlockEntity::new, - EPBlocks.POWERED_FURNACE.get()).build(null)); + BLOCK_ENTITIES.register("powered_furnace", () -> new BlockEntityType<>(PoweredFurnaceBlockEntity::new, + EPBlocks.POWERED_FURNACE.get())); public static final Supplier> ADVANCED_POWERED_FURNACE_ENTITY = - BLOCK_ENTITIES.register("advanced_powered_furnace", () -> BlockEntityType.Builder.of(AdvancedPoweredFurnaceBlockEntity::new, - EPBlocks.ADVANCED_POWERED_FURNACE.get()).build(null)); + BLOCK_ENTITIES.register("advanced_powered_furnace", () -> new BlockEntityType<>(AdvancedPoweredFurnaceBlockEntity::new, + EPBlocks.ADVANCED_POWERED_FURNACE.get())); public static final Supplier> LIGHTING_GENERATOR_ENTITY = - BLOCK_ENTITIES.register("lightning_generator", () -> BlockEntityType.Builder.of(LightningGeneratorBlockEntity::new, - EPBlocks.LIGHTNING_GENERATOR.get()).build(null)); + BLOCK_ENTITIES.register("lightning_generator", () -> new BlockEntityType<>(LightningGeneratorBlockEntity::new, + EPBlocks.LIGHTNING_GENERATOR.get())); public static final Supplier> ENERGIZER_ENTITY = - BLOCK_ENTITIES.register("energizer", () -> BlockEntityType.Builder.of(EnergizerBlockEntity::new, - EPBlocks.ENERGIZER.get()).build(null)); + BLOCK_ENTITIES.register("energizer", () -> new BlockEntityType<>(EnergizerBlockEntity::new, + EPBlocks.ENERGIZER.get())); public static final Supplier> CHARGING_STATION_ENTITY = - BLOCK_ENTITIES.register("charging_station", () -> BlockEntityType.Builder.of(ChargingStationBlockEntity::new, - EPBlocks.CHARGING_STATION.get()).build(null)); + BLOCK_ENTITIES.register("charging_station", () -> new BlockEntityType<>(ChargingStationBlockEntity::new, + EPBlocks.CHARGING_STATION.get())); public static final Supplier> CRYSTAL_GROWTH_CHAMBER_ENTITY = - BLOCK_ENTITIES.register("crystal_growth_chamber", () -> BlockEntityType.Builder.of(CrystalGrowthChamberBlockEntity::new, - EPBlocks.CRYSTAL_GROWTH_CHAMBER.get()).build(null)); + BLOCK_ENTITIES.register("crystal_growth_chamber", () -> new BlockEntityType<>(CrystalGrowthChamberBlockEntity::new, + EPBlocks.CRYSTAL_GROWTH_CHAMBER.get())); public static final Supplier> WEATHER_CONTROLLER_ENTITY = - BLOCK_ENTITIES.register("weather_controller", () -> BlockEntityType.Builder.of(WeatherControllerBlockEntity::new, - EPBlocks.WEATHER_CONTROLLER.get()).build(null)); + BLOCK_ENTITIES.register("weather_controller", () -> new BlockEntityType<>(WeatherControllerBlockEntity::new, + EPBlocks.WEATHER_CONTROLLER.get())); public static final Supplier> TIME_CONTROLLER_ENTITY = - BLOCK_ENTITIES.register("time_controller", () -> BlockEntityType.Builder.of(TimeControllerBlockEntity::new, - EPBlocks.TIME_CONTROLLER.get()).build(null)); + BLOCK_ENTITIES.register("time_controller", () -> new BlockEntityType<>(TimeControllerBlockEntity::new, + EPBlocks.TIME_CONTROLLER.get())); public static final Supplier> TELEPORTER_ENTITY = - BLOCK_ENTITIES.register("teleporter", () -> BlockEntityType.Builder.of(TeleporterBlockEntity::new, - EPBlocks.TELEPORTER.get()).build(null)); + BLOCK_ENTITIES.register("teleporter", () -> new BlockEntityType<>(TeleporterBlockEntity::new, + EPBlocks.TELEPORTER.get())); public static void register(IEventBus modEventBus) { BLOCK_ENTITIES.register(modEventBus); 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 43f7cfcf3..77d365915 100644 --- a/src/main/java/me/jddev0/ep/block/entity/EnergizerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/EnergizerBlockEntity.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.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; @@ -18,12 +22,15 @@ import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.IntTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; @@ -34,10 +41,13 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; public class EnergizerBlockEntity - extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity { + extends ConfigurableUpgradableInventoryEnergyStorageBlockEntity + implements IngredientPacketUpdate { public static final float ENERGY_CONSUMPTION_MULTIPLIER = ModConfigs.COMMON_ENERGIZER_ENERGY_CONSUMPTION_MULTIPLIER.getValue(); private final IItemHandler itemHandlerSided = new InputOutputItemHandler(itemHandler, (i, stack) -> i == 0, i -> i == 1); @@ -47,6 +57,8 @@ public class EnergizerBlockEntity private int energyConsumptionLeft = -1; private boolean hasEnoughEnergy; + protected List ingredientsOfRecipes = new ArrayList<>(); + public EnergizerBlockEntity(BlockPos blockPos, BlockState blockState) { super( EPBlockEntities.ENERGIZER_ENTITY.get(), blockPos, blockState, @@ -96,7 +108,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch (slot) { - case 0 -> level == null || RecipeUtils.isIngredientOfAny(level, EnergizerRecipe.Type.INSTANCE, stack); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, EPRecipes.ENERGIZER_TYPE.get(), stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 1 -> false; default -> super.isItemValid(slot, stack); }; @@ -157,6 +171,7 @@ public int getCount() { @Override public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { syncEnergyToPlayer(player); + syncIngredientListToPlayer(player); return new EnergizerMenu(id, inventory, this, upgradeModuleInventory, this.data); } @@ -189,7 +204,7 @@ protected void loadAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr } public static void tick(Level level, BlockPos blockPos, BlockState state, EnergizerBlockEntity blockEntity) { - if(level.isClientSide) + if(level.isClientSide || !(level instanceof ServerLevel serverLevel)) return; if(!blockEntity.redstoneMode.isActive(state.getValue(BlockStateProperties.POWERED))) @@ -200,7 +215,7 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, Energi for(int i = 0;i < blockEntity.itemHandler.getSlots();i++) inventory.setItem(i, blockEntity.itemHandler.getStackInSlot(i)); - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverLevel.recipeAccess(). getRecipeFor(EnergizerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); if(recipe.isEmpty()) return; @@ -267,19 +282,22 @@ private void resetProgress(BlockPos blockPos, BlockState state) { private static void craftItem(BlockPos blockPos, BlockState state, EnergizerBlockEntity blockEntity) { Level level = blockEntity.level; + if(!(level instanceof ServerLevel serverLevel)) + return; + SimpleContainer inventory = new SimpleContainer(blockEntity.itemHandler.getSlots()); for(int i = 0;i < blockEntity.itemHandler.getSlots();i++) inventory.setItem(i, blockEntity.itemHandler.getStackInSlot(i)); - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverLevel.recipeAccess(). getRecipeFor(EnergizerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); if(!hasRecipe(blockEntity) || recipe.isEmpty()) return; blockEntity.itemHandler.extractItem(0, 1, false); - blockEntity.itemHandler.setStackInSlot(1, recipe.get().value().getResultItem(level.registryAccess()).copyWithCount( - blockEntity.itemHandler.getStackInSlot(1).getCount() + recipe.get().value().getResultItem(level.registryAccess()).getCount())); + blockEntity.itemHandler.setStackInSlot(1, recipe.get().value().assemble(null, level.registryAccess()).copyWithCount( + blockEntity.itemHandler.getStackInSlot(1).getCount() + recipe.get().value().assemble(null, level.registryAccess()).getCount())); blockEntity.resetProgress(blockPos, state); } @@ -287,15 +305,18 @@ private static void craftItem(BlockPos blockPos, BlockState state, EnergizerBloc private static boolean hasRecipe(EnergizerBlockEntity blockEntity) { Level level = blockEntity.level; + if(!(level instanceof ServerLevel serverLevel)) + return false; + SimpleContainer inventory = new SimpleContainer(blockEntity.itemHandler.getSlots()); for(int i = 0;i < blockEntity.itemHandler.getSlots();i++) inventory.setItem(i, blockEntity.itemHandler.getStackInSlot(i)); - Optional> recipe = level.getRecipeManager(). + Optional> recipe = serverLevel.recipeAccess(). getRecipeFor(EnergizerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); return recipe.isPresent() && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.get().value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.get().value().assemble(null, level.registryAccess())); } @Override @@ -304,4 +325,21 @@ protected void updateUpgradeModules() { super.updateUpgradeModules(); } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, EPRecipes.ENERGIZER_TYPE.get())), (ServerPlayer)player); + } + + 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/FluidPumpBlockEntity.java b/src/main/java/me/jddev0/ep/block/entity/FluidPumpBlockEntity.java index 04006ba0c..d088d30d7 100644 --- a/src/main/java/me/jddev0/ep/block/entity/FluidPumpBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/FluidPumpBlockEntity.java @@ -310,7 +310,7 @@ public void goToNextOffset() { //Last position in depth = y was reached -> Go to depth = y - 1 or to depth = -1 yOffset--; - if(-yOffset >= depth || (getBlockPos().getY() + yOffset) < level.getMinBuildHeight()) + if(-yOffset >= depth || (getBlockPos().getY() + yOffset) < level.getMinY()) yOffset = -1; xOffset = range; 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 830de40ba..311716a40 100644 --- a/src/main/java/me/jddev0/ep/block/entity/FluidTransposerBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/FluidTransposerBlockEntity.java @@ -20,6 +20,7 @@ import net.minecraft.core.Direction; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; import net.minecraft.util.ExtraCodecs; import net.minecraft.util.StringRepresentable; import net.minecraft.world.Container; @@ -122,7 +123,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0 -> level == null || RecipeUtils.isIngredientOfAny(level, recipeType, stack); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 1 -> false; default -> super.isItemValid(slot, stack); }; @@ -156,7 +159,8 @@ public boolean isFluidValid(FluidStack stack) { if(!super.isFluidValid(stack) || level == null) return false; - return level.getRecipeManager().getAllRecipesFor(recipeType).stream().map(RecipeHolder::value). + return !(level instanceof ServerLevel serverLevel) || //Always false on client side (Recipes are no longer synced) + RecipeUtils.getAllRecipesFor(serverLevel, recipeType).stream().map(RecipeHolder::value). map(FluidTransposerRecipe::getFluid). anyMatch(fluidStack -> FluidStack.isSameFluidSameComponents(stack, fluidStack)); } @@ -194,7 +198,10 @@ protected void loadAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr @Override protected Optional> getRecipeFor(Container inventory) { - return level.getRecipeManager().getAllRecipesFor(recipeType). + if(!(level instanceof ServerLevel serverLevel)) + return Optional.empty(); + + return RecipeUtils.getAllRecipesFor(serverLevel, recipeType). stream().filter(recipe -> recipe.value().getMode() == mode). filter(recipe -> recipe.value().matches(getRecipeInput(inventory), level)). filter(recipe -> (mode == Mode.EMPTYING && fluidStorage.isEmpty()) || @@ -221,9 +228,9 @@ protected void craftItem(RecipeHolder recipe) { fluidStorage.drain(fluid, IFluidHandler.FluidAction.EXECUTE); itemHandler.extractItem(0, 1, false); - itemHandler.setStackInSlot(1, recipe.value().getResultItem(level.registryAccess()). + itemHandler.setStackInSlot(1, recipe.value().assemble(null, level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(1).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).getCount())); resetProgress(); } @@ -235,7 +242,7 @@ protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder= fluidAmountInRecipe && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().assemble(null, level.registryAccess())); } 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 f3945ce44..1a71a1838 100644 --- a/src/main/java/me/jddev0/ep/block/entity/HeatGeneratorBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/HeatGeneratorBlockEntity.java @@ -6,8 +6,10 @@ 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.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -21,6 +23,7 @@ import net.neoforged.neoforge.energy.IEnergyStorage; import org.jetbrains.annotations.Nullable; +import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -76,10 +79,10 @@ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player play } public static void tick(Level level, BlockPos blockPos, BlockState state, HeatGeneratorBlockEntity blockEntity) { - if(level.isClientSide) + if(level.isClientSide || !(level instanceof ServerLevel serverLevel)) return; - List> recipes = level.getRecipeManager().getAllRecipesFor(HeatGeneratorRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, HeatGeneratorRecipe.Type.INSTANCE); int 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 8871b948e..863be5ce2 100644 --- a/src/main/java/me/jddev0/ep/block/entity/InductionSmelterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/InductionSmelterBlockEntity.java @@ -11,8 +11,10 @@ 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.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.item.ItemStack; @@ -26,8 +28,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; - public class InductionSmelterBlockEntity extends SimpleRecipeMachineBlockEntity { public static final float RECIPE_DURATION_MULTIPLIER = ModConfigs.COMMON_INDUCTION_SMELTER_RECIPE_DURATION_MULTIPLIER.getValue(); @@ -60,11 +60,9 @@ protected ItemStackHandler initInventoryStorage() { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0, 1, 2 -> level == null || level.getRecipeManager(). - getAllRecipesFor(AlloyFurnaceRecipe.Type.INSTANCE).stream(). - map(RecipeHolder::value).map(AlloyFurnaceRecipe::getInputs).anyMatch(inputs -> - Arrays.stream(inputs).map(IngredientWithCount::input). - anyMatch(ingredient -> ingredient.test(stack))); + case 0, 1, 2 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 3, 4 -> false; default -> false; }; 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 760ce11ca..0710f41ab 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.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -58,8 +59,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0 -> level == null || level.getRecipeManager().getAllRecipesFor(MetalPressRecipe.Type.INSTANCE).stream(). - map(RecipeHolder::value).map(MetalPressRecipe::getInput).anyMatch(ingredient -> ingredient.test(stack)); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 1 -> level == null || stack.is(EnergizedPowerItemTags.METAL_PRESS_MOLDS); case 2 -> false; default -> super.isItemValid(slot, stack); @@ -118,10 +120,10 @@ protected void craftItem(RecipeHolder recipe) { pressMold.hurtAndBreak(1, serverLevel, null, item -> pressMold.setCount(0)); itemHandler.setStackInSlot(1, pressMold); - itemHandler.extractItem(0, recipe.value().getInputCount(), false); - itemHandler.setStackInSlot(2, recipe.value().getResultItem(level.registryAccess()). + itemHandler.extractItem(0, recipe.value().getInput().count(), false); + itemHandler.setStackInSlot(2, recipe.value().assemble(null, level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(2).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).getCount())); resetProgress(); } @@ -129,6 +131,6 @@ protected void craftItem(RecipeHolder recipe) { @Override protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder recipe) { return level != null && - InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 2, recipe.value().assemble(null, level.registryAccess())); } } \ 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 a37f34fd3..50d8db5da 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.inventory.InputOutputItemHandler; import me.jddev0.ep.config.ModConfigs; 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; @@ -15,9 +17,15 @@ import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.DoubleTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.RecipeInput; import net.minecraft.world.level.block.state.BlockState; @@ -41,6 +49,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.get(), blockPos, blockState, @@ -70,8 +80,12 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0 -> level == null || RecipeUtils.isIngredientOfAny(level, PlantGrowthChamberRecipe.Type.INSTANCE, stack); - case 1 -> level == null || RecipeUtils.isIngredientOfAny(level, PlantGrowthChamberFertilizerRecipe.Type.INSTANCE, stack); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); + case 1 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_TYPE.get(), stack): + RecipeUtils.isIngredientOfAny(ingredientsOfFertilizerRecipes, stack); case 2, 3, 4, 5 -> false; default -> super.isItemValid(slot, stack); }; @@ -105,6 +119,14 @@ public void setStackInSlot(int slot, @NotNull ItemStack stack) { return energyStorage; } + @Nullable + @Override + public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { + syncFertilizerIngredientListToPlayer(player); + + return super.createMenu(id, inventory, player); + } + @Override protected void saveAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Provider registries) { super.saveAdditional(nbt, registries); @@ -141,14 +163,14 @@ protected void resetProgress() { @Override protected void onStartCrafting(RecipeHolder recipe) { - if(level == null) + if(!(level instanceof ServerLevel serverLevel)) return; SimpleContainer inventory = new SimpleContainer(itemHandler.getSlots()); for(int i = 0;i < itemHandler.getSlots();i++) inventory.setItem(i, itemHandler.getStackInSlot(i)); - Optional> fertilizerRecipe = level.getRecipeManager(). + Optional> fertilizerRecipe = serverLevel.recipeAccess(). getRecipeFor(PlantGrowthChamberFertilizerRecipe.Type.INSTANCE, new ContainerRecipeInputWrapper(inventory), level); if(fertilizerRecipe.isPresent()) { @@ -266,4 +288,26 @@ private static boolean canInsertItemsIntoOutputSlots(SimpleContainer inventory, return itemsStacks.isEmpty(); } + + protected void syncFertilizerIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer( + new SyncIngredientsS2CPacket(getBlockPos(), 1, RecipeUtils.getIngredientsOf(serverLevel, EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_TYPE.get())), + (ServerPlayer)player + ); + } + + 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 eb23258f2..e292340e8 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; @@ -24,10 +24,7 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.AbstractCookingRecipe; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeType; -import net.minecraft.world.item.crafting.SingleRecipeInput; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; @@ -37,19 +34,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 ResourceLocation> RECIPE_BLACKLIST = ModConfigs.COMMON_POWERED_FURNACE_RECIPE_BLACKLIST.getValue(); public static final float RECIPE_DURATION_MULTIPLIER = ModConfigs.COMMON_POWERED_FURNACE_RECIPE_DURATION_MULTIPLIER.getValue(); private final IItemHandler 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( @@ -81,7 +79,9 @@ protected void onContentsChanged(int slot) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { return switch(slot) { - case 0 -> level == null || RecipeUtils.isIngredientOfAny(level, getRecipeForFurnaceModeUpgrade(), stack); + case 0 -> (level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, getRecipeForFurnaceModeUpgrade(), stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack); case 1 -> false; default -> super.isItemValid(slot, stack); }; @@ -142,8 +142,7 @@ public int getCount() { @Override public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { syncEnergyToPlayer(player); - ModMessages.sendToPlayer(new SyncFurnaceRecipeTypeS2CPacket(getRecipeForFurnaceModeUpgrade(), getBlockPos()), - (ServerPlayer)player); + syncIngredientListToPlayer(player); return new PoweredFurnaceMenu(id, inventory, this, upgradeModuleInventory, this.data); } @@ -202,7 +201,7 @@ protected void onWorkCompleted(RecipeHolder wor @Override protected double getWorkDataDependentWorkDuration(RecipeHolder recipe) { //Default Cooking Time = 200 -> maxProgress = 100 (= 200 / 2) - return recipe.value().getCookingTime() * RECIPE_DURATION_MULTIPLIER / 2.f; + return recipe.value().cookingTime() * RECIPE_DURATION_MULTIPLIER / 2.f; } private static void craftItem(BlockPos blockPos, BlockState state, PoweredFurnaceBlockEntity blockEntity) { @@ -218,8 +217,8 @@ private static void craftItem(BlockPos blockPos, BlockState state, PoweredFurnac return; blockEntity.itemHandler.extractItem(0, 1, false); - blockEntity.itemHandler.setStackInSlot(1, recipe.get().value().getResultItem(level.registryAccess()).copyWithCount( - blockEntity.itemHandler.getStackInSlot(1).getCount() + recipe.get().value().getResultItem(level.registryAccess()).getCount())); + blockEntity.itemHandler.setStackInSlot(1, recipe.get().value().assemble(null, level.registryAccess()).copyWithCount( + blockEntity.itemHandler.getStackInSlot(1).getCount() + recipe.get().value().assemble(null, level.registryAccess()).getCount())); blockEntity.resetProgress(); } @@ -234,20 +233,20 @@ private static boolean hasRecipe(PoweredFurnaceBlockEntity blockEntity) { Optional> recipe = blockEntity.getRecipeFor(inventory, level); return recipe.isPresent() && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.get().value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.get().value().assemble(null, level.registryAccess())); } private Optional> getRecipeFor(Container container, Level level) { - return level.getRecipeManager().getAllRecipesFor(getRecipeForFurnaceModeUpgrade()). - stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id())). + if(!(level instanceof ServerLevel serverLevel)) + return Optional.empty(); + + return RecipeUtils.getAllRecipesFor(serverLevel, getRecipeForFurnaceModeUpgrade()). + stream().filter(recipe -> !RECIPE_BLACKLIST.contains(recipe.id().location())). filter(recipe -> recipe.value().matches(new SingleRecipeInput(container.getItem(0)), level)). findFirst(); } public RecipeType getRecipeForFurnaceModeUpgrade() { - if(level != null && level.isClientSide()) - return recipeType; - double value = upgradeModuleInventory.getUpgradeModuleModifierEffect(3, UpgradeModuleModifier.FURNACE_MODE); if(value == 1) return RecipeType.BLASTING; @@ -257,19 +256,34 @@ else if(value == 2) return RecipeType.SMELTING; } - @Override - public void setRecipeType(@NotNull RecipeType recipeType) { - this.recipeType = recipeType; - } - @Override protected void updateUpgradeModules() { super.updateUpgradeModules(); if(level != null && !level.isClientSide()) ModMessages.sendToPlayersWithinXBlocks( - new SyncFurnaceRecipeTypeS2CPacket(getRecipeForFurnaceModeUpgrade(), getBlockPos()), + new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf((ServerLevel)level, getRecipeForFurnaceModeUpgrade())), getBlockPos(), (ServerLevel)level, 32 ); } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer( + new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, getRecipeForFurnaceModeUpgrade())), + (ServerPlayer)player + ); + } + + 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 8b8613355..495001696 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.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; @@ -27,10 +28,7 @@ import org.jetbrains.annotations.NotNull; 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 @@ -99,8 +97,11 @@ public int getRedstoneOutput() { } public void craftItem(ResourceLocation recipeId) { - Optional> recipe = level.getRecipeManager().getRecipes().stream(). - filter(recipeHolder -> recipeHolder.id().equals(recipeId)).findFirst(); + if(!(level instanceof ServerLevel serverLevel)) + return; + + Optional> recipe = serverLevel.recipeAccess().getRecipes().stream(). + filter(recipeHolder -> recipeHolder.id().location().equals(recipeId)).findFirst(); if(recipe.isEmpty() || !(recipe.get().value() instanceof PressMoldMakerRecipe pressMoldMakerRecipe)) return; @@ -110,22 +111,25 @@ public void craftItem(ResourceLocation recipeId) { inventory.setItem(i, itemHandler.getStackInSlot(i)); if(!pressMoldMakerRecipe.matches(new ContainerRecipeInputWrapper(inventory), level) || - !InventoryUtils.canInsertItemIntoSlot(inventory, 1, pressMoldMakerRecipe.getResultItem(level.registryAccess()))) + !InventoryUtils.canInsertItemIntoSlot(inventory, 1, pressMoldMakerRecipe.assemble(null, level.registryAccess()))) return; itemHandler.extractItem(0, pressMoldMakerRecipe.getClayCount(), false); - itemHandler.setStackInSlot(1, pressMoldMakerRecipe.getResultItem(level.registryAccess()).copyWithCount( - itemHandler.getStackInSlot(1).getCount() + pressMoldMakerRecipe.getResultItem(level.registryAccess()).getCount())); + itemHandler.setStackInSlot(1, pressMoldMakerRecipe.assemble(null, level.registryAccess()).copyWithCount( + itemHandler.getStackInSlot(1).getCount() + pressMoldMakerRecipe.assemble(null, level.registryAccess()).getCount())); } private List, Boolean>> createRecipeList() { + if(!(level instanceof ServerLevel serverLevel)) + return List.of(); + SimpleContainer inventory = new SimpleContainer(itemHandler.getSlots()); for(int i = 0;i < itemHandler.getSlots();i++) inventory.setItem(i, itemHandler.getStackInSlot(i)); - List> recipes = level.getRecipeManager().getAllRecipesFor(PressMoldMakerRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, PressMoldMakerRecipe.Type.INSTANCE); return recipes.stream(). - sorted(Comparator.comparing(recipe -> recipe.value().getResultItem(level.registryAccess()).getDescriptionId())). + sorted(Comparator.comparing(recipe -> recipe.id().location())). map(recipe -> Pair.of(recipe, recipe.value().matches(new ContainerRecipeInputWrapper(inventory), level))). 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 188c1206c..ced6d67d9 100644 --- a/src/main/java/me/jddev0/ep/block/entity/SawmillBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/SawmillBlockEntity.java @@ -63,9 +63,9 @@ protected void craftItem(RecipeHolder recipe) { return; itemHandler.extractItem(0, 1, false); - itemHandler.setStackInSlot(1, recipe.value().getResultItem(level.registryAccess()). + itemHandler.setStackInSlot(1, recipe.value().assemble(null, level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(1).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).getCount())); if(!recipe.value().getSecondaryOutput().isEmpty()) itemHandler.setStackInSlot(2, recipe.value().getSecondaryOutput(). @@ -78,7 +78,7 @@ protected void craftItem(RecipeHolder recipe) { @Override protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder recipe) { return level != null && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().getResultItem(level.registryAccess())) && + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().assemble(null, level.registryAccess())) && (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 85c3b8c48..ce4f43032 100644 --- a/src/main/java/me/jddev0/ep/block/entity/StoneSolidifierBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/StoneSolidifierBlockEntity.java @@ -122,9 +122,9 @@ protected void craftItem(RecipeHolder recipe) { fluidStorage.drain(new FluidStack(Fluids.WATER, recipe.value().getWaterAmount()), IFluidHandler.FluidAction.EXECUTE); fluidStorage.drain(new FluidStack(Fluids.LAVA, recipe.value().getLavaAmount()), IFluidHandler.FluidAction.EXECUTE); - itemHandler.setStackInSlot(0, recipe.value().getResultItem(level.registryAccess()). + itemHandler.setStackInSlot(0, recipe.value().assemble(null, level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(0).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(null, level.registryAccess()).getCount())); resetProgress(); } @@ -134,6 +134,6 @@ protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder= recipe.value().getWaterAmount() && fluidStorage.getFluid(1).getAmount() >= recipe.value().getLavaAmount() && - InventoryUtils.canInsertItemIntoSlot(inventory, 0, recipe.value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 0, recipe.value().assemble(null, level.registryAccess())); } } \ 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 abea8c4f3..5cd22dd43 100644 --- a/src/main/java/me/jddev0/ep/block/entity/TeleporterBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/TeleporterBlockEntity.java @@ -393,7 +393,7 @@ public static void teleportPlayer(ServerPlayer player, IEnergyStorage energyStor Vec3 toPosCenter = toPos.getCenter(); player.teleportTo((ServerLevel)toDimension, toPosCenter.x(), toPos.getY() + 1, toPosCenter.z(), - new HashSet<>(), 0, 0); + new HashSet<>(), 0, 0, true); player.connection.send(new ClientboundSoundPacket( Holder.direct(SoundEvents.ENDERMAN_TELEPORT), SoundSource.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 848ab751c..a1744dc51 100644 --- a/src/main/java/me/jddev0/ep/block/entity/ThermalGeneratorBlockEntity.java +++ b/src/main/java/me/jddev0/ep/block/entity/ThermalGeneratorBlockEntity.java @@ -11,8 +11,10 @@ import me.jddev0.ep.recipe.ThermalGeneratorRecipe; import me.jddev0.ep.screen.ThermalGeneratorMenu; import me.jddev0.ep.util.ByteUtils; +import me.jddev0.ep.util.RecipeUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; @@ -30,6 +32,7 @@ import org.jetbrains.annotations.Nullable; import java.util.Arrays; +import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -87,11 +90,10 @@ protected void onContentsChanged() { @Override public boolean isFluidValid(FluidStack stack) { - if(!super.isFluidValid(stack) || level == null) + if(!super.isFluidValid(stack) || !(level instanceof ServerLevel serverLevel)) return false; - List> recipes = level.getRecipeManager(). - getAllRecipesFor(ThermalGeneratorRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, ThermalGeneratorRecipe.Type.INSTANCE); return recipes.stream().map(RecipeHolder::value).map(ThermalGeneratorRecipe::getInput). anyMatch(inputs -> Arrays.stream(inputs).anyMatch(input -> stack.getFluid() == input)); @@ -109,10 +111,10 @@ public int get(int index) { else if(index == 3) return comparatorMode.ordinal(); - if(level == null || index > 1) + if(!(level instanceof ServerLevel serverLevel) || index > 1) return 0; - List> recipes = level.getRecipeManager().getAllRecipesFor(ThermalGeneratorRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, ThermalGeneratorRecipe.Type.INSTANCE); int rawProduction = 0; outer: @@ -180,10 +182,10 @@ public static void tick(Level level, BlockPos blockPos, BlockState state, Therma } private static void tickRecipe(Level level, BlockPos blockPos, BlockState state, ThermalGeneratorBlockEntity blockEntity) { - if(level.isClientSide) + if(level.isClientSide || !(level instanceof ServerLevel serverLevel)) return; - List> recipes = level.getRecipeManager().getAllRecipesFor(ThermalGeneratorRecipe.Type.INSTANCE); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, ThermalGeneratorRecipe.Type.INSTANCE); int 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 2abcf8396..326c1fb01 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,10 +5,13 @@ 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.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -16,7 +19,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -29,14 +31,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 > extends WorkerFluidMachineBlockEntity> - implements ChangeCurrentRecipeIndexPacketUpdate, CurrentRecipePacketUpdate, SetCurrentRecipeIdPacketUpdate { + implements ChangeCurrentRecipeIndexPacketUpdate, CurrentRecipePacketUpdate, SetCurrentRecipeIdPacketUpdate, + IngredientPacketUpdate { protected final UpgradableMenuProvider menuProvider; protected final RecipeType recipeType; @@ -45,6 +46,8 @@ public abstract class SelectableRecipeFluidMachineBlockEntity protected ResourceLocation currentRecipeIdForLoad; protected RecipeHolder currentRecipe; + protected List ingredientsOfRecipes = new ArrayList<>(); + public SelectableRecipeFluidMachineBlockEntity(BlockEntityType type, BlockPos blockPos, BlockState blockState, String machineName, UpgradableMenuProvider menuProvider, int slotCount, RecipeType recipeType, RecipeSerializer recipeSerializer, @@ -104,7 +107,7 @@ protected void saveAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr super.saveAdditional(nbt, registries); if(currentRecipe != null) - nbt.put("recipe.id", StringTag.valueOf(currentRecipe.id().toString())); + nbt.put("recipe.id", StringTag.valueOf(currentRecipe.id().location().toString())); } @Override @@ -121,6 +124,7 @@ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player play syncEnergyToPlayer(player); syncFluidToPlayer(player); syncCurrentRecipeToPlayer(player); + syncIngredientListToPlayer(player); return menuProvider.createMenu(id, inventory, this, upgradeModuleInventory, data); } @@ -128,10 +132,10 @@ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player play @Override protected final void onTickStart() { //Load recipe - if(currentRecipeIdForLoad != null) { - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); + if(currentRecipeIdForLoad != null && level instanceof ServerLevel serverLevel) { + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, recipeType); currentRecipe = recipes.stream(). - filter(recipe -> recipe.id().equals(currentRecipeIdForLoad)). + filter(recipe -> recipe.id().location().equals(currentRecipeIdForLoad)). findFirst().orElse(null); currentRecipeIdForLoad = null; @@ -195,19 +199,18 @@ protected final void onWorkCompleted(RecipeHolder workData) { @Override public void changeRecipeIndex(boolean downUp) { - if(level == null || level.isClientSide()) + if(!(level instanceof ServerLevel serverLevel)) return; - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); + List> recipes = new ArrayList<>(RecipeUtils.getAllRecipesFor(serverLevel, recipeType)); recipes = recipes.stream(). - sorted(Comparator.comparing(recipe -> recipe.value().getResultItem(level.registryAccess()). - getDescriptionId())). + sorted(Comparator.comparing(recipe -> recipe.id().location())). 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().location().equals(recipes.get(i).id().location())) { currentIndex = i; break; } @@ -230,14 +233,14 @@ else if(currentIndex >= recipes.size()) @Override public void setRecipeId(ResourceLocation recipeId) { - if(level == null || level.isClientSide()) + if(!(level instanceof ServerLevel serverLevel)) return; if(recipeId == null) { currentRecipe = null; }else { - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); - Optional> recipe = recipes.stream().filter(r -> r.id().equals(recipeId)).findFirst(); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, recipeType); + Optional> recipe = recipes.stream().filter(r -> r.id().location().equals(recipeId)).findFirst(); currentRecipe = recipe.orElse(null); } @@ -269,4 +272,21 @@ protected final void syncCurrentRecipeToPlayers(int distance) { public void setCurrentRecipe(@Nullable RecipeHolder currentRecipe) { this.currentRecipe = currentRecipe; } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, recipeType)), (ServerPlayer)player); + } + + 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 89e0a198f..633c9c91d 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,10 +5,13 @@ 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.core.BlockPos; import net.minecraft.core.HolderLookup; import net.minecraft.nbt.CompoundTag; @@ -16,7 +19,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -28,13 +30,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; @@ -43,6 +44,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, @@ -101,7 +104,7 @@ protected void saveAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr super.saveAdditional(nbt, registries); if(currentRecipe != null) - nbt.put("recipe.id", StringTag.valueOf(currentRecipe.id().toString())); + nbt.put("recipe.id", StringTag.valueOf(currentRecipe.id().location().toString())); } @Override @@ -117,6 +120,7 @@ protected void loadAdditional(@NotNull CompoundTag nbt, @NotNull HolderLookup.Pr public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { syncEnergyToPlayer(player); syncCurrentRecipeToPlayer(player); + syncIngredientListToPlayer(player); return menuProvider.createMenu(id, inventory, this, upgradeModuleInventory, data); } @@ -124,10 +128,10 @@ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player play @Override protected final void onTickStart() { //Load recipe - if(currentRecipeIdForLoad != null) { - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); + if(currentRecipeIdForLoad != null && level instanceof ServerLevel serverLevel) { + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, recipeType); currentRecipe = recipes.stream(). - filter(recipe -> recipe.id().equals(currentRecipeIdForLoad)). + filter(recipe -> recipe.id().location().equals(currentRecipeIdForLoad)). findFirst().orElse(null); currentRecipeIdForLoad = null; @@ -191,19 +195,18 @@ protected final void onWorkCompleted(RecipeHolder workData) { @Override public void changeRecipeIndex(boolean downUp) { - if(level == null || level.isClientSide()) + if(!(level instanceof ServerLevel serverLevel)) return; - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); + List> recipes = new ArrayList<>(RecipeUtils.getAllRecipesFor(serverLevel, recipeType)); recipes = recipes.stream(). - sorted(Comparator.comparing(recipe -> recipe.value().getResultItem(level.registryAccess()). - getDescriptionId())). + sorted(Comparator.comparing(recipe -> recipe.id().location())). 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().location().equals(recipes.get(i).id().location())) { currentIndex = i; break; } @@ -226,14 +229,14 @@ else if(currentIndex >= recipes.size()) @Override public void setRecipeId(ResourceLocation recipeId) { - if(level == null || level.isClientSide()) + if(!(level instanceof ServerLevel serverLevel)) return; if(recipeId == null) { currentRecipe = null; }else { - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); - Optional> recipe = recipes.stream().filter(r -> r.id().equals(recipeId)).findFirst(); + Collection> recipes = RecipeUtils.getAllRecipesFor(serverLevel, recipeType); + Optional> recipe = recipes.stream().filter(r -> r.id().location().equals(recipeId)).findFirst(); currentRecipe = recipe.orElse(null); } @@ -265,4 +268,21 @@ protected final void syncCurrentRecipeToPlayers(int distance) { public void setCurrentRecipe(@Nullable RecipeHolder currentRecipe) { this.currentRecipe = currentRecipe; } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, recipeType)), (ServerPlayer)player); + } + + 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 81e122a52..dc33495bf 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,32 +3,40 @@ 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.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeInput; -import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.neoforge.fluids.capability.IFluidHandler; import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; public abstract class SimpleRecipeFluidMachineBlockEntity > - 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 +94,7 @@ public int getCount() { public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { syncEnergyToPlayer(player); syncFluidToPlayer(player); + syncIngredientListToPlayer(player); return menuProvider.createMenu(id, inventory, this, upgradeModuleInventory, data); } @@ -93,7 +102,10 @@ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player play protected abstract C getRecipeInput(Container inventory); protected Optional> getRecipeFor(Container inventory) { - return level.getRecipeManager().getRecipeFor(recipeType, getRecipeInput(inventory), level); + if(!(level instanceof ServerLevel serverLevel)) + return Optional.empty(); + + return serverLevel.recipeAccess().getRecipeFor(recipeType, getRecipeInput(inventory), level); } @Override @@ -156,4 +168,21 @@ protected final void onWorkCompleted(RecipeHolder workData) { protected abstract void craftItem(RecipeHolder recipe); protected abstract boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder recipe); + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, recipeType)), (ServerPlayer)player); + } + + 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 61375888d..402dbc001 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,10 +3,15 @@ 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; import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; import net.minecraft.world.SimpleContainer; import net.minecraft.world.entity.player.Inventory; @@ -14,24 +19,26 @@ import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.ContainerData; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeInput; -import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.neoforge.items.ItemStackHandler; import org.jetbrains.annotations.NotNull; 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, @@ -50,7 +57,9 @@ protected ItemStackHandler initInventoryStorage() { return new ItemStackHandler(slotCount) { @Override public boolean isItemValid(int slot, @NotNull ItemStack stack) { - return slot == 0 && (level == null || RecipeUtils.isIngredientOfAny(level, recipeType, stack)); + return slot == 0 && ((level instanceof ServerLevel serverLevel)? + RecipeUtils.isIngredientOfAny(serverLevel, recipeType, stack): + RecipeUtils.isIngredientOfAny(ingredientsOfRecipes, stack)); } @Override @@ -113,6 +122,7 @@ public int getCount() { @Override public AbstractContainerMenu createMenu(int id, Inventory inventory, Player player) { syncEnergyToPlayer(player); + syncIngredientListToPlayer(player); return menuProvider.createMenu(id, inventory, this, upgradeModuleInventory, data); } @@ -120,7 +130,10 @@ public AbstractContainerMenu createMenu(int id, Inventory inventory, Player play protected abstract C getRecipeInput(Container inventory); protected Optional> getRecipeFor(Container inventory) { - return level.getRecipeManager().getRecipeFor(recipeType, getRecipeInput(inventory), level); + if(!(level instanceof ServerLevel serverLevel)) + return Optional.empty(); + + return serverLevel.recipeAccess().getRecipeFor(recipeType, getRecipeInput(inventory), level); } @Override @@ -184,16 +197,37 @@ protected void craftItem(RecipeHolder recipe) { if(level == null || !hasRecipe()) return; + SimpleContainer inventory = new SimpleContainer(itemHandler.getSlots()); + for(int i = 0;i < itemHandler.getSlots();i++) + inventory.setItem(i, itemHandler.getStackInSlot(i)); + itemHandler.extractItem(0, 1, false); - itemHandler.setStackInSlot(1, recipe.value().getResultItem(level.registryAccess()). + itemHandler.setStackInSlot(1, recipe.value().assemble(getRecipeInput(inventory), level.registryAccess()). copyWithCount(itemHandler.getStackInSlot(1).getCount() + - recipe.value().getResultItem(level.registryAccess()).getCount())); + recipe.value().assemble(getRecipeInput(inventory), level.registryAccess()).getCount())); resetProgress(); } protected boolean canCraftRecipe(SimpleContainer inventory, RecipeHolder recipe) { return level != null && - InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().getResultItem(level.registryAccess())); + InventoryUtils.canInsertItemIntoSlot(inventory, 1, recipe.value().assemble(getRecipeInput(inventory), level.registryAccess())); + } + + protected void syncIngredientListToPlayer(Player player) { + if(!(level instanceof ServerLevel serverLevel)) + return; + + ModMessages.sendToPlayer(new SyncIngredientsS2CPacket(getBlockPos(), 0, RecipeUtils.getIngredientsOf(serverLevel, recipeType)), (ServerPlayer)player); + } + + 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 6ea8926b6..c86e14c81 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 @@ -7,7 +7,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.Sheets; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; import net.minecraft.client.renderer.texture.TextureAtlasSprite; @@ -46,7 +46,7 @@ public void render(AbstractFluidTankBlockEntity blockEntity, float partialTic poseStack.pushPose(); - VertexConsumer vertexConsumer = bufferSource.getBuffer(Sheets.translucentCullBlockSheet()); + VertexConsumer vertexConsumer = bufferSource.getBuffer(RenderType.translucent()); poseStack.mulPose(facing.getRotation()); poseStack.mulPose(new Quaternionf().rotationX((float)Math.PI * .5f)); diff --git a/src/main/java/me/jddev0/ep/codec/CodecFix.java b/src/main/java/me/jddev0/ep/codec/CodecFix.java index c12d202f0..bb4567d2b 100644 --- a/src/main/java/me/jddev0/ep/codec/CodecFix.java +++ b/src/main/java/me/jddev0/ep/codec/CodecFix.java @@ -1,19 +1,10 @@ package me.jddev0.ep.codec; import com.mojang.serialization.Codec; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import net.minecraft.core.component.DataComponentPatch; -import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.ItemStack; public final class CodecFix { private CodecFix() {} - public static final Codec ITEM_STACK_CODEC = RecordCodecBuilder.create((instance) -> { - return instance.group(ItemStack.ITEM_NON_AIR_CODEC.fieldOf("item").forGetter(ItemStack::getItemHolder), - ExtraCodecs.POSITIVE_INT.optionalFieldOf("count", 1).forGetter(ItemStack::getCount), - DataComponentPatch.CODEC.optionalFieldOf("components", DataComponentPatch.EMPTY). - forGetter(ItemStack::getComponentsPatch)). - apply(instance, ItemStack::new); - }); + public static final Codec ITEM_STACK_CODEC = ItemStack.CODEC; } diff --git a/src/main/java/me/jddev0/ep/component/EPDataComponentTypes.java b/src/main/java/me/jddev0/ep/component/EPDataComponentTypes.java index aacfc18cc..f96044b99 100644 --- a/src/main/java/me/jddev0/ep/component/EPDataComponentTypes.java +++ b/src/main/java/me/jddev0/ep/component/EPDataComponentTypes.java @@ -6,7 +6,9 @@ import net.minecraft.core.component.DataComponentType; import net.minecraft.core.registries.Registries; import net.minecraft.network.codec.ByteBufCodecs; +import net.minecraft.network.codec.StreamCodec; import net.minecraft.util.ExtraCodecs; +import net.minecraft.util.Unit; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredHolder; import net.neoforged.neoforge.registries.DeferredRegister; @@ -68,6 +70,10 @@ public static DeferredHolder, DataComponentType> reg registerDataComponentType("dimensional_position", () -> builder -> builder.persistent(DimensionalPositionComponent.CODEC).networkSynchronized(DimensionalPositionComponent.STREAM_CODEC)); + public static final DeferredHolder, DataComponentType> NO_REPAIR = + registerDataComponentType("no_repair", () -> builder -> + builder.persistent(Unit.CODEC).networkSynchronized(StreamCodec.unit(Unit.INSTANCE))); + public static void register(IEventBus modEventBus) { DATA_COMPONENT_TYPES.register(modEventBus); } diff --git a/src/main/java/me/jddev0/ep/datagen/ModRecipeProvider.java b/src/main/java/me/jddev0/ep/datagen/ModRecipeProvider.java index fa00c37cb..29bfa124a 100644 --- a/src/main/java/me/jddev0/ep/datagen/ModRecipeProvider.java +++ b/src/main/java/me/jddev0/ep/datagen/ModRecipeProvider.java @@ -1,3029 +1,25 @@ 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.item.EPItems; -import me.jddev0.ep.recipe.*; -import me.jddev0.ep.registry.tags.CommonItemTags; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.AdvancementRequirements; -import net.minecraft.advancements.AdvancementRewards; -import net.minecraft.advancements.Criterion; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.advancements.critereon.RecipeUnlockedTrigger; +import me.jddev0.ep.datagen.recipe.ModRecipeGenerator; import net.minecraft.core.HolderLookup; -import net.minecraft.core.NonNullList; -import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.RecipeOutput; import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.*; -import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.Fluids; -import net.neoforged.neoforge.common.Tags; -import net.neoforged.neoforge.common.conditions.IConditionBuilder; -import net.neoforged.neoforge.fluids.FluidStack; -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 RecipeProvider implements IConditionBuilder { - public ModRecipeProvider(PackOutput output, CompletableFuture lookupProvider) { +public class ModRecipeProvider extends RecipeProvider.Runner { + protected ModRecipeProvider(PackOutput output, CompletableFuture lookupProvider) { super(output, lookupProvider); } @Override - protected void buildRecipes(RecipeOutput output) { - buildCraftingRecipes(output); - buildCookingRecipes(output); - buildSmithingRecipes(output); - buildPressMoldMakerRecipes(output); - buildAlloyFurnaceRecipes(output); - buildCompressorRecipes(output); - buildCrusherRecipes(output); - buildPulverizerRecipes(output); - buildSawmillRecipes(output); - buildPlantGrowthChamberRecipes(output); - buildPlantGrowthChamberFertilizerRecipes(output); - buildMetalPressRecipes(output); - buildHeatGeneratorRecipes(output); - buildThermalGeneratorRecipes(output); - buildStoneSolidifierRecipes(output); - buildAssemblingMachineRecipes(output); - buildFiltrationPlantRecipes(output); - buildFluidTransposerRecipes(output); - buildChargerRecipes(output); - buildEnergizerRecipes(output); - buildCrystalGrowthChamberRecipes(output); + protected RecipeProvider createRecipeProvider(HolderLookup.Provider wrapperLookup, RecipeOutput recipeOutput) { + return new ModRecipeGenerator(wrapperLookup, recipeOutput); } - private void buildCraftingRecipes(RecipeOutput output) { - buildItemIngredientsCraftingRecipes(output); - - buildFertilizerCraftingRecipes(output); - - buildUpgradeModuleCraftingRecipes(output); - - buildToolsCraftingRecipes(output); - - buildEnergyItemsCraftingRecipes(output); - - buildItemTransportCraftingRecipes(output); - buildFluidTransportCraftingRecipes(output); - buildEnergyTransportCraftingRecipes(output); - - buildMachineCraftingRecipes(output); - - buildMiscCraftingRecipes(output); - - buildCustomCraftingRecipes(output); - } - private void buildItemIngredientsCraftingRecipes(RecipeOutput output) { - add3x3UnpackingCraftingRecipe(output, has(EPBlocks.SAWDUST_BLOCK), - Ingredient.of(EPBlocks.SAWDUST_BLOCK), EPItems.SAWDUST, - CraftingBookCategory.MISC, "", "_from_sawdust_block"); - add3x3PackingCraftingRecipe(output, has(CommonItemTags.DUSTS_WOOD), - Ingredient.of(CommonItemTags.DUSTS_WOOD), EPBlocks.SAWDUST_BLOCK_ITEM, - CraftingBookCategory.MISC, "", ""); - - add3x3UnpackingCraftingRecipe(output, has(CommonItemTags.STORAGE_BLOCKS_SILICON), - Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), EPItems.SILICON, - CraftingBookCategory.MISC, "", "_from_silicon_block"); - add3x3PackingCraftingRecipe(output, has(CommonItemTags.SILICON), - Ingredient.of(CommonItemTags.SILICON), EPBlocks.SILICON_BLOCK_ITEM, - CraftingBookCategory.MISC, "", ""); - - addMetalNuggetCraftingRecipe(output, CommonItemTags.INGOTS_TIN, EPItems.TIN_NUGGET); - addMetalIngotCraftingRecipes(output, CommonItemTags.NUGGETS_TIN, CommonItemTags.STORAGE_BLOCKS_TIN, - EPItems.TIN_INGOT, "tin"); - - add3x3PackingCraftingRecipe(output, has(CommonItemTags.INGOTS_TIN), - Ingredient.of(CommonItemTags.INGOTS_TIN), EPBlocks.TIN_BLOCK_ITEM, - CraftingBookCategory.MISC, "", ""); - - add3x3UnpackingCraftingRecipe(output, has(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), - Ingredient.of(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), EPItems.RAW_TIN, - CraftingBookCategory.MISC, "", ""); - add3x3PackingCraftingRecipe(output, has(CommonItemTags.RAW_MATERIALS_TIN), - Ingredient.of(CommonItemTags.RAW_MATERIALS_TIN), EPBlocks.RAW_TIN_BLOCK_ITEM, - CraftingBookCategory.MISC, "", ""); - - addMetalPlateCraftingRecipe(output, CommonItemTags.INGOTS_TIN, EPItems.TIN_PLATE); - addMetalPlateCraftingRecipe(output, Tags.Items.INGOTS_COPPER, EPItems.COPPER_PLATE); - addMetalPlateCraftingRecipe(output, Tags.Items.INGOTS_IRON, EPItems.IRON_PLATE); - addMetalPlateCraftingRecipe(output, Tags.Items.INGOTS_GOLD, EPItems.GOLD_PLATE); - - addMetalWireCraftingRecipe(output, CommonItemTags.PLATES_TIN, EPItems.TIN_WIRE); - addMetalWireCraftingRecipe(output, CommonItemTags.PLATES_COPPER, EPItems.COPPER_WIRE); - addMetalWireCraftingRecipe(output, CommonItemTags.PLATES_GOLD, EPItems.GOLD_WIRE); - - addShapedCraftingRecipe(output, has(CommonItemTags.SILICON), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'Q', Ingredient.of(Tags.Items.GEMS_QUARTZ), - 'T', Ingredient.of(CommonItemTags.INGOTS_TIN), - 'C', Ingredient.of(Tags.Items.INGOTS_COPPER) - ), new String[] { - " C ", - "SQS", - " T " - }, new ItemStack(EPItems.BASIC_SOLAR_CELL.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(CommonItemTags.WIRES_COPPER), Map.of( - 'C', Ingredient.of(CommonItemTags.WIRES_COPPER), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'S', Ingredient.of(CommonItemTags.SILICON) - ), new String[] { - "RCR", - "CIC", - "SCS" - }, new ItemStack(EPItems.BASIC_CIRCUIT.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_CIRCUIT), Map.of( - 'G', Ingredient.of(CommonItemTags.WIRES_GOLD), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPItems.BASIC_CIRCUIT) - ), new String[] { - "GGG", - "CBC", - "CBC" - }, new ItemStack(EPItems.BASIC_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ADVANCED_CIRCUIT), Map.of( - 'G', Ingredient.of(CommonItemTags.WIRES_ENERGIZED_GOLD), - 'C', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'A', Ingredient.of(EPItems.ADVANCED_CIRCUIT), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE) - ), new String[] { - "GGG", - "CBC", - "CAC" - }, new ItemStack(EPItems.ADVANCED_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), Map.of( - 'g', Ingredient.of(CommonItemTags.WIRES_ENERGIZED_GOLD), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'P', Ingredient.of(EPItems.PROCESSING_UNIT), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE) - ), new String[] { - "ggg", - "GAG", - "GPG" - }, new ItemStack(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(Tags.Items.INGOTS_IRON), Map.of( - 'i', Ingredient.of(Tags.Items.NUGGETS_IRON), - 'I', Ingredient.of(Tags.Items.INGOTS_IRON) - ), new String[] { - " i ", - "iIi", - " i " - }, new ItemStack(EPItems.SAW_BLADE.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(CommonItemTags.SILICON), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'I', Ingredient.of(Tags.Items.INGOTS_IRON), - 'C', Ingredient.of(Tags.Items.INGOTS_COPPER) - ), new String[] { - "CIC", - "ISI", - "CIC" - }, new ItemStack(EPBlocks.BASIC_MACHINE_FRAME_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(CommonItemTags.GEARS_IRON), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 's', Ingredient.of(CommonItemTags.INGOTS_STEEL), - 'I', Ingredient.of(CommonItemTags.GEARS_IRON), - 'R', Ingredient.of(CommonItemTags.RODS_IRON), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "IsR", - "SBS", - "RsI" - }, new ItemStack(EPBlocks.HARDENED_MACHINE_FRAME_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(CommonItemTags.INGOTS_ENERGIZED_COPPER), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'A', Ingredient.of(CommonItemTags.INGOTS_ADVANCED_ALLOY), - 'E', Ingredient.of(CommonItemTags.INGOTS_ENERGIZED_COPPER), - 'H', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) - ), new String[] { - "ESE", - "AHA", - "ESE" - }, new ItemStack(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "CSC", - "SAS", - "CSC" - }, new ItemStack(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM.get()), CraftingBookCategory.MISC); - } - private void buildFertilizerCraftingRecipes(RecipeOutput output) { - addShapedCraftingRecipe(output, has(Items.BONE_MEAL), Map.of( - 'B', Ingredient.of(Items.BONE_MEAL), - 'D', Ingredient.of(Items.DANDELION), - 'b', Ingredient.of(Items.BLUE_ORCHID), - 'L', Ingredient.of(Tags.Items.GEMS_LAPIS), - 'A', Ingredient.of(Items.ALLIUM), - 'P', Ingredient.of(Items.POPPY) - ), new String[] { - "DBb", - "BLB", - "ABP" - }, new ItemStack(EPItems.BASIC_FERTILIZER.get(), 4), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_FERTILIZER), Map.of( - 'B', Ingredient.of(EPItems.BASIC_FERTILIZER), - 'S', Ingredient.of(Items.SUGAR_CANE), - 'K', Ingredient.of(Items.KELP), - 's', Ingredient.of(Items.SUGAR), - 'b', Ingredient.of(Items.BAMBOO), - 'W', Ingredient.of(Items.WHEAT_SEEDS) - ), new String[] { - "SBK", - "BsB", - "bBW" - }, new ItemStack(EPItems.GOOD_FERTILIZER.get(), 4), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.GOOD_FERTILIZER), Map.of( - 'G', Ingredient.of(EPItems.GOOD_FERTILIZER), - 'M', Ingredient.of(Items.RED_MUSHROOM), - 'S', Ingredient.of(Items.SWEET_BERRIES), - 'r', Ingredient.of(Tags.Items.DYES_RED), - 'T', Ingredient.of(Items.RED_TULIP), - 'R', Ingredient.of(Items.ROSE_BUSH) - ), new String[] { - "MGS", - "GrG", - "TGR" - }, new ItemStack(EPItems.ADVANCED_FERTILIZER.get(), 4), CraftingBookCategory.MISC); - } - private void buildUpgradeModuleCraftingRecipes(RecipeOutput output) { - addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE) - ), new String[] { - "CSC", - "RBR", - "CSC" - }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.SPEED_UPGRADE_MODULE_1), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE), - 's', Ingredient.of(EPItems.SPEED_UPGRADE_MODULE_1) - ), new String[] { - "CSC", - "RBR", - "CsC" - }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.SPEED_UPGRADE_MODULE_2), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 's', Ingredient.of(EPItems.SPEED_UPGRADE_MODULE_2) - ), new String[] { - "CSC", - "RAR", - "CsC" - }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.SPEED_UPGRADE_MODULE_3), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 's', Ingredient.of(EPItems.SPEED_UPGRADE_MODULE_3) - ), new String[] { - "CSC", - "RAR", - "CsC" - }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.SPEED_UPGRADE_MODULE_4), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 's', Ingredient.of(EPItems.SPEED_UPGRADE_MODULE_4) - ), new String[] { - "CSC", - "rRr", - "CsC" - }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'G', Ingredient.of(Tags.Items.INGOTS_GOLD), - 'R', Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE) - ), new String[] { - "CGC", - "RBR", - "CGC" - }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'G', Ingredient.of(Tags.Items.INGOTS_GOLD), - 'R', Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE), - 'E', Ingredient.of(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1) - ), new String[] { - "CGC", - "RBR", - "CEC" - }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'G', Ingredient.of(Tags.Items.INGOTS_GOLD), - 'R', Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'E', Ingredient.of(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2) - ), new String[] { - "CGC", - "RAR", - "CEC" - }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'G', Ingredient.of(Tags.Items.INGOTS_GOLD), - 'R', Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'E', Ingredient.of(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3) - ), new String[] { - "CGC", - "RAR", - "CEC" - }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'G', Ingredient.of(Tags.Items.INGOTS_GOLD), - 'r', Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'E', Ingredient.of(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4) - ), new String[] { - "CGC", - "rRr", - "CEC" - }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'T', Ingredient.of(CommonItemTags.PLATES_TIN), - 'c', Ingredient.of(ItemTags.COALS), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE) - ), new String[] { - "CTC", - "cBc", - "CTC" - }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'T', Ingredient.of(CommonItemTags.PLATES_TIN), - 'c', Ingredient.of(ItemTags.COALS), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE), - 'E', Ingredient.of(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1) - ), new String[] { - "CTC", - "cBc", - "CEC" - }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'T', Ingredient.of(CommonItemTags.PLATES_TIN), - 'c', Ingredient.of(ItemTags.COALS), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'E', Ingredient.of(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2) - ), new String[] { - "CTC", - "cAc", - "CEC" - }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'T', Ingredient.of(CommonItemTags.PLATES_TIN), - 'c', Ingredient.of(ItemTags.COALS), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'E', Ingredient.of(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3) - ), new String[] { - "CTC", - "cAc", - "CEC" - }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'T', Ingredient.of(CommonItemTags.PLATES_TIN), - 'c', Ingredient.of(ItemTags.COALS), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'E', Ingredient.of(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4) - ), new String[] { - "CTC", - "cRc", - "CEC" - }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE) - ), new String[] { - "GCG", - "rRr", - "GCG" - }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_1), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'D', Ingredient.of(EPItems.DURATION_UPGRADE_MODULE_1) - ), new String[] { - "GCG", - "rRr", - "GDG" - }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_2), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'D', Ingredient.of(EPItems.DURATION_UPGRADE_MODULE_2) - ), new String[] { - "GCG", - "rRr", - "GDG" - }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_3), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'D', Ingredient.of(EPItems.DURATION_UPGRADE_MODULE_3) - ), new String[] { - "GCG", - "rRr", - "GDG" - }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_4), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'D', Ingredient.of(EPItems.DURATION_UPGRADE_MODULE_4) - ), new String[] { - "GCG", - "rRr", - "GDG" - }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_5), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'D', Ingredient.of(EPItems.DURATION_UPGRADE_MODULE_5) - ), new String[] { - "GDG", - "CRC", - "GDG" - }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_6.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ADVANCED_UPGRADE_MODULE), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE) - ), new String[] { - "GRG", - "RAR", - "GRG" - }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.RANGE_UPGRADE_MODULE_1), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'R', Ingredient.of(EPItems.RANGE_UPGRADE_MODULE_1) - ), new String[] { - "GrG", - "rAr", - "GRG" - }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.RANGE_UPGRADE_MODULE_2), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'R', Ingredient.of(EPItems.RANGE_UPGRADE_MODULE_2) - ), new String[] { - "GrG", - "rAr", - "GRG" - }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE), - 'F', Ingredient.of(EPBlocks.IRON_FLUID_PIPE_ITEM) - ), new String[] { - "IFI", - "RBR", - "IFI" - }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1), Map.of( - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE), - 'F', Ingredient.of(EPBlocks.IRON_FLUID_PIPE_ITEM), - 'E', Ingredient.of(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1) - ), new String[] { - "IFI", - "RBR", - "IEI" - }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2), Map.of( - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'F', Ingredient.of(EPBlocks.IRON_FLUID_PIPE_ITEM), - 'E', Ingredient.of(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2) - ), new String[] { - "IFI", - "RAR", - "IEI" - }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3), Map.of( - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'F', Ingredient.of(EPBlocks.IRON_FLUID_PIPE_ITEM), - 'E', Ingredient.of(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3) - ), new String[] { - "IFI", - "RAR", - "IEI" - }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4), Map.of( - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'r', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'F', Ingredient.of(EPBlocks.IRON_FLUID_PIPE_ITEM), - 'E', Ingredient.of(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4) - ), new String[] { - "IFI", - "rRr", - "IEI" - }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE), - 'b', Ingredient.of(Items.BLAST_FURNACE) - ), new String[] { - "CSC", - "RBR", - "CbC" - }, new ItemStack(EPItems.BLAST_FURNACE_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 's', Ingredient.of(CommonItemTags.SILICON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE), - 'S', Ingredient.of(Items.SMOKER) - ), new String[] { - "CsC", - "RBR", - "CSC" - }, new ItemStack(EPItems.SMOKER_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_GOLD), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'b', Ingredient.of(EPItems.BASIC_SOLAR_CELL), - 'B', Ingredient.of(EPItems.BASIC_UPGRADE_MODULE) - ), new String[] { - "GSG", - "bBb", - "GSG" - }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.MOON_LIGHT_UPGRADE_MODULE_1), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_GOLD), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'B', Ingredient.of(EPItems.BASIC_SOLAR_CELL), - 'A', Ingredient.of(EPItems.ADVANCED_UPGRADE_MODULE), - 'M', Ingredient.of(EPItems.MOON_LIGHT_UPGRADE_MODULE_1) - ), new String[] { - "GSG", - "BAB", - "GMG" - }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.MOON_LIGHT_UPGRADE_MODULE_2), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_GOLD), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'B', Ingredient.of(EPItems.BASIC_SOLAR_CELL), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), - 'M', Ingredient.of(EPItems.MOON_LIGHT_UPGRADE_MODULE_2) - ), new String[] { - "GSG", - "BRB", - "GMG" - }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); - } - private void buildToolsCraftingRecipes(RecipeOutput output) { - addHammerCraftingRecipe(output, ItemTags.PLANKS, EPItems.WOODEN_HAMMER); - addHammerCraftingRecipe(output, ItemTags.STONE_TOOL_MATERIALS, EPItems.STONE_HAMMER); - addHammerCraftingRecipe(output, Tags.Items.INGOTS_IRON, EPItems.IRON_HAMMER); - addHammerCraftingRecipe(output, Tags.Items.INGOTS_GOLD, EPItems.GOLDEN_HAMMER); - addHammerCraftingRecipe(output, Tags.Items.GEMS_DIAMOND, EPItems.DIAMOND_HAMMER); - - addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( - 'i', Ingredient.of(Tags.Items.NUGGETS_IRON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'S', Ingredient.of(Tags.Items.RODS_WOODEN) - ), new String[] { - "I I", - " i ", - "S S" - }, new ItemStack(EPItems.CUTTER.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(Tags.Items.INGOTS_IRON), Map.of( - 'i', Ingredient.of(Tags.Items.NUGGETS_IRON), - 'I', Ingredient.of(Tags.Items.INGOTS_IRON) - ), new String[] { - " I ", - " iI", - "i " - }, new ItemStack(EPItems.WRENCH.get()), CraftingBookCategory.MISC); - } - private void buildEnergyItemsCraftingRecipes(RecipeOutput output) { - addShapedCraftingRecipe(output, has(Tags.Items.INGOTS_COPPER), Map.of( - 'T', Ingredient.of(CommonItemTags.NUGGETS_TIN), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'c', Ingredient.of(ItemTags.COALS) - ), new String[] { - "T T", - "CRC", - "CcC" - }, new ItemStack(EPItems.BATTERY_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_1), Map.of( - 'T', Ingredient.of(CommonItemTags.NUGGETS_TIN), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'c', Ingredient.of(ItemTags.COALS), - 'B', Ingredient.of(EPItems.BATTERY_1) - ), new String[] { - "T T", - "CBC", - "IcI" - }, new ItemStack(EPItems.BATTERY_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_2), Map.of( - 'T', Ingredient.of(CommonItemTags.NUGGETS_TIN), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'B', Ingredient.of(EPItems.BATTERY_2) - ), new String[] { - "T T", - "BCB", - "CSC" - }, new ItemStack(EPItems.BATTERY_3.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_3), Map.of( - 'T', Ingredient.of(CommonItemTags.NUGGETS_TIN), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'B', Ingredient.of(EPItems.BATTERY_3) - ), new String[] { - "T T", - "CBC", - "SIS" - }, new ItemStack(EPItems.BATTERY_4.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_4), Map.of( - 'T', Ingredient.of(CommonItemTags.NUGGETS_TIN), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'B', Ingredient.of(EPItems.BATTERY_4) - ), new String[] { - "T T", - "BSB", - "IRI" - }, new ItemStack(EPItems.BATTERY_5.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_5), Map.of( - 'T', Ingredient.of(CommonItemTags.NUGGETS_TIN), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'B', Ingredient.of(EPItems.BATTERY_5) - ), new String[] { - "T T", - "EBE", - "EBE" - }, new ItemStack(EPItems.BATTERY_6.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_6), Map.of( - 'G', Ingredient.of(Tags.Items.NUGGETS_GOLD), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'B', Ingredient.of(EPItems.BATTERY_6) - ), new String[] { - "G G", - "EBE", - "SBS" - }, new ItemStack(EPItems.BATTERY_7.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_7), Map.of( - 'G', Ingredient.of(Tags.Items.NUGGETS_GOLD), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'A', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'B', Ingredient.of(EPItems.BATTERY_7) - ), new String[] { - "G G", - "EBE", - "ABA" - }, new ItemStack(EPItems.BATTERY_8.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.COAL_ENGINE_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'c', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'C', Ingredient.of(EPBlocks.COAL_ENGINE_ITEM) - ), new String[] { - "SIS", - "RCR", - "cIc" - }, new ItemStack(EPItems.INVENTORY_COAL_ENGINE.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.CHARGER_ITEM), Map.of( - 'c', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(EPBlocks.CHARGER_ITEM) - ), new String[] { - "SIS", - "RCR", - "cIc" - }, new ItemStack(EPItems.INVENTORY_CHARGER.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.TELEPORTER_ITEM), Map.of( - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'c', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'T', Ingredient.of(EPBlocks.TELEPORTER_ITEM) - ), new String[] { - "CcC", - "RTR", - "GcG" - }, new ItemStack(EPItems.INVENTORY_TELEPORTER.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_3), Map.of( - 'b', Ingredient.of(EPItems.BASIC_CIRCUIT), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'B', Ingredient.of(EPItems.BATTERY_3) - ), new String[] { - "S S", - "bRb", - "CBC" - }, new ItemStack(EPItems.ENERGY_ANALYZER.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BATTERY_3), Map.of( - 'b', Ingredient.of(EPItems.BASIC_CIRCUIT), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'L', Ingredient.of(Tags.Items.GEMS_LAPIS), - 'B', Ingredient.of(EPItems.BATTERY_3) - ), new String[] { - "S S", - "bLb", - "CBC" - }, new ItemStack(EPItems.FLUID_ANALYZER.get()), CraftingBookCategory.MISC); - } - private void buildItemTransportCraftingRecipes(RecipeOutput output) { - addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( - 'L', Ingredient.of(Tags.Items.LEATHERS), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE) - ), new String[] { - " ", - "LLL", - "IRI" - }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_ITEM.get(), 6), CraftingBookCategory.MISC, - "item_conveyor_belt", "_from_leather"); - - addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( - 'K', Ingredient.of(Items.DRIED_KELP), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE) - ), new String[] { - " ", - "KKK", - "IRI" - }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_ITEM.get(), 6), CraftingBookCategory.MISC, - "item_conveyor_belt", "_from_dried_kelp"); - - addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_ITEM), Map.of( - 'C', Ingredient.of(Tags.Items.COBBLESTONES_NORMAL), - 'c', Ingredient.of(EPBlocks.ITEM_CONVEYOR_BELT_ITEM), - 'H', Ingredient.of(Items.HOPPER) - ), new String[] { - "CCC", - "CHC", - "CcC" - }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( - 'C', Ingredient.of(Tags.Items.COBBLESTONES_NORMAL), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'R', Ingredient.of(Tags.Items.STORAGE_BLOCKS_REDSTONE), - 'L', Ingredient.of(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) - ), new String[] { - "CRC", - "ILI", - "CRC" - }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SORTER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( - 'C', Ingredient.of(Tags.Items.COBBLESTONES_NORMAL), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'l', Ingredient.of(Items.LEVER), - 'L', Ingredient.of(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) - ), new String[] { - "ClC", - "ILI", - "CRC" - }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SWITCH_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( - 'C', Ingredient.of(Tags.Items.COBBLESTONES_NORMAL), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'L', Ingredient.of(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) - ), new String[] { - "CIC", - "ILI", - "CRC" - }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SPLITTER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( - 'C', Ingredient.of(Tags.Items.COBBLESTONES_NORMAL), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'L', Ingredient.of(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) - ), new String[] { - "CRC", - "ILI", - "CIC" - }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_MERGER_ITEM.get()), CraftingBookCategory.MISC); - } - private void buildFluidTransportCraftingRecipes(RecipeOutput output) { - addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( - 'I', Ingredient.of(Tags.Items.INGOTS_IRON), - 'i', Ingredient.of(CommonItemTags.PLATES_IRON) - ), new String[] { - "IiI", - "IiI", - "IiI" - }, new ItemStack(EPBlocks.IRON_FLUID_PIPE_ITEM.get(), 12), CraftingBookCategory.MISC, - "", "", "iron_"); - - addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_GOLD), Map.of( - 'G', Ingredient.of(Tags.Items.INGOTS_GOLD), - 'g', Ingredient.of(CommonItemTags.PLATES_GOLD) - ), new String[] { - "GgG", - "GgG", - "GgG" - }, new ItemStack(EPBlocks.GOLDEN_FLUID_PIPE_ITEM.get(), 12), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( - 'G', Ingredient.of(Tags.Items.GLASS_PANES_COLORLESS), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON) - ), new String[] { - "IGI", - "IGI", - "IGI" - }, new ItemStack(EPBlocks.FLUID_TANK_SMALL_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.FLUID_TANK_SMALL_ITEM), Map.of( - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM.get()), - 'S', Ingredient.of(CommonItemTags.INGOTS_STEEL) - ), new String[] { - "SFS", - "SFS", - "SFS" - }, new ItemStack(EPBlocks.FLUID_TANK_MEDIUM_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.FLUID_TANK_MEDIUM_ITEM), Map.of( - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM.get()), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON) - ), new String[] { - "IFI", - "IFI", - "IFI" - }, new ItemStack(EPBlocks.FLUID_TANK_LARGE_ITEM.get()), CraftingBookCategory.MISC); - } - private void buildEnergyTransportCraftingRecipes(RecipeOutput output) { - addBasicCableCraftingRecipes(output, CommonItemTags.INGOTS_TIN, CommonItemTags.WIRES_TIN, - new ItemStack(EPBlocks.TIN_CABLE_ITEM.get(), 9)); - - addBasicCableCraftingRecipes(output, Tags.Items.INGOTS_COPPER, CommonItemTags.WIRES_COPPER, - new ItemStack(EPBlocks.COPPER_CABLE_ITEM.get(), 6)); - addBasicCableCraftingRecipes(output, Tags.Items.INGOTS_GOLD, CommonItemTags.WIRES_GOLD, - new ItemStack(EPBlocks.GOLD_CABLE_ITEM.get(), 6)); - - addBasicCableCraftingRecipes(output, CommonItemTags.INGOTS_ENERGIZED_COPPER, CommonItemTags.WIRES_ENERGIZED_COPPER, - new ItemStack(EPBlocks.ENERGIZED_COPPER_CABLE_ITEM.get(), 3)); - addBasicCableCraftingRecipes(output, CommonItemTags.INGOTS_ENERGIZED_GOLD, CommonItemTags.WIRES_ENERGIZED_GOLD, - new ItemStack(EPBlocks.ENERGIZED_GOLD_CABLE_ITEM.get(), 3)); - - addShapedCraftingRecipe(output, has(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( - 'I', Ingredient.of(EPItems.CABLE_INSULATOR), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX) - ), new String[] { - "ICI", - "ICI", - "ICI" - }, new ItemStack(EPBlocks.ENERGIZED_CRYSTAL_MATRIX_CABLE_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'M', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "CSI", - "RMR", - "CSI" - }, new ItemStack(EPBlocks.LV_TRANSFORMER_1_TO_N_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'M', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "CSI", - "SMR", - "CRI" - }, new ItemStack(EPBlocks.LV_TRANSFORMER_3_TO_3_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'M', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "CRI", - "SMS", - "CRI" - }, new ItemStack(EPBlocks.LV_TRANSFORMER_N_TO_1_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'M', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.LV_TRANSFORMER_1_TO_N_ITEM) - ), new String[] { - "CTI", - "SMS", - "CTI" - }, new ItemStack(EPBlocks.MV_TRANSFORMER_1_TO_N_ITEM.get()), CraftingBookCategory.MISC, - "", "", "mv_"); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'M', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.LV_TRANSFORMER_3_TO_3_ITEM) - ), new String[] { - "CTI", - "SMS", - "CTI" - }, new ItemStack(EPBlocks.MV_TRANSFORMER_3_TO_3_ITEM.get()), CraftingBookCategory.MISC, - "", "", "mv_"); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'M', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.LV_TRANSFORMER_N_TO_1_ITEM) - ), new String[] { - "CTI", - "SMS", - "CTI" - }, new ItemStack(EPBlocks.MV_TRANSFORMER_N_TO_1_ITEM.get()), CraftingBookCategory.MISC, - "", "", "mv_"); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'M', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.MV_TRANSFORMER_1_TO_N_ITEM) - ), new String[] { - "GTG", - "SMS", - "GTG" - }, new ItemStack(EPBlocks.HV_TRANSFORMER_1_TO_N_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'M', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.MV_TRANSFORMER_3_TO_3_ITEM) - ), new String[] { - "GTG", - "SMS", - "GTG" - }, new ItemStack(EPBlocks.HV_TRANSFORMER_3_TO_3_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'M', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.MV_TRANSFORMER_N_TO_1_ITEM) - ), new String[] { - "GTG", - "SMS", - "GTG" - }, new ItemStack(EPBlocks.HV_TRANSFORMER_N_TO_1_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'M', Ingredient.of(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.HV_TRANSFORMER_1_TO_N_ITEM) - ), new String[] { - "CTC", - "SMS", - "CTC" - }, new ItemStack(EPBlocks.EHV_TRANSFORMER_1_TO_N_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'M', Ingredient.of(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.HV_TRANSFORMER_3_TO_3_ITEM) - ), new String[] { - "CTC", - "SMS", - "CTC" - }, new ItemStack(EPBlocks.EHV_TRANSFORMER_3_TO_3_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'M', Ingredient.of(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(EPBlocks.HV_TRANSFORMER_N_TO_1_ITEM) - ), new String[] { - "CTC", - "SMS", - "CTC" - }, new ItemStack(EPBlocks.EHV_TRANSFORMER_N_TO_1_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPItems.BATTERY_5), - 'M', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "CBC", - "BMB", - "SBS" - }, new ItemStack(EPBlocks.BATTERY_BOX_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'B', Ingredient.of(EPItems.BATTERY_8), - 'M', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "EBE", - "BMB", - "BSB" - }, new ItemStack(EPBlocks.ADVANCED_BATTERY_BOX_ITEM.get()), CraftingBookCategory.MISC); - - addShapelessCraftingRecipe(output, has(EPBlocks.BATTERY_BOX_ITEM), List.of( - Ingredient.of(EPBlocks.BATTERY_BOX_ITEM), - Ingredient.of(Items.MINECART) - ), new ItemStack(EPItems.BATTERY_BOX_MINECART.get()), CraftingBookCategory.MISC); - - addShapelessCraftingRecipe(output, has(EPBlocks.ADVANCED_BATTERY_BOX_ITEM), List.of( - Ingredient.of(EPBlocks.ADVANCED_BATTERY_BOX_ITEM), - Ingredient.of(Items.MINECART) - ), new ItemStack(EPItems.ADVANCED_BATTERY_BOX_MINECART.get()), CraftingBookCategory.MISC); - } - private void buildMachineCraftingRecipes(RecipeOutput output) { - addShapedCraftingRecipe(output, has(Items.SMOOTH_STONE), Map.of( - 'S', Ingredient.of(Items.SMOOTH_STONE), - 'B', Ingredient.of(Items.BRICKS), - 's', Ingredient.of(ItemTags.SHOVELS) - ), new String[] { - "BBB", - "BsB", - "SSS" - }, new ItemStack(EPBlocks.PRESS_MOLD_MAKER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(Items.FURNACE), Map.of( - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'B', Ingredient.of(Items.BRICKS), - 'F', Ingredient.of(Items.FURNACE) - ), new String[] { - "III", - "FIF", - "BBB" - }, new ItemStack(EPBlocks.ALLOY_FURNACE_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'b', Ingredient.of(EPItems.BASIC_CIRCUIT), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'T', Ingredient.of(Items.CRAFTING_TABLE) - ), new String[] { - "CTC", - "bBb", - "ITI" - }, new ItemStack(EPBlocks.AUTO_CRAFTER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME), Map.of( - 'c', Ingredient.of(EPItems.ADVANCED_CIRCUIT), - 'P', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'a', Ingredient.of(EPBlocks.AUTO_CRAFTER_ITEM) - ), new String[] { - "GaG", - "cAc", - "PaP" - }, new ItemStack(EPBlocks.ADVANCED_AUTO_CRAFTER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 's', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'S', Ingredient.of(Items.STONECUTTER) - ), new String[] { - "CsC", - "SBS", - "CIC" - }, new ItemStack(EPBlocks.CRUSHER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'c', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'C', Ingredient.of(EPBlocks.CRUSHER_ITEM) - ), new String[] { - "aCa", - "FAF", - "cCc" - }, new ItemStack(EPBlocks.ADVANCED_CRUSHER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'S', Ingredient.of(Items.STONECUTTER) - ), new String[] { - "ISI", - "SBS", - "ISI" - }, new ItemStack(EPBlocks.PULVERIZER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'C', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'P', Ingredient.of(EPBlocks.PULVERIZER_ITEM) - ), new String[] { - "aPa", - "FAF", - "CPC" - }, new ItemStack(EPBlocks.ADVANCED_PULVERIZER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(EPItems.SAW_BLADE), - 's', Ingredient.of(EPItems.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "sSs", - "CBC", - "sIs" - }, new ItemStack(EPBlocks.SAWMILL_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'P', Ingredient.of(Items.PISTON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "IPI", - "PBP", - "IPI" - }, new ItemStack(EPBlocks.COMPRESSOR_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'P', Ingredient.of(Items.PISTON), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'S', Ingredient.of(CommonItemTags.INGOTS_STEEL), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "SPS", - "IBI", - "SIS" - }, new ItemStack(EPBlocks.METAL_PRESS_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'I', Ingredient.of(CommonItemTags.GEARS_IRON), - 'i', Ingredient.of(CommonItemTags.RODS_IRON), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'P', Ingredient.of(EPBlocks.PRESS_MOLD_MAKER_ITEM) - ), new String[] { - "IPI", - "iBi", - "IPI" - }, new ItemStack(EPBlocks.AUTO_PRESS_MOLD_MAKER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 's', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'S', Ingredient.of(Items.STONECUTTER) - ), new String[] { - "CSC", - "sBs", - "ISI" - }, new ItemStack(EPBlocks.AUTO_STONECUTTER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'G', Ingredient.of(Tags.Items.GLASS_PANES_COLORLESS), - 'D', Ingredient.of(Items.DIRT), - 'W', Ingredient.of(Items.WATER_BUCKET), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "SWS", - "GBG", - "IDI" - }, new ItemStack(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'D', Ingredient.of(Items.DISPENSER) - ), new String[] { - "IDS", - "DBD", - "SDC" - }, new ItemStack(EPBlocks.BLOCK_PLACER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 's', Ingredient.of(CommonItemTags.INGOTS_STEEL), - 'i', Ingredient.of(CommonItemTags.GEARS_IRON), - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'B', Ingredient.of(EPItems.BASIC_CIRCUIT), - 'H', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) - ), new String[] { - "iRi", - "BHB", - "SsS" - }, new ItemStack(EPBlocks.ASSEMBLING_MACHINE_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'B', Ingredient.of(EPItems.BASIC_CIRCUIT), - 'S', Ingredient.of(CommonItemTags.INGOTS_STEEL), - 'H', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), - 'A', Ingredient.of(EPBlocks.ALLOY_FURNACE_ITEM) - ), new String[] { - "SAS", - "BHB", - "SAS" - }, new ItemStack(EPBlocks.INDUCTION_SMELTER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "SIS", - "IBI", - "CFC" - }, new ItemStack(EPBlocks.FLUID_FILLER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'i', Ingredient.of(CommonItemTags.GEARS_IRON), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'H', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) - ), new String[] { - "iSi", - "FHF", - "CIC" - }, new ItemStack(EPBlocks.STONE_SOLIDIFIER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'i', Ingredient.of(CommonItemTags.PLATES_IRON), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'D', Ingredient.of(EPBlocks.FLUID_DRAINER_ITEM), - 'F', Ingredient.of(EPBlocks.FLUID_FILLER_ITEM), - 'f', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'H', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) - ), new String[] { - "CiC", - "DHF", - "IfI" - }, new ItemStack(EPBlocks.FLUID_TRANSPOSER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'i', Ingredient.of(CommonItemTags.GEARS_IRON), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'B', Ingredient.of(Items.IRON_BARS), - 'f', Ingredient.of(EPBlocks.IRON_FLUID_PIPE_ITEM), - 'H', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) - ), new String[] { - "iBi", - "FHF", - "IfI" - }, new ItemStack(EPBlocks.FILTRATION_PLANT_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new String[] { - "CFC", - "IBI", - "SIS" - }, new ItemStack(EPBlocks.FLUID_DRAINER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'P', Ingredient.of(Items.PISTON), - 'p', Ingredient.of(EPBlocks.IRON_FLUID_PIPE_ITEM) - ), new String[] { - "RPR", - "FBF", - "IpI" - }, new ItemStack(EPBlocks.FLUID_PUMP_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(Tags.Items.STORAGE_BLOCKS_IRON), Map.of( - 'i', Ingredient.of(CommonItemTags.PLATES_IRON), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'B', Ingredient.of(Items.IRON_BARS), - 'G', Ingredient.of(Tags.Items.GLASS_BLOCKS_COLORLESS) - ), new String[] { - "IBI", - "iGi", - "IiI" - }, new ItemStack(EPBlocks.DRAIN_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 's', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON) - ), new String[] { - "sCs", - "IBI", - "CSC" - }, new ItemStack(EPBlocks.CHARGER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'C', Ingredient.of(EPBlocks.CHARGER_ITEM) - ), new String[] { - "SGS", - "aAa", - "GCG" - }, new ItemStack(EPBlocks.ADVANCED_CHARGER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 's', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON) - ), new String[] { - "CSC", - "IBI", - "sCs" - }, new ItemStack(EPBlocks.UNCHARGER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'U', Ingredient.of(EPBlocks.UNCHARGER_ITEM) - ), new String[] { - "GUG", - "aAa", - "SGS" - }, new ItemStack(EPBlocks.ADVANCED_UNCHARGER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.CHARGER_ITEM), Map.of( - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'c', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'i', Ingredient.of(CommonItemTags.PLATES_IRON), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'H', Ingredient.of(EPBlocks.CHARGER_ITEM) - ), new String[] { - "cCc", - "SHS", - "iIi" - }, new ItemStack(EPBlocks.MINECART_CHARGER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_CHARGER_ITEM), Map.of( - 'G', Ingredient.of(Tags.Items.STORAGE_BLOCKS_GOLD), - 'g', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'c', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'H', Ingredient.of(EPBlocks.ADVANCED_CHARGER_ITEM) - ), new String[] { - "gGg", - "SHS", - "cCc" - }, new ItemStack(EPBlocks.ADVANCED_MINECART_CHARGER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.UNCHARGER_ITEM), Map.of( - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'c', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'i', Ingredient.of(CommonItemTags.PLATES_IRON), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'U', Ingredient.of(EPBlocks.UNCHARGER_ITEM) - ), new String[] { - "iIi", - "SUS", - "cCc" - }, new ItemStack(EPBlocks.MINECART_UNCHARGER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_UNCHARGER_ITEM), Map.of( - 'G', Ingredient.of(Tags.Items.STORAGE_BLOCKS_GOLD), - 'g', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'c', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'S', Ingredient.of(CommonItemTags.SILICON), - 'U', Ingredient.of(EPBlocks.ADVANCED_UNCHARGER_ITEM) - ), new String[] { - "cCc", - "SUS", - "gGg" - }, new ItemStack(EPBlocks.ADVANCED_MINECART_UNCHARGER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.BASIC_SOLAR_CELL), Map.of( - 'G', Ingredient.of(Tags.Items.GLASS_PANES_COLORLESS), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'I', Ingredient.of(Tags.Items.INGOTS_IRON), - 'C', Ingredient.of(Tags.Items.INGOTS_COPPER), - 'B', Ingredient.of(EPItems.BASIC_SOLAR_CELL) - ), new String[] { - "GGG", - "BRB", - "ICI" - }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_1.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_1), Map.of( - 'G', Ingredient.of(Tags.Items.GLASS_PANES_COLORLESS), - 'C', Ingredient.of(Tags.Items.INGOTS_COPPER), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'S', Ingredient.of(EPBlocks.SOLAR_PANEL_ITEM_1), - 'B', Ingredient.of(EPItems.BASIC_SOLAR_CELL) - ), new String[] { - "GGG", - "SBS", - "CRC" - }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_2.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_2), Map.of( - 'G', Ingredient.of(Tags.Items.GLASS_PANES_COLORLESS), - 'R', Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), - 's', Ingredient.of(CommonItemTags.SILICON), - 'S', Ingredient.of(EPBlocks.SOLAR_PANEL_ITEM_2), - 'B', Ingredient.of(EPItems.BASIC_SOLAR_CELL) - ), new String[] { - "GGG", - "SBS", - "sRs" - }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_3.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_3), Map.of( - 'G', Ingredient.of(Tags.Items.GLASS_PANES_COLORLESS), - 's', Ingredient.of(CommonItemTags.SILICON), - 'R', Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), - 'S', Ingredient.of(EPBlocks.SOLAR_PANEL_ITEM_3), - 'A', Ingredient.of(EPItems.ADVANCED_SOLAR_CELL) - ), new String[] { - "GGG", - "SsS", - "ARA" - }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_4.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_4), Map.of( - 'G', Ingredient.of(Tags.Items.GLASS_PANES_COLORLESS), - 'a', Ingredient.of(Tags.Items.GEMS_AMETHYST), - 'E', Ingredient.of(CommonItemTags.INGOTS_ENERGIZED_GOLD), - 'S', Ingredient.of(EPBlocks.SOLAR_PANEL_ITEM_4), - 'A', Ingredient.of(EPItems.ADVANCED_SOLAR_CELL) - ), new String[] { - "GGG", - "SaS", - "AEA" - }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_5.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_5), Map.of( - 'G', Ingredient.of(Tags.Items.GLASS_PANES_COLORLESS), - 'A', Ingredient.of(Tags.Items.GEMS_AMETHYST), - 'E', Ingredient.of(CommonItemTags.INGOTS_ENERGIZED_GOLD), - 'S', Ingredient.of(EPBlocks.SOLAR_PANEL_ITEM_5), - 'R', Ingredient.of(EPItems.REINFORCED_ADVANCED_SOLAR_CELL) - ), new String[] { - "GGG", - "SAS", - "RER" - }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_6.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'F', Ingredient.of(Items.FURNACE) - ), new String[] { - "ISI", - "CBC", - "IFI" - }, new ItemStack(EPBlocks.COAL_ENGINE_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(Items.REDSTONE_LAMP), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'C', Ingredient.of(Tags.Items.INGOTS_COPPER), - 'R', Ingredient.of(Items.REDSTONE_LAMP) - ), new String[] { - "CSC", - "SRS", - "CSC" - }, new ItemStack(EPBlocks.POWERED_LAMP_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON), - 'C', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'B', Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM), - 'F', Ingredient.of(Items.FURNACE) - ), new String[] { - "CFC", - "SBS", - "IFI" - }, new ItemStack(EPBlocks.POWERED_FURNACE_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'G', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), - 'P', Ingredient.of(EPBlocks.POWERED_FURNACE_ITEM) - ), new String[] { - "GPG", - "SAS", - "aPa" - }, new ItemStack(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'G', Ingredient.of(CommonItemTags.PLATES_GOLD), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "RaR", - "GAG", - "ECE" - }, new ItemStack(EPBlocks.LIGHTNING_GENERATOR_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'G', Ingredient.of(CommonItemTags.PLATES_GOLD), - 'R', Ingredient.of(Tags.Items.DUSTS_REDSTONE), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "RaR", - "GAG", - "ESE" - }, new ItemStack(EPBlocks.ENERGIZER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'I', Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), - 'R', Ingredient.of(Tags.Items.STORAGE_BLOCKS_REDSTONE), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "aRa", - "IAI", - "ECE" - }, new ItemStack(EPBlocks.CHARGING_STATION_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.COAL_ENGINE_ITEM), Map.of( - 's', Ingredient.of(CommonItemTags.SILICON), - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'c', Ingredient.of(CommonItemTags.WIRES_COPPER), - 'C', Ingredient.of(EPBlocks.COAL_ENGINE_ITEM) - ), new String[] { - "cSc", - "sCs", - "cSc" - }, new ItemStack(EPBlocks.HEAT_GENERATOR_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( - 'S', Ingredient.of(CommonItemTags.SILICON), - 'F', Ingredient.of(EPBlocks.FLUID_TANK_SMALL_ITEM), - 'c', Ingredient.of(CommonItemTags.PLATES_COPPER), - 'C', Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), - 'H', Ingredient.of(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), - 'E', Ingredient.of(EPBlocks.COAL_ENGINE_ITEM) - ), new String[] { - "cHc", - "SES", - "CFC" - }, new ItemStack(EPBlocks.THERMAL_GENERATOR_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'a', Ingredient.of(Items.AMETHYST_BLOCK), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), - 'P', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'A', Ingredient.of(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "aPa", - "EAE", - "aPa" - }, new ItemStack(EPBlocks.CRYSTAL_GROWTH_CHAMBER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'P', Ingredient.of(EPItems.PROCESSING_UNIT), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'a', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'A', Ingredient.of(Tags.Items.GEMS_AMETHYST), - 'R', Ingredient.of(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "CAC", - "PRP", - "aEa" - }, new ItemStack(EPBlocks.WEATHER_CONTROLLER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'P', Ingredient.of(EPItems.PROCESSING_UNIT), - 'c', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'C', Ingredient.of(Items.CLOCK), - 'A', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'R', Ingredient.of(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "cCc", - "PRP", - "AEA" - }, new ItemStack(EPBlocks.TIME_CONTROLLER_ITEM.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( - 'T', Ingredient.of(EPItems.TELEPORTER_PROCESSING_UNIT), - 'C', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'A', Ingredient.of(CommonItemTags.PLATES_ADVANCED_ALLOY), - 'E', Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), - 'S', Ingredient.of(CommonItemTags.STORAGE_BLOCKS_SILICON), - 'R', Ingredient.of(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) - ), new String[] { - "CEC", - "TRT", - "ASA" - }, new ItemStack(EPBlocks.TELEPORTER_ITEM.get()), CraftingBookCategory.MISC); - } - private void buildMiscCraftingRecipes(RecipeOutput output) { - addShapelessCraftingRecipe(output, InventoryChangeTrigger.TriggerInstance.hasItems( - Items.BOOK, - EPBlocks.BASIC_MACHINE_FRAME_ITEM - ), List.of( - Ingredient.of(Items.BOOK), - Ingredient.of(EPBlocks.BASIC_MACHINE_FRAME_ITEM) - ), new ItemStack(EPItems.ENERGIZED_POWER_BOOK.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(CommonItemTags.DUSTS_CHARCOAL), Map.of( - 'P', Ingredient.of(Items.PAPER), - 'C', Ingredient.of(CommonItemTags.DUSTS_CHARCOAL), - 'I', Ingredient.of(CommonItemTags.PLATES_IRON) - ), new String[] { - "PCP", - "CIC", - "PCP" - }, new ItemStack(EPItems.CHARCOAL_FILTER.get()), CraftingBookCategory.MISC); - - addShapedCraftingRecipe(output, has(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( - 'A', Ingredient.of(Tags.Items.GEMS_AMETHYST), - 'E', Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), - 'e', Ingredient.of(Tags.Items.ENDER_PEARLS) - ), new String[] { - "AEA", - "EeE", - "AEA" - }, new ItemStack(EPItems.TELEPORTER_MATRIX.get()), CraftingBookCategory.MISC); - } - private void buildCustomCraftingRecipes(RecipeOutput output) { - addCustomCraftingRecipe(output, TeleporterMatrixSettingsCopyRecipe::new, CraftingBookCategory.MISC, - "teleporter_matrix_settings_copy"); - } - - private void buildCookingRecipes(RecipeOutput output) { - addBlastingAndSmeltingRecipes(output, CommonItemTags.RAW_MATERIALS_TIN, new ItemStack(EPItems.TIN_INGOT.get()), CookingBookCategory.MISC, - 100, .7f, "tin_ingot", "raw_tin"); - addBlastingAndSmeltingRecipes(output, CommonItemTags.ORES_TIN, new ItemStack(EPItems.TIN_INGOT.get()), CookingBookCategory.MISC, - 100, .7f, "tin_ingot", "tin_ores"); - - addBlastingAndSmeltingRecipes(output, CommonItemTags.DUSTS_TIN, new ItemStack(EPItems.TIN_INGOT.get()), CookingBookCategory.MISC, - 100, .7f, "tin_ingot", "tin_dust"); - addBlastingAndSmeltingRecipes(output, CommonItemTags.DUSTS_COPPER, new ItemStack(Items.COPPER_INGOT), CookingBookCategory.MISC, - 100, .7f, "copper_ingot", "copper_dust"); - addBlastingAndSmeltingRecipes(output, CommonItemTags.DUSTS_IRON, new ItemStack(Items.IRON_INGOT), CookingBookCategory.MISC, - 100, .7f, "iron_ingot", "iron_dust"); - addBlastingAndSmeltingRecipes(output, CommonItemTags.DUSTS_GOLD, new ItemStack(Items.GOLD_INGOT), CookingBookCategory.MISC, - 100, .7f, "gold_ingot", "gold_dust"); - - addBlastingAndSmeltingRecipes(output, EPItems.IRON_HAMMER.get(), new ItemStack(Items.IRON_NUGGET), CookingBookCategory.MISC, - 100, .1f, "iron_nugget", "iron_hammer"); - addBlastingAndSmeltingRecipes(output, EPItems.GOLDEN_HAMMER.get(), new ItemStack(Items.GOLD_NUGGET), CookingBookCategory.MISC, - 100, .1f, "gold_nugget", "golden_hammer"); - - addBlastingAndSmeltingRecipes(output, Tags.Items.GEMS_QUARTZ, new ItemStack(EPItems.SILICON.get()), CookingBookCategory.MISC, - 250, 4.1f, "silicon", "nether_quartz"); - - addSmeltingRecipe(output, EPBlocks.SAWDUST_BLOCK_ITEM.get(), new ItemStack(Items.CHARCOAL), CookingBookCategory.MISC, - 200, .15f, null, "sawdust_block"); - - addSmeltingRecipe(output, EPItems.RAW_GEAR_PRESS_MOLD.get(), new ItemStack(EPItems.GEAR_PRESS_MOLD.get()), CookingBookCategory.MISC, - 200, .3f, null); - addSmeltingRecipe(output, EPItems.RAW_ROD_PRESS_MOLD.get(), new ItemStack(EPItems.ROD_PRESS_MOLD.get()), CookingBookCategory.MISC, - 200, .3f, null); - addSmeltingRecipe(output, EPItems.RAW_WIRE_PRESS_MOLD.get(), new ItemStack(EPItems.WIRE_PRESS_MOLD.get()), CookingBookCategory.MISC, - 200, .3f, null); - } - - private void buildSmithingRecipes(RecipeOutput output) { - addNetheriteSmithingUpgradeRecipe(output, Ingredient.of(EPItems.DIAMOND_HAMMER), - new ItemStack(EPItems.NETHERITE_HAMMER.get())); - } - - private void buildPressMoldMakerRecipes(RecipeOutput output) { - addPressMoldMakerRecipe(output, 4, new ItemStack(EPItems.RAW_GEAR_PRESS_MOLD.get())); - addPressMoldMakerRecipe(output, 9, new ItemStack(EPItems.RAW_ROD_PRESS_MOLD.get())); - addPressMoldMakerRecipe(output, 6, new ItemStack(EPItems.RAW_WIRE_PRESS_MOLD.get())); - } - - private void buildAlloyFurnaceRecipes(RecipeOutput output) { - addAlloyFurnaceRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(Tags.Items.INGOTS_IRON)), - new IngredientWithCount(Ingredient.of(ItemTags.COALS), 3) - }, new ItemStack(EPItems.STEEL_INGOT.get()), 500); - - addAlloyFurnaceRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(CommonItemTags.INGOTS_TIN)), - new IngredientWithCount(Ingredient.of(CommonItemTags.SILICON)), - new IngredientWithCount(Ingredient.of(Tags.Items.DUSTS_REDSTONE), 2) - }, new ItemStack(EPItems.REDSTONE_ALLOY_INGOT.get()), 2500); - - addAlloyFurnaceRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(CommonItemTags.INGOTS_STEEL), 3), - new IngredientWithCount(Ingredient.of(Tags.Items.INGOTS_COPPER), 3), - new IngredientWithCount(Ingredient.of(CommonItemTags.INGOTS_TIN), 3) - }, new ItemStack(EPItems.ADVANCED_ALLOY_INGOT.get()), 10000); - } - - private void buildCompressorRecipes(RecipeOutput output) { - addCompressorRecipe(output, Ingredient.of(EPItems.STONE_PEBBLE), new ItemStack(Items.COBBLESTONE), - 16, "stone_pebbles"); - - addPlateCompressorRecipes(output, Ingredient.of(CommonItemTags.INGOTS_TIN), - Ingredient.of(CommonItemTags.STORAGE_BLOCKS_TIN), new ItemStack(EPItems.TIN_PLATE.get()), - "tin"); - addPlateCompressorRecipes(output, Ingredient.of(Tags.Items.INGOTS_COPPER), - Ingredient.of(Tags.Items.STORAGE_BLOCKS_COPPER), new ItemStack(EPItems.COPPER_PLATE.get()), - "copper"); - addPlateCompressorRecipes(output, Ingredient.of(Tags.Items.INGOTS_IRON), - Ingredient.of(Tags.Items.STORAGE_BLOCKS_IRON), new ItemStack(EPItems.IRON_PLATE.get()), - "iron"); - addPlateCompressorRecipes(output, Ingredient.of(Tags.Items.INGOTS_GOLD), - Ingredient.of(Tags.Items.STORAGE_BLOCKS_GOLD), new ItemStack(EPItems.GOLD_PLATE.get()), - "gold"); - - addPlateCompressorIngotRecipe(output, Ingredient.of(CommonItemTags.INGOTS_ADVANCED_ALLOY), - new ItemStack(EPItems.ADVANCED_ALLOY_PLATE.get()), "advanced_alloy"); - addPlateCompressorIngotRecipe(output, Ingredient.of(CommonItemTags.INGOTS_ENERGIZED_COPPER), - new ItemStack(EPItems.ENERGIZED_COPPER_PLATE.get()), "energized_copper"); - addPlateCompressorIngotRecipe(output, Ingredient.of(CommonItemTags.INGOTS_ENERGIZED_GOLD), - new ItemStack(EPItems.ENERGIZED_GOLD_PLATE.get()), "energized_gold"); - } - - private void buildCrusherRecipes(RecipeOutput output) { - addCrusherRecipe(output, Ingredient.of(Items.STONE), new ItemStack(Items.COBBLESTONE), - "stone"); - addCrusherRecipe(output, Ingredient.of(Items.STONE_BRICKS, Items.CHISELED_STONE_BRICKS, Items.CRACKED_STONE_BRICKS, - Items.SMOOTH_STONE), new ItemStack(Items.COBBLESTONE), - "stone_variants"); - - addCrusherRecipe(output, Ingredient.of(Items.MOSSY_STONE_BRICKS), new ItemStack(Items.MOSSY_COBBLESTONE), - "mossy_stone_bricks"); - - addCrusherRecipe(output, Ingredient.of(Items.TUFF_BRICKS, Items.CHISELED_TUFF_BRICKS, Items.CHISELED_TUFF, - Items.POLISHED_TUFF), new ItemStack(Items.TUFF), - "tuff_variants"); - - addCrusherRecipe(output, Ingredient.of(Items.DEEPSLATE), new ItemStack(Items.COBBLED_DEEPSLATE), - "deepslate"); - addCrusherRecipe(output, Ingredient.of(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(output, Ingredient.of(Items.POLISHED_GRANITE), new ItemStack(Items.GRANITE), - "polished_granite"); - addCrusherRecipe(output, Ingredient.of(Items.POLISHED_DIORITE), new ItemStack(Items.DIORITE), - "polished_diorite"); - addCrusherRecipe(output, Ingredient.of(Items.POLISHED_ANDESITE), new ItemStack(Items.ANDESITE), - "polished_andesite"); - - addCrusherRecipe(output, Ingredient.of(Tags.Items.COBBLESTONES_NORMAL), new ItemStack(Items.GRAVEL), - "cobblestone"); - - addCrusherRecipe(output, Ingredient.of(Tags.Items.GRAVELS), new ItemStack(Items.SAND), - "gravel"); - - addCrusherRecipe(output, Ingredient.of(Items.SANDSTONE), new ItemStack(Items.SAND), - "sandstone"); - addCrusherRecipe(output, Ingredient.of(Items.SMOOTH_SANDSTONE, Items.CUT_SANDSTONE, - Items.CHISELED_SANDSTONE), new ItemStack(Items.SAND), - "sandstone_variants"); - - addCrusherRecipe(output, Ingredient.of(Items.RED_SANDSTONE), new ItemStack(Items.RED_SAND), - "red_sandstone"); - addCrusherRecipe(output, Ingredient.of(Items.SMOOTH_RED_SANDSTONE, Items.CUT_RED_SANDSTONE, - Items.CHISELED_RED_SANDSTONE), new ItemStack(Items.RED_SAND), - "red_sandstone_variants"); - - addCrusherRecipe(output, Ingredient.of(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(output, Ingredient.of(Items.SMOOTH_BASALT, Items.POLISHED_BASALT), new ItemStack(Items.BASALT), - "basalt_variants"); - } - - private void buildPulverizerRecipes(RecipeOutput output) { - addBasicMetalPulverizerRecipes(output, - Ingredient.of(CommonItemTags.ORES_TIN), Ingredient.of(CommonItemTags.RAW_MATERIALS_TIN), - Ingredient.of(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), Ingredient.of(CommonItemTags.INGOTS_TIN), - new ItemStack(EPItems.TIN_DUST.get()), "tin"); - addBasicMetalPulverizerRecipes(output, - Ingredient.of(Tags.Items.ORES_IRON), Ingredient.of(Tags.Items.RAW_MATERIALS_IRON), - Ingredient.of(Tags.Items.STORAGE_BLOCKS_RAW_IRON), Ingredient.of(Tags.Items.INGOTS_IRON), - new ItemStack(EPItems.IRON_DUST.get()), "iron"); - addBasicMetalPulverizerRecipes(output, - Ingredient.of(Tags.Items.ORES_GOLD), Ingredient.of(Tags.Items.RAW_MATERIALS_GOLD), - Ingredient.of(Tags.Items.STORAGE_BLOCKS_RAW_GOLD), Ingredient.of(Tags.Items.INGOTS_GOLD), - new ItemStack(EPItems.GOLD_DUST.get()), "gold"); - - addPulverizerRecipe(output, Ingredient.of(Tags.Items.ORES_COPPER), - new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(EPItems.COPPER_DUST.get()), 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.get()), - .1, .2), "copper_ores"); - addRawMetalAndIngotPulverizerRecipes(output, - Ingredient.of(Tags.Items.RAW_MATERIALS_COPPER), - Ingredient.of(Tags.Items.STORAGE_BLOCKS_RAW_COPPER), Ingredient.of(Tags.Items.INGOTS_COPPER), - new ItemStack(EPItems.COPPER_DUST.get()), "copper"); - - addPulverizerRecipe(output, Ingredient.of(Tags.Items.ORES_COAL), - new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.COAL), new double[] { - 1., 1., .25 - }, new double[] { - 1., 1., .5, .25 - }), "coal_ores"); - - addPulverizerRecipe(output, Ingredient.of(Tags.Items.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(output, Ingredient.of(Tags.Items.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(output, Ingredient.of(Tags.Items.ORES_EMERALD), - new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.EMERALD), new double[] { - 1., .67, .17 - }, new double[] { - 1., .67, .33, .17 - }), "emerald_ores"); - - addPulverizerRecipe(output, Ingredient.of(Tags.Items.ORES_DIAMOND), - new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.DIAMOND), new double[] { - 1., .67, .17 - }, new double[] { - 1., .67, .33, .17 - }), "diamond_ores"); - - addPulverizerRecipe(output, Ingredient.of(Tags.Items.ORES_QUARTZ), - new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.QUARTZ), new double[] { - 1., .67, .17 - }, new double[] { - 1., .67, .33, .17 - }), "nether_quartz_ores"); - - addPulverizerRecipe(output, Ingredient.of(Tags.Items.ORES_NETHERITE_SCRAP), - new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.NETHERITE_SCRAP), new double[] { - 1., .125, .125 - }, new double[] { - 1., .25, .25, .125 - }), "ancient_debris"); - - addPulverizerRecipe(output, Ingredient.of(Items.CHARCOAL), - new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(EPItems.CHARCOAL_DUST.get()), - 1., 1.), "charcoal"); - } - - private void buildSawmillRecipes(RecipeOutput output) { - addBasicWoodSawmillRecipe(output, new ItemStack(Items.OAK_PLANKS), - Ingredient.of(ItemTags.OAK_LOGS), Ingredient.of(Items.OAK_FENCE), - Ingredient.of(Items.OAK_FENCE_GATE), Ingredient.of(Items.OAK_DOOR), - Ingredient.of(Items.OAK_TRAPDOOR), Ingredient.of(Items.OAK_PRESSURE_PLATE), - Ingredient.of(Items.OAK_SIGN), Ingredient.of(Items.OAK_BOAT), Ingredient.of(Items.OAK_CHEST_BOAT), - false, "oak"); - - addBasicWoodSawmillRecipe(output, new ItemStack(Items.SPRUCE_PLANKS), - Ingredient.of(ItemTags.SPRUCE_LOGS), Ingredient.of(Items.SPRUCE_FENCE), - Ingredient.of(Items.SPRUCE_FENCE_GATE), Ingredient.of(Items.SPRUCE_DOOR), - Ingredient.of(Items.SPRUCE_TRAPDOOR), Ingredient.of(Items.SPRUCE_PRESSURE_PLATE), - Ingredient.of(Items.SPRUCE_SIGN), Ingredient.of(Items.SPRUCE_BOAT), Ingredient.of(Items.SPRUCE_CHEST_BOAT), - false, "spruce"); - - addBasicWoodSawmillRecipe(output, new ItemStack(Items.BIRCH_PLANKS), - Ingredient.of(ItemTags.BIRCH_LOGS), Ingredient.of(Items.BIRCH_FENCE), - Ingredient.of(Items.BIRCH_FENCE_GATE), Ingredient.of(Items.BIRCH_DOOR), - Ingredient.of(Items.BIRCH_TRAPDOOR), Ingredient.of(Items.BIRCH_PRESSURE_PLATE), - Ingredient.of(Items.BIRCH_SIGN), Ingredient.of(Items.BIRCH_BOAT), Ingredient.of(Items.BIRCH_CHEST_BOAT), - false, "birch"); - - addBasicWoodSawmillRecipe(output, new ItemStack(Items.JUNGLE_PLANKS), - Ingredient.of(ItemTags.JUNGLE_LOGS), Ingredient.of(Items.JUNGLE_FENCE), - Ingredient.of(Items.JUNGLE_FENCE_GATE), Ingredient.of(Items.JUNGLE_DOOR), - Ingredient.of(Items.JUNGLE_TRAPDOOR), Ingredient.of(Items.JUNGLE_PRESSURE_PLATE), - Ingredient.of(Items.JUNGLE_SIGN), Ingredient.of(Items.JUNGLE_BOAT), Ingredient.of(Items.JUNGLE_CHEST_BOAT), - false, "jungle"); - - addBasicWoodSawmillRecipe(output, new ItemStack(Items.ACACIA_PLANKS), - Ingredient.of(ItemTags.ACACIA_LOGS), Ingredient.of(Items.ACACIA_FENCE), - Ingredient.of(Items.ACACIA_FENCE_GATE), Ingredient.of(Items.ACACIA_DOOR), - Ingredient.of(Items.ACACIA_TRAPDOOR), Ingredient.of(Items.ACACIA_PRESSURE_PLATE), - Ingredient.of(Items.ACACIA_SIGN), Ingredient.of(Items.ACACIA_BOAT), Ingredient.of(Items.ACACIA_CHEST_BOAT), - false, "acacia"); - - addBasicWoodSawmillRecipe(output, new ItemStack(Items.DARK_OAK_PLANKS), - Ingredient.of(ItemTags.DARK_OAK_LOGS), Ingredient.of(Items.DARK_OAK_FENCE), - Ingredient.of(Items.DARK_OAK_FENCE_GATE), Ingredient.of(Items.DARK_OAK_DOOR), - Ingredient.of(Items.DARK_OAK_TRAPDOOR), Ingredient.of(Items.DARK_OAK_PRESSURE_PLATE), - Ingredient.of(Items.DARK_OAK_SIGN), Ingredient.of(Items.DARK_OAK_BOAT), Ingredient.of(Items.DARK_OAK_CHEST_BOAT), - false, "dark_oak"); - - addBasicWoodSawmillRecipe(output, new ItemStack(Items.MANGROVE_PLANKS), - Ingredient.of(ItemTags.MANGROVE_LOGS), Ingredient.of(Items.MANGROVE_FENCE), - Ingredient.of(Items.MANGROVE_FENCE_GATE), Ingredient.of(Items.MANGROVE_DOOR), - Ingredient.of(Items.MANGROVE_TRAPDOOR), Ingredient.of(Items.MANGROVE_PRESSURE_PLATE), - Ingredient.of(Items.MANGROVE_SIGN), Ingredient.of(Items.MANGROVE_BOAT), Ingredient.of(Items.MANGROVE_CHEST_BOAT), - false, "mangrove"); - - addBasicWoodSawmillRecipe(output, new ItemStack(Items.CHERRY_PLANKS), - Ingredient.of(ItemTags.CHERRY_LOGS), Ingredient.of(Items.CHERRY_FENCE), - Ingredient.of(Items.CHERRY_FENCE_GATE), Ingredient.of(Items.CHERRY_DOOR), - Ingredient.of(Items.CHERRY_TRAPDOOR), Ingredient.of(Items.CHERRY_PRESSURE_PLATE), - Ingredient.of(Items.CHERRY_SIGN), Ingredient.of(Items.CHERRY_BOAT), Ingredient.of(Items.CHERRY_CHEST_BOAT), - false, "cherry"); - - addSawmillRecipe(output, Ingredient.of(ItemTags.BAMBOO_BLOCKS), new ItemStack(Items.BAMBOO_PLANKS, 3), - 1, "bamboo_planks", "bamboo_blocks"); - addBasicWoodWithoutLogsSawmillRecipe(output, new ItemStack(Items.BAMBOO_PLANKS), - Ingredient.of(Items.BAMBOO_FENCE), Ingredient.of(Items.BAMBOO_FENCE_GATE), Ingredient.of(Items.BAMBOO_DOOR), - Ingredient.of(Items.BAMBOO_TRAPDOOR), Ingredient.of(Items.BAMBOO_PRESSURE_PLATE), - Ingredient.of(Items.BAMBOO_SIGN), Ingredient.of(Items.BAMBOO_RAFT), Ingredient.of(Items.BAMBOO_CHEST_RAFT), - true, "bamboo"); - - addSawmillRecipe(output, Ingredient.of(ItemTags.CRIMSON_STEMS), new ItemStack(Items.CRIMSON_PLANKS, 6), - 1, "crimson_planks", "crimson_stems"); - addBasicWoodWithoutLogsAndBoatsSawmillRecipe(output, new ItemStack(Items.CRIMSON_PLANKS), - Ingredient.of(Items.CRIMSON_FENCE), Ingredient.of(Items.CRIMSON_FENCE_GATE), Ingredient.of(Items.CRIMSON_DOOR), - Ingredient.of(Items.CRIMSON_TRAPDOOR), Ingredient.of(Items.CRIMSON_PRESSURE_PLATE), - Ingredient.of(Items.CRIMSON_SIGN), "crimson"); - - addSawmillRecipe(output, Ingredient.of(ItemTags.WARPED_STEMS), new ItemStack(Items.WARPED_PLANKS, 6), - 1, "warped_planks", "warped_stems"); - addBasicWoodWithoutLogsAndBoatsSawmillRecipe(output, new ItemStack(Items.WARPED_PLANKS), - Ingredient.of(Items.WARPED_FENCE), Ingredient.of(Items.WARPED_FENCE_GATE), Ingredient.of(Items.WARPED_DOOR), - Ingredient.of(Items.WARPED_TRAPDOOR), Ingredient.of(Items.WARPED_PRESSURE_PLATE), - Ingredient.of(Items.WARPED_SIGN), "warped"); - - addSawmillRecipe(output, Ingredient.of(Items.CRAFTING_TABLE), new ItemStack(Items.OAK_PLANKS, 3), - 2, "oak_planks", "crafting_table"); - addSawmillRecipe(output, Ingredient.of(Items.CARTOGRAPHY_TABLE), new ItemStack(Items.OAK_PLANKS, 4), - new ItemStack(Items.PAPER, 2), "oak_planks", "cartography_table"); - addSawmillRecipe(output, Ingredient.of(Items.FLETCHING_TABLE), new ItemStack(Items.OAK_PLANKS, 4), - new ItemStack(Items.FLINT, 2), "oak_planks", "fletching_table"); - addSawmillRecipe(output, Ingredient.of(Items.LOOM), new ItemStack(Items.OAK_PLANKS, 2), - new ItemStack(Items.STRING, 2), "oak_planks", "loom"); - addSawmillRecipe(output, Ingredient.of(Items.COMPOSTER), new ItemStack(Items.OAK_PLANKS, 3), - 2, "oak_planks", "composter"); - addSawmillRecipe(output, Ingredient.of(Items.NOTE_BLOCK), new ItemStack(Items.OAK_PLANKS, 8), - new ItemStack(Items.REDSTONE), "oak_planks", "note_block"); - addSawmillRecipe(output, Ingredient.of(Items.JUKEBOX), new ItemStack(Items.OAK_PLANKS, 8), - new ItemStack(Items.DIAMOND), "oak_planks", "jukebox"); - - addSawmillRecipe(output, Ingredient.of(Items.BOOKSHELF), new ItemStack(Items.OAK_PLANKS, 6), - new ItemStack(Items.BOOK, 3), "oak_planks", "bookshelf"); - addSawmillRecipe(output, Ingredient.of(Items.CHISELED_BOOKSHELF), new ItemStack(Items.OAK_PLANKS, 6), - 5, "oak_planks", "chiseled_bookshelf"); - addSawmillRecipe(output, Ingredient.of(Items.LECTERN), new ItemStack(Items.OAK_PLANKS, 8), - new ItemStack(Items.BOOK, 3), "oak_planks", "lectern"); - - addSawmillRecipe(output, Ingredient.of(Items.CHEST), new ItemStack(Items.OAK_PLANKS, 7), - 3, "oak_planks", "chest"); - addSawmillRecipe(output, Ingredient.of(Items.BARREL), new ItemStack(Items.OAK_PLANKS, 6), - 5, "oak_planks", "barrel"); - - addSawmillRecipe(output, Ingredient.of(Items.WOODEN_SWORD), new ItemStack(Items.OAK_PLANKS, 2), - 1, "oak_planks", "wooden_sword"); - addSawmillRecipe(output, Ingredient.of(Items.WOODEN_SHOVEL), new ItemStack(Items.OAK_PLANKS), - 2, "oak_planks", "wooden_shovel"); - addSawmillRecipe(output, Ingredient.of(Items.WOODEN_PICKAXE), new ItemStack(Items.OAK_PLANKS, 3), - 2, "oak_planks", "wooden_pickaxe"); - addSawmillRecipe(output, Ingredient.of(Items.WOODEN_AXE), new ItemStack(Items.OAK_PLANKS, 3), - 2, "oak_planks", "wooden_axe"); - addSawmillRecipe(output, Ingredient.of(Items.WOODEN_HOE), new ItemStack(Items.OAK_PLANKS, 2), - 2, "oak_planks", "wooden_hoe"); - addSawmillRecipe(output, Ingredient.of(EPItems.WOODEN_HAMMER.get()), new ItemStack(Items.OAK_PLANKS, 2), - 2, "oak_planks", "wooden_hammer"); - - addSawmillRecipe(output, Ingredient.of(ItemTags.PLANKS), new ItemStack(Items.STICK, 3), - 1, "sticks", "planks"); - addSawmillRecipe(output, Ingredient.of(Items.BAMBOO_MOSAIC), new ItemStack(Items.STICK, 3), - 3, "sticks", "bamboo_mosaic"); - - addSawmillRecipe(output, Ingredient.fromValues(Stream.of(new Ingredient.TagValue(ItemTags.WOODEN_STAIRS), - new Ingredient.ItemValue(new ItemStack(Items.BAMBOO_MOSAIC_STAIRS)))), - new ItemStack(Items.STICK, 3), 1, "sticks", "stairs"); - addSawmillRecipe(output, Ingredient.fromValues(Stream.of(new Ingredient.TagValue(ItemTags.WOODEN_SLABS), - new Ingredient.ItemValue(new ItemStack(Items.BAMBOO_MOSAIC_SLAB)))), - new ItemStack(Items.STICK, 1), 1, "sticks", "slabs"); - addSawmillRecipe(output, Ingredient.of(ItemTags.WOODEN_BUTTONS), new ItemStack(Items.STICK, 3), - 1, "sticks", "buttons"); - - addSawmillRecipe(output, Ingredient.of(Items.LADDER), new ItemStack(Items.STICK, 2), - 1, "sticks", "ladder"); - - addSawmillRecipe(output, Ingredient.of(Items.BOWL), new ItemStack(Items.STICK), - 2, "sticks", "bowl"); - addSawmillRecipe(output, Ingredient.of(Items.BOW), new ItemStack(Items.STICK, 3), - new ItemStack(Items.STRING, 3), "sticks", "bow"); - addSawmillRecipe(output, Ingredient.of(Items.FISHING_ROD), new ItemStack(Items.STICK, 3), - new ItemStack(Items.STRING, 2), "sticks", "fishing_rod"); - - addSawmillRecipe(output, Ingredient.of(Tags.Items.RODS_WOODEN), new ItemStack(EPItems.SAWDUST.get()), - 0, "sawdust", "sticks"); - } - - private void buildPlantGrowthChamberRecipes(RecipeOutput output) { - addBasicFlowerGrowingRecipe(output, Items.DANDELION, "dandelions"); - addBasicFlowerGrowingRecipe(output, Items.POPPY, "poppies"); - addBasicFlowerGrowingRecipe(output, Items.BLUE_ORCHID, "blue_orchids"); - addBasicFlowerGrowingRecipe(output, Items.ALLIUM, "alliums"); - addBasicFlowerGrowingRecipe(output, Items.AZURE_BLUET, "azure_bluets"); - addBasicFlowerGrowingRecipe(output, Items.RED_TULIP, "red_tulips"); - addBasicFlowerGrowingRecipe(output, Items.ORANGE_TULIP, "orange_tulips"); - addBasicFlowerGrowingRecipe(output, Items.WHITE_TULIP, "white_tulips"); - addBasicFlowerGrowingRecipe(output, Items.PINK_TULIP, "pink_tulips"); - addBasicFlowerGrowingRecipe(output, Items.OXEYE_DAISY, "oxeye_daisies"); - addBasicFlowerGrowingRecipe(output, Items.CORNFLOWER, "cornflowers"); - addBasicFlowerGrowingRecipe(output, Items.LILY_OF_THE_VALLEY, "lily_of_the_valley"); - - addBasicFlowerGrowingRecipe(output, Items.SUNFLOWER, "sunflowers"); - addBasicFlowerGrowingRecipe(output, Items.LILAC, "lilacs"); - addBasicFlowerGrowingRecipe(output, Items.ROSE_BUSH, "rose_bushes"); - addBasicFlowerGrowingRecipe(output, Items.PEONY, "peonies"); - - addBasicMushroomsGrowingRecipe(output, Items.BROWN_MUSHROOM, "brown_mushrooms"); - addBasicMushroomsGrowingRecipe(output, Items.RED_MUSHROOM, "red_mushrooms"); - - addBasicAncientFlowerGrowingRecipe(output, Items.TORCHFLOWER_SEEDS, Items.TORCHFLOWER, "torchflowers"); - addBasicAncientFlowerGrowingRecipe(output, Items.PITCHER_POD, Items.PITCHER_PLANT, "pitcher_plants"); - - addPlantGrowthChamberRecipe(output, Ingredient.of(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(output, Ingredient.of(Items.SWEET_BERRIES), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(Items.SWEET_BERRIES), new double[] { - 1., 1., .33, .17 - }) - }, 16000, "sweet_berries", "sweet_berries"); - - addPlantGrowthChamberRecipe(output, Ingredient.of(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(output, Ingredient.of(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(output, Ingredient.of(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(output, Ingredient.of(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(output, Ingredient.of(Items.CARROT), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(Items.CARROT), new double[] { - 1., .75, .25, .25 - }) - }, 16000, "carrots", "carrot"); - - addPlantGrowthChamberRecipe(output, Ingredient.of(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(output, Ingredient.of(Items.PUMPKIN_SEEDS), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(Items.PUMPKIN), new double[] { - 1. - }) - }, 16000, "pumpkin", "pumpkin_seeds"); - - addPlantGrowthChamberRecipe(output, Ingredient.of(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(output, Ingredient.of(Items.BAMBOO), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(Items.BAMBOO), new double[] { - 1., 1., .67, .17 - }) - }, 16000, "bamboo", "bamboo"); - } - - private void buildPlantGrowthChamberFertilizerRecipes(RecipeOutput output) { - addPlantGrowthChamberFertilizerRecipe(output, Ingredient.of(Items.BONE_MEAL), - 1.5, 3., "bone_meal"); - - addPlantGrowthChamberFertilizerRecipe(output, Ingredient.of(EPItems.BASIC_FERTILIZER.get()), - 2.5, 3.5, "basic_fertilizer"); - - addPlantGrowthChamberFertilizerRecipe(output, Ingredient.of(EPItems.GOOD_FERTILIZER.get()), - 3.5, 5., "good_fertilizer"); - - addPlantGrowthChamberFertilizerRecipe(output, Ingredient.of(EPItems.ADVANCED_FERTILIZER.get()), - 5., 6.5, "advanced_fertilizer"); - } - - private void buildMetalPressRecipes(RecipeOutput output) { - addGearMetalPressRecipe(output, Ingredient.of(CommonItemTags.PLATES_IRON), new ItemStack(EPItems.IRON_GEAR.get())); - - addRodMetalPressRecipe(output, Ingredient.of(CommonItemTags.PLATES_IRON), new ItemStack(EPItems.IRON_ROD.get())); - - addWireMetalPressRecipe(output, Ingredient.of(CommonItemTags.PLATES_TIN), new ItemStack(EPItems.TIN_WIRE.get())); - addWireMetalPressRecipe(output, Ingredient.of(CommonItemTags.PLATES_COPPER), new ItemStack(EPItems.COPPER_WIRE.get())); - addWireMetalPressRecipe(output, Ingredient.of(CommonItemTags.PLATES_GOLD), new ItemStack(EPItems.GOLD_WIRE.get())); - - addWireMetalPressRecipe(output, Ingredient.of(CommonItemTags.PLATES_ENERGIZED_COPPER), new ItemStack(EPItems.ENERGIZED_COPPER_WIRE.get())); - addWireMetalPressRecipe(output, Ingredient.of(CommonItemTags.PLATES_ENERGIZED_GOLD), new ItemStack(EPItems.ENERGIZED_GOLD_WIRE.get())); - } - - private void buildHeatGeneratorRecipes(RecipeOutput output) { - addHeatGeneratorRecipe(output, Fluids.FLOWING_LAVA, 15, "flowing_lava"); - addHeatGeneratorRecipe(output, Fluids.LAVA, 25, "still_lava"); - } - - private void buildThermalGeneratorRecipes(RecipeOutput output) { - addThermalGeneratorRecipe(output, Fluids.LAVA, 20000, "lava"); - } - - private void buildAssemblingMachineRecipes(RecipeOutput output) { - addAssemblingMachineRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(EPItems.BASIC_SOLAR_CELL), 2), - new IngredientWithCount(Ingredient.of(CommonItemTags.INGOTS_ENERGIZED_COPPER), 4), - new IngredientWithCount(Ingredient.of(CommonItemTags.INGOTS_TIN), 2), - new IngredientWithCount(Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY), 1) - }, new ItemStack(EPItems.ADVANCED_SOLAR_CELL.get())); - - addAssemblingMachineRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(EPItems.ADVANCED_SOLAR_CELL), 2), - new IngredientWithCount(Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), 4), - new IngredientWithCount(Ingredient.of(CommonItemTags.SILICON), 2), - new IngredientWithCount(Ingredient.of(Tags.Items.DUSTS_REDSTONE), 2) - }, new ItemStack(EPItems.REINFORCED_ADVANCED_SOLAR_CELL.get())); - - addAssemblingMachineRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(EPItems.BASIC_CIRCUIT), 4), - new IngredientWithCount(Ingredient.of(CommonItemTags.WIRES_ENERGIZED_COPPER), 4), - new IngredientWithCount(Ingredient.of(CommonItemTags.SILICON), 4), - new IngredientWithCount(Ingredient.of(Tags.Items.DUSTS_REDSTONE), 2) - }, new ItemStack(EPItems.ADVANCED_CIRCUIT.get())); - - addAssemblingMachineRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(EPItems.ADVANCED_CIRCUIT), 4), - new IngredientWithCount(Ingredient.of(CommonItemTags.WIRES_ENERGIZED_GOLD), 6), - new IngredientWithCount(Ingredient.of(CommonItemTags.SILICON), 6) - }, new ItemStack(EPItems.PROCESSING_UNIT.get())); - - addAssemblingMachineRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(EPItems.PROCESSING_UNIT), 4), - new IngredientWithCount(Ingredient.of(EPItems.TELEPORTER_MATRIX), 4), - new IngredientWithCount(Ingredient.of(EPItems.ENERGIZED_CRYSTAL_MATRIX), 2), - new IngredientWithCount(Ingredient.of(CommonItemTags.SILICON), 2) - }, new ItemStack(EPItems.TELEPORTER_PROCESSING_UNIT.get())); - - addAssemblingMachineRecipe(output, new IngredientWithCount[] { - new IngredientWithCount(Ingredient.of(Tags.Items.GEMS_AMETHYST), 6), - new IngredientWithCount(Ingredient.of(Tags.Items.GEMS_DIAMOND), 2), - new IngredientWithCount(Ingredient.of(Tags.Items.GEMS_EMERALD), 2), - new IngredientWithCount(Ingredient.of(CommonItemTags.INGOTS_REDSTONE_ALLOY)) - }, new ItemStack(EPItems.CRYSTAL_MATRIX.get())); - } - - private void buildStoneSolidifierRecipes(RecipeOutput output) { - addStoneSolidifierRecipe(output, 1000, 50, new ItemStack(Items.STONE)); - - addStoneSolidifierRecipe(output, 50, 50, new ItemStack(Items.COBBLESTONE)); - - addStoneSolidifierRecipe(output, 1000, 150, new ItemStack(Items.DEEPSLATE)); - - addStoneSolidifierRecipe(output, 150, 150, new ItemStack(Items.COBBLED_DEEPSLATE)); - - addStoneSolidifierRecipe(output, 1000, 50, new ItemStack(Items.GRANITE)); - - addStoneSolidifierRecipe(output, 1000, 50, new ItemStack(Items.DIORITE)); - - addStoneSolidifierRecipe(output, 1000, 50, new ItemStack(Items.ANDESITE)); - - addStoneSolidifierRecipe(output, 1000, 250, new ItemStack(Items.BLACKSTONE)); - - addStoneSolidifierRecipe(output, 1000, 1000, new ItemStack(Items.OBSIDIAN)); - } - - private void buildFiltrationPlantRecipes(RecipeOutput output) { - addOreFiltrationRecipe(output, new ItemStack(EPItems.RAW_TIN.get()), 0.05, "tin"); - addOreFiltrationRecipe(output, new ItemStack(Items.RAW_COPPER), 0.05, "copper"); - addOreFiltrationRecipe(output, new ItemStack(Items.RAW_IRON), 0.05, "iron"); - addOreFiltrationRecipe(output, new ItemStack(Items.RAW_GOLD), 0.005, "gold"); - } - - private void buildFluidTransposerRecipes(RecipeOutput output) { - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.WHITE_CONCRETE_POWDER), new ItemStack(Items.WHITE_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.ORANGE_CONCRETE_POWDER), new ItemStack(Items.ORANGE_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.MAGENTA_CONCRETE_POWDER), new ItemStack(Items.MAGENTA_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.LIGHT_BLUE_CONCRETE_POWDER), new ItemStack(Items.LIGHT_BLUE_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.YELLOW_CONCRETE_POWDER), new ItemStack(Items.YELLOW_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.LIME_CONCRETE_POWDER), new ItemStack(Items.LIME_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.PINK_CONCRETE_POWDER), new ItemStack(Items.PINK_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.GRAY_CONCRETE_POWDER), new ItemStack(Items.GRAY_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.LIGHT_GRAY_CONCRETE_POWDER), new ItemStack(Items.LIGHT_GRAY_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.CYAN_CONCRETE_POWDER), new ItemStack(Items.CYAN_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.PURPLE_CONCRETE_POWDER), new ItemStack(Items.PURPLE_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.BLUE_CONCRETE_POWDER), new ItemStack(Items.BLUE_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.BROWN_CONCRETE_POWDER), new ItemStack(Items.BROWN_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.GREEN_CONCRETE_POWDER), new ItemStack(Items.GREEN_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.RED_CONCRETE_POWDER), new ItemStack(Items.RED_CONCRETE)); - addConcreteFluidTransposerRecipe(output, Ingredient.of(Items.BLACK_CONCRETE_POWDER), new ItemStack(Items.BLACK_CONCRETE)); - - addFluidTransposerRecipe(output, Ingredient.of(Items.SPONGE), new ItemStack(Items.WET_SPONGE), FluidTransposerBlockEntity.Mode.FILLING, - new FluidStack(Fluids.WATER, 1000)); - addFluidTransposerRecipe(output, Ingredient.of(Items.WET_SPONGE), new ItemStack(Items.SPONGE), FluidTransposerBlockEntity.Mode.EMPTYING, - new FluidStack(Fluids.WATER, 1000)); - - addFluidTransposerRecipe(output, Ingredient.of(Items.DIRT), new ItemStack(Items.MUD), FluidTransposerBlockEntity.Mode.FILLING, - new FluidStack(Fluids.WATER, 250)); - } - - private void buildChargerRecipes(RecipeOutput output) { - addChargerRecipe(output, Ingredient.of(Tags.Items.INGOTS_COPPER), - new ItemStack(EPItems.ENERGIZED_COPPER_INGOT.get()), 4194304); - } - - private void buildEnergizerRecipes(RecipeOutput output) { - addEnergizerRecipe(output, Ingredient.of(Tags.Items.INGOTS_COPPER), - new ItemStack(EPItems.ENERGIZED_COPPER_INGOT.get()), 32768); - addEnergizerRecipe(output, Ingredient.of(Tags.Items.INGOTS_GOLD), - new ItemStack(EPItems.ENERGIZED_GOLD_INGOT.get()), 131072); - addEnergizerRecipe(output, Ingredient.of(EPItems.CRYSTAL_MATRIX), - new ItemStack(EPItems.ENERGIZED_CRYSTAL_MATRIX.get()), 524288); - } - - private void buildCrystalGrowthChamberRecipes(RecipeOutput output) { - addCrystalGrowthChamberRecipe(output, Ingredient.of(Tags.Items.GEMS_AMETHYST), - new OutputItemStackWithPercentages(new ItemStack(Items.AMETHYST_SHARD), new double[] { - 1., 1., .67, .5, .25, .125 - }), 16000); - addCrystalGrowthChamberRecipe(output, Ingredient.of(Items.AMETHYST_BLOCK), - new OutputItemStackWithPercentages(new ItemStack(Items.BUDDING_AMETHYST), .25), 4, - 32000); - } - - private static void add3x3PackingCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - Ingredient unpackedInput, ItemLike packedItem, CraftingBookCategory category, - String group, String recipeIdSuffix) { - addShapedCraftingRecipe(output, hasIngredientTrigger, Map.of( - '#', unpackedInput - ), new String[] { - "###", - "###", - "###" - }, new ItemStack(packedItem), category, group, recipeIdSuffix); - } - private static void add3x3UnpackingCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - Ingredient packedInput, ItemLike unpackedItem, CraftingBookCategory category, - String group, String recipeIdSuffix) { - addShapelessCraftingRecipe(output, hasIngredientTrigger, List.of( - packedInput - ), new ItemStack(unpackedItem, 9), category, group, recipeIdSuffix); - } - private static void addMetalIngotCraftingRecipes(RecipeOutput output, TagKey nuggetInput, - TagKey blockInput, ItemLike ingotItem, String metalName) { - add3x3PackingCraftingRecipe(output, has(nuggetInput), Ingredient.of(nuggetInput), ingotItem, - CraftingBookCategory.MISC, metalName + "_ingot", "_from_nuggets"); - add3x3UnpackingCraftingRecipe(output, has(blockInput), Ingredient.of(blockInput), ingotItem, - CraftingBookCategory.MISC, metalName + "_ingot", "_from_" + metalName + "_block"); - } - private static void addMetalNuggetCraftingRecipe(RecipeOutput output, TagKey ingotInput, ItemLike nuggetItem) { - addShapelessCraftingRecipe(output, has(ingotInput), List.of( - Ingredient.of(ingotInput) - ), new ItemStack(nuggetItem, 9), CraftingBookCategory.MISC); - } - private static void addMetalPlateCraftingRecipe(RecipeOutput output, TagKey ingotInput, ItemLike plateItem) { - addShapelessCraftingRecipe(output, has(ingotInput), List.of( - Ingredient.of(CommonItemTags.TOOLS_HAMMERS), - Ingredient.of(ingotInput) - ), new ItemStack(plateItem), CraftingBookCategory.MISC); - } - private static void addMetalWireCraftingRecipe(RecipeOutput output, TagKey plateInput, ItemLike wireItem) { - addShapelessCraftingRecipe(output, has(plateInput), List.of( - Ingredient.of(CommonItemTags.TOOLS_CUTTERS), - Ingredient.of(plateInput) - ), new ItemStack(wireItem, 2), CraftingBookCategory.MISC); - } - private static void addHammerCraftingRecipe(RecipeOutput output, TagKey materialInput, ItemLike hammerItem) { - addShapedCraftingRecipe(output, has(materialInput), Map.of( - 'S', Ingredient.of(Tags.Items.RODS_WOODEN), - 'M', Ingredient.of(materialInput) - ), new String[] { - " M ", - " SM", - "S " - }, new ItemStack(hammerItem), CraftingBookCategory.MISC); - } - private static void addBasicCableCraftingRecipes(RecipeOutput output, TagKey ingotInput, TagKey wireInput, - ItemStack cableItem) { - addCableCraftingRecipe(output, ingotInput, cableItem); - addCableUsingWireCraftingRecipe(output, wireInput, cableItem); - } - private static void addCableUsingWireCraftingRecipe(RecipeOutput output, TagKey wireInput, - ItemStack cableItem) { - addShapedCraftingRecipe(output, has(wireInput), Map.of( - 'W', Ingredient.of(wireInput), - 'I', Ingredient.of(EPItems.CABLE_INSULATOR) - ), new String[] { - "IWI", - "IWI", - "IWI" - }, cableItem, CraftingBookCategory.MISC, getItemName(cableItem.getItem()), "_using_wire"); - } - private static void addCableCraftingRecipe(RecipeOutput output, TagKey ingotInput, - ItemStack cableItem) { - addShapedCraftingRecipe(output, has(ingotInput), Map.of( - 'I', Ingredient.of(ingotInput), - 'i', Ingredient.of(EPItems.CABLE_INSULATOR) - ), new String[] { - "iIi", - "iIi", - "iIi" - }, cableItem, CraftingBookCategory.MISC, getItemName(cableItem.getItem())); - } - private static void addShapedCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - Map key, String[] pattern, - ItemStack result, CraftingBookCategory category) { - addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, ""); - } - private static void addShapedCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - Map key, String[] pattern, - ItemStack result, CraftingBookCategory category, - String group) { - addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, group, ""); - } - private static void addShapedCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - Map key, String[] pattern, - ItemStack result, CraftingBookCategory category, - String group, String recipeIdSuffix) { - addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, group, recipeIdSuffix, ""); - } - private static void addShapedCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - Map key, String[] pattern, - ItemStack result, CraftingBookCategory category, - String group, String recipeIdSuffix, String recipeIdPrefix) { - ResourceLocation recipeId = EPAPI.id("crafting/" + - recipeIdPrefix + getItemName(result.getItem()) + recipeIdSuffix); - - Advancement.Builder advancementBuilder = output.advancement() - .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(recipeId)) - .addCriterion("has_the_ingredient", hasIngredientTrigger) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .requirements(AdvancementRequirements.Strategy.OR); - ShapedRecipe recipe = new ShapedRecipe(Objects.requireNonNullElse(group, ""), - category, ShapedRecipePattern.of(key, pattern), result); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); - } - private static void addShapelessCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - List inputs, ItemStack result, CraftingBookCategory category) { - addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, ""); - } - private static void addShapelessCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - List inputs, ItemStack result, CraftingBookCategory category, - String group) { - addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, group, ""); - } - private static void addShapelessCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - List inputs, ItemStack result, CraftingBookCategory category, - String group, String recipeIdSuffix) { - addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, group, recipeIdSuffix, ""); - } - private static void addShapelessCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, - List inputs, ItemStack result, CraftingBookCategory category, - String group, String recipeIdSuffix, String recipeIdPrefix) { - ResourceLocation recipeId = EPAPI.id("crafting/" + - recipeIdPrefix + getItemName(result.getItem()) + recipeIdSuffix); - - Advancement.Builder advancementBuilder = output.advancement() - .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(recipeId)) - .addCriterion("has_the_ingredient", hasIngredientTrigger) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .requirements(AdvancementRequirements.Strategy.OR); - ShapelessRecipe recipe = new ShapelessRecipe(Objects.requireNonNullElse(group, ""), category, result, - NonNullList.of(Ingredient.EMPTY, inputs.toArray(Ingredient[]::new))); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); - } - private static void addCustomCraftingRecipe(RecipeOutput output, Function customRecipeFactory, - CraftingBookCategory category, String recipeIdString) { - ResourceLocation recipeId = EPAPI.id("crafting/" + - recipeIdString); - - CustomRecipe recipe = customRecipeFactory.apply(category); - output.accept(recipeId, recipe, null); - } - - private static void addBlastingAndSmeltingRecipes(RecipeOutput output, ItemLike ingredient, ItemStack result, - CookingBookCategory 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(RecipeOutput output, TagKey ingredient, ItemStack result, - CookingBookCategory 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(RecipeOutput output, ItemLike ingredient, ItemStack result, CookingBookCategory category, - int time, float xp, String group) { - ResourceLocation recipeId = EPAPI.id("smelting/" + - getItemName(result.getItem())); - - addSmeltingRecipe(output, ingredient, result, category, time, xp, group, recipeId); - } - private static void addSmeltingRecipe(RecipeOutput output, ItemLike ingredient, ItemStack result, CookingBookCategory category, - int time, float xp, String group, String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("smelting/" + - getItemName(result.getItem()) + "_from_smelting_" + recipeIngredientName); - - addSmeltingRecipe(output, ingredient, result, category, time, xp, group, recipeId); - } - private static void addSmeltingRecipe(RecipeOutput output, ItemLike ingredient, ItemStack result, CookingBookCategory category, - int time, float xp, String group, ResourceLocation recipeId) { - Advancement.Builder advancementBuilder = output.advancement() - .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(recipeId)) - .addCriterion("has_the_ingredient", has(ingredient)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .requirements(AdvancementRequirements.Strategy.OR); - AbstractCookingRecipe recipe = new SmeltingRecipe(Objects.requireNonNullElse(group, ""), - category, Ingredient.of(ingredient), result, xp, time); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); - } - private static void addSmeltingRecipe(RecipeOutput output, TagKey ingredient, ItemStack result, CookingBookCategory category, - int time, float xp, String group, String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("smelting/" + - getItemName(result.getItem()) + "_from_smelting_" + recipeIngredientName); - - Advancement.Builder advancementBuilder = output.advancement() - .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(recipeId)) - .addCriterion("has_the_ingredient", has(ingredient)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .requirements(AdvancementRequirements.Strategy.OR); - AbstractCookingRecipe recipe = new SmeltingRecipe(Objects.requireNonNullElse(group, ""), - category, Ingredient.of(ingredient), result, xp, time); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); - } - - private static void addBlastingRecipe(RecipeOutput output, ItemLike ingredient, ItemStack result, CookingBookCategory category, - int time, float xp, String group, String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("blasting/" + - getItemName(result.getItem()) + "_from_blasting_" + recipeIngredientName); - - Advancement.Builder advancementBuilder = output.advancement() - .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(recipeId)) - .addCriterion("has_the_ingredient", has(ingredient)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .requirements(AdvancementRequirements.Strategy.OR); - AbstractCookingRecipe recipe = new BlastingRecipe(Objects.requireNonNullElse(group, ""), - category, Ingredient.of(ingredient), result, xp, time); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); - } - private static void addBlastingRecipe(RecipeOutput output, TagKey ingredient, ItemStack result, CookingBookCategory category, - int time, float xp, String group, String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("blasting/" + - getItemName(result.getItem()) + "_from_blasting_" + recipeIngredientName); - - Advancement.Builder advancementBuilder = output.advancement() - .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(recipeId)) - .addCriterion("has_the_ingredient", has(ingredient)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .requirements(AdvancementRequirements.Strategy.OR); - AbstractCookingRecipe recipe = new BlastingRecipe(Objects.requireNonNullElse(group, ""), - category, Ingredient.of(ingredient), result, xp, time); - output.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); - } - - private static void addNetheriteSmithingUpgradeRecipe(RecipeOutput recipeOutput, Ingredient base, ItemStack output) { - ResourceLocation recipeId = EPAPI.id("smithing/" + - getItemName(output.getItem())); - - Advancement.Builder advancementBuilder = recipeOutput.advancement() - .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(recipeId)) - .addCriterion("has_the_ingredient", has(Tags.Items.INGOTS_NETHERITE)) - .rewards(AdvancementRewards.Builder.recipe(recipeId)) - .requirements(AdvancementRequirements.Strategy.OR); - SmithingTransformRecipe recipe = new SmithingTransformRecipe(Ingredient.of(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE), - base, Ingredient.of(Tags.Items.INGOTS_NETHERITE), output); - recipeOutput.accept(recipeId, recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); - } - - private static void addAlloyFurnaceRecipe(RecipeOutput recipeOutput, IngredientWithCount[] inputs, ItemStack output, - int ticks) { - addAlloyFurnaceRecipe(recipeOutput, inputs, output, OutputItemStackWithPercentages.EMPTY, ticks); - } - private static void addAlloyFurnaceRecipe(RecipeOutput recipeOutput, IngredientWithCount[] inputs, ItemStack output, - OutputItemStackWithPercentages secondaryOutput, int ticks) { - ResourceLocation recipeId = EPAPI.id("alloy_furnace/" + - getItemName(output.getItem())); - - AlloyFurnaceRecipe recipe = new AlloyFurnaceRecipe(output, secondaryOutput, inputs, ticks); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addPressMoldMakerRecipe(RecipeOutput recipeOutput, int clayCount, ItemStack output) { - ResourceLocation recipeId = EPAPI.id("press_mold_maker/" + - getItemName(output.getItem())); - - PressMoldMakerRecipe recipe = new PressMoldMakerRecipe(output, clayCount); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addPlateCompressorRecipes(RecipeOutput recipeOutput, Ingredient ingotInput, - Ingredient blockInput, ItemStack output, String metalName) { - addPlateCompressorIngotRecipe(recipeOutput, ingotInput, output, metalName); - addCompressorRecipe(recipeOutput, blockInput, output.copyWithCount(9), metalName + "_block"); - } - private static void addPlateCompressorIngotRecipe(RecipeOutput recipeOutput, Ingredient ingotInput, - ItemStack output, String metalName) { - addCompressorRecipe(recipeOutput, ingotInput, output, metalName + "_ingot"); - } - private static void addCompressorRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, String recipeIngredientName) { - addCompressorRecipe(recipeOutput, input, output, 1, recipeIngredientName); - } - private static void addCompressorRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, int inputCount, - String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("compressing/" + - getItemName(output.getItem()) + "_from_compressing_" + recipeIngredientName); - - CompressorRecipe recipe = new CompressorRecipe(output, input, inputCount); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addCrusherRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, - String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("crusher/" + - getItemName(output.getItem()) + "_from_crushing_" + recipeIngredientName); - - CrusherRecipe recipe = new CrusherRecipe(output, input); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addBasicMetalPulverizerRecipes(RecipeOutput recipeOutput, Ingredient oreInput, - Ingredient rawMetalInput, Ingredient rawMetalBlockInput, - Ingredient ingotInput, ItemStack output, String metalName) { - addPulverizerRecipe(recipeOutput, oreInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { - 1., 1., .25 - }, new double[] { - 1., 1, .5, .25 - }), metalName + "_ores"); - - addRawMetalAndIngotPulverizerRecipes(recipeOutput, rawMetalInput, rawMetalBlockInput, ingotInput, output, metalName); - } - private static void addRawMetalAndIngotPulverizerRecipes(RecipeOutput recipeOutput, - Ingredient rawMetalInput, Ingredient rawMetalBlockInput, - Ingredient ingotInput, ItemStack output, String metalName) { - addPulverizerRecipe(recipeOutput, rawMetalInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { - 1., .25 - }, new double[] { - 1., .5 - }), "raw_" + metalName); - - addPulverizerRecipe(recipeOutput, 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(recipeOutput, ingotInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, - 1., 1.), metalName + "_ingots"); - } - private static void addPulverizerRecipe(RecipeOutput recipeOutput, Ingredient input, - PulverizerRecipe.OutputItemStackWithPercentages output, - String recipeIngredientName) { - addPulverizerRecipe(recipeOutput, input, output, - new PulverizerRecipe.OutputItemStackWithPercentages(ItemStack.EMPTY, new double[0], new double[0]), recipeIngredientName); - } - private static void addPulverizerRecipe(RecipeOutput recipeOutput, Ingredient input, - PulverizerRecipe.OutputItemStackWithPercentages output, - PulverizerRecipe.OutputItemStackWithPercentages secondaryOutput, - String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("pulverizer/" + - getItemName(output.output().getItem()) + "_from_pulverizer_" + recipeIngredientName); - - PulverizerRecipe recipe = new PulverizerRecipe(output, secondaryOutput, input); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addBasicWoodSawmillRecipe(RecipeOutput recipeOutput, 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(recipeOutput, logsInput, planksItem.copyWithCount(6), 1, getItemName(planksItem.getItem()), - woodName + "_logs"); - - addBasicWoodWithoutLogsSawmillRecipe(recipeOutput, planksItem, fenceInput, fenceGateInput, doorInput, trapdoorInput, - pressurePlateInput, signInput, boatInput, chestBoatInput, isRaft, woodName); - } - private static void addBasicWoodWithoutLogsSawmillRecipe(RecipeOutput recipeOutput, ItemStack planksItem, - Ingredient fenceInput, Ingredient fenceGateInput, - Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, - Ingredient signInput, Ingredient boatInput, Ingredient chestBoatInput, - boolean isRaft, String woodName) { - addBasicWoodWithoutLogsAndBoatsSawmillRecipe(recipeOutput, planksItem, fenceInput, fenceGateInput, doorInput, - trapdoorInput, pressurePlateInput, signInput, woodName); - - addSawmillRecipe(recipeOutput, boatInput, planksItem.copyWithCount(4), 3, getItemName(planksItem.getItem()), - woodName + (isRaft?"_raft":"_boat")); - addSawmillRecipe(recipeOutput, chestBoatInput, planksItem.copyWithCount(5), 7, getItemName(planksItem.getItem()), - woodName + (isRaft?"_chest_raft":"_chest_boat")); - } - private static void addBasicWoodWithoutLogsAndBoatsSawmillRecipe(RecipeOutput recipeOutput, ItemStack planksItem, - Ingredient fenceInput, Ingredient fenceGateInput, - Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, - Ingredient signInput, String woodName) { - addSawmillRecipe(recipeOutput, fenceInput, planksItem, 2, getItemName(planksItem.getItem()), - woodName + "_fence"); - addSawmillRecipe(recipeOutput, fenceGateInput, planksItem.copyWithCount(2), 3, getItemName(planksItem.getItem()), - woodName + "_fence_gate"); - addSawmillRecipe(recipeOutput, doorInput, planksItem, 3, getItemName(planksItem.getItem()), - woodName + "_door"); - addSawmillRecipe(recipeOutput, trapdoorInput, planksItem.copyWithCount(2), 3, getItemName(planksItem.getItem()), - woodName + "_trapdoor"); - addSawmillRecipe(recipeOutput, pressurePlateInput, planksItem, 2, getItemName(planksItem.getItem()), - woodName + "_pressure_plate"); - addSawmillRecipe(recipeOutput, signInput, planksItem.copyWithCount(2), 1, getItemName(planksItem.getItem()), - woodName + "_sign"); - } - private static void addSawmillRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, - int sawdustAmount, String outputName, String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("sawmill/" + - outputName + "_from_sawing_" + recipeIngredientName); - - SawmillRecipe recipe = new SawmillRecipe(output, input, sawdustAmount); - recipeOutput.accept(recipeId, recipe, null); - } - private static void addSawmillRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, - ItemStack secondaryOutput, String outputName, String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("sawmill/" + - outputName + "_from_sawing_" + recipeIngredientName); - - SawmillRecipe recipe = new SawmillRecipe(output, secondaryOutput, input); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addBasicFlowerGrowingRecipe(RecipeOutput recipeOutput, ItemLike flowerItem, - String outputName) { - addPlantGrowthChamberRecipe(recipeOutput, Ingredient.of(flowerItem), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(flowerItem), new double[] { - 1., 1., .33 - }) - }, 16000, outputName, getItemName(flowerItem)); - } - private static void addBasicMushroomsGrowingRecipe(RecipeOutput recipeOutput, ItemLike mushroomItem, - String outputName) { - addPlantGrowthChamberRecipe(recipeOutput, Ingredient.of(mushroomItem), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(mushroomItem), new double[] { - 1., 1., .5, .25 - }) - }, 16000, outputName, getItemName(mushroomItem)); - } - private static void addBasicAncientFlowerGrowingRecipe(RecipeOutput recipeOutput, ItemLike seedItem, - ItemLike flowerItem, String outputName) { - addPlantGrowthChamberRecipe(recipeOutput, Ingredient.of(seedItem), new OutputItemStackWithPercentages[] { - new OutputItemStackWithPercentages(new ItemStack(seedItem), new double[] { - 1., .33, .15 - }), - new OutputItemStackWithPercentages(new ItemStack(flowerItem), new double[] { - 1., .15 - }) - }, 16000, outputName, getItemName(seedItem)); - } - private static void addPlantGrowthChamberRecipe(RecipeOutput recipeOutput, Ingredient input, - OutputItemStackWithPercentages[] outputs, int ticks, - String outputName, String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("growing/" + - outputName + "_from_growing_" + recipeIngredientName); - - PlantGrowthChamberRecipe recipe = new PlantGrowthChamberRecipe(outputs, input, ticks); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addPlantGrowthChamberFertilizerRecipe(RecipeOutput recipeOutput, Ingredient input, - double speedMultiplier, double energyConsumptionMultiplier, - String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("growing/fertilizer/" + - recipeIngredientName); - - PlantGrowthChamberFertilizerRecipe recipe = new PlantGrowthChamberFertilizerRecipe(input, speedMultiplier, - energyConsumptionMultiplier); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addGearMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output) { - addMetalPressRecipe(recipeOutput, input, output, new ItemStack(EPItems.GEAR_PRESS_MOLD.get()), 2); - } - private static void addRodMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output) { - addMetalPressRecipe(recipeOutput, input, output.copyWithCount(2), new ItemStack(EPItems.ROD_PRESS_MOLD.get())); - } - private static void addWireMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output) { - addMetalPressRecipe(recipeOutput, input, output.copyWithCount(3), new ItemStack(EPItems.WIRE_PRESS_MOLD.get())); - } - private static void addMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, - ItemStack pressMold) { - addMetalPressRecipe(recipeOutput, input, output, pressMold, 1); - } - private static void addMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, - ItemStack pressMold, int inputCount) { - ResourceLocation recipeId = EPAPI.id("metal_press/" + - getItemName(output.getItem())); - - MetalPressRecipe recipe = new MetalPressRecipe(output, pressMold, input, inputCount); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addHeatGeneratorRecipe(RecipeOutput recipeOutput, Fluid input, int energyProduction, - String recipeIngredientName) { - addHeatGeneratorRecipe(recipeOutput, new Fluid[] { - input - }, energyProduction, recipeIngredientName); - } - private static void addHeatGeneratorRecipe(RecipeOutput recipeOutput, Fluid[] input, int energyProduction, - String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("heat_generator/" + - "energy_production_from_" + recipeIngredientName); - - HeatGeneratorRecipe recipe = new HeatGeneratorRecipe(input, energyProduction); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addThermalGeneratorRecipe(RecipeOutput recipeOutput, Fluid input, int energyProduction, - String recipeIngredientName) { - addThermalGeneratorRecipe(recipeOutput, new Fluid[] { - input - }, energyProduction, recipeIngredientName); - } - private static void addThermalGeneratorRecipe(RecipeOutput recipeOutput, Fluid[] input, int energyProduction, - String recipeIngredientName) { - ResourceLocation recipeId = EPAPI.id("thermal_generator/" + - "energy_production_from_" + recipeIngredientName); - - ThermalGeneratorRecipe recipe = new ThermalGeneratorRecipe(input, energyProduction); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addStoneSolidifierRecipe(RecipeOutput recipeOutput, int waterAmount, int lavaAmount, ItemStack output) { - ResourceLocation recipeId = EPAPI.id("stone_solidifier/" + - getItemName(output.getItem())); - - StoneSolidifierRecipe recipe = new StoneSolidifierRecipe(output, waterAmount, lavaAmount); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addAssemblingMachineRecipe(RecipeOutput recipeOutput, IngredientWithCount[] inputs, ItemStack output) { - ResourceLocation recipeId = EPAPI.id("assembling/" + - getItemName(output.getItem())); - - AssemblingMachineRecipe recipe = new AssemblingMachineRecipe(output, inputs); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addOreFiltrationRecipe(RecipeOutput recipeOutput, ItemStack oreOutput, double oreOutputPercentage, - String oreName) { - addFiltrationPlantRecipe(recipeOutput, new OutputItemStackWithPercentages(new ItemStack(EPItems.STONE_PEBBLE.get()), .33), - new OutputItemStackWithPercentages(oreOutput, oreOutputPercentage), BuiltInRegistries.ITEM.getKey(oreOutput.getItem()), - oreName + "_ore_filtration"); - } - private static void addFiltrationPlantRecipe(RecipeOutput recipeOutput, OutputItemStackWithPercentages output, - ResourceLocation icon, String recipeName) { - addFiltrationPlantRecipe(recipeOutput, output, OutputItemStackWithPercentages.EMPTY, icon, recipeName); - } - private static void addFiltrationPlantRecipe(RecipeOutput recipeOutput, OutputItemStackWithPercentages output, - OutputItemStackWithPercentages secondaryOutput, ResourceLocation icon, - String recipeName) { - ResourceLocation recipeId = EPAPI.id("filtration_plant/" + - recipeName); - - FiltrationPlantRecipe recipe = new FiltrationPlantRecipe(output, secondaryOutput, icon); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addConcreteFluidTransposerRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output) { - addFluidTransposerRecipe(recipeOutput, input, output, FluidTransposerBlockEntity.Mode.FILLING, - new FluidStack(Fluids.WATER, 1000)); - } - private static void addFluidTransposerRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, - FluidTransposerBlockEntity.Mode mode, FluidStack fluid) { - ResourceLocation recipeId = EPAPI.id("fluid_transposer/" + - getItemName(output.getItem())); - - FluidTransposerRecipe recipe = new FluidTransposerRecipe(mode, output, input, fluid); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addChargerRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, int energyConsumption) { - ResourceLocation recipeId = EPAPI.id("charger/" + - getItemName(output.getItem())); - - ChargerRecipe recipe = new ChargerRecipe(output, input, energyConsumption); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addEnergizerRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, int energyConsumption) { - ResourceLocation recipeId = EPAPI.id("energizer/" + - getItemName(output.getItem())); - - EnergizerRecipe recipe = new EnergizerRecipe(output, input, energyConsumption); - recipeOutput.accept(recipeId, recipe, null); - } - - private static void addCrystalGrowthChamberRecipe(RecipeOutput recipeOutput, Ingredient input, OutputItemStackWithPercentages output, - int ticks) { - addCrystalGrowthChamberRecipe(recipeOutput, input, output, 1, ticks); - } - private static void addCrystalGrowthChamberRecipe(RecipeOutput recipeOutput, Ingredient input, OutputItemStackWithPercentages output, - int inputCount, int ticks) { - ResourceLocation recipeId = EPAPI.id("crystal_growing/" + - getItemName(output.output().getItem())); - - CrystalGrowthChamberRecipe recipe = new CrystalGrowthChamberRecipe(output, input, inputCount, ticks); - recipeOutput.accept(recipeId, recipe, null); + @Override + public String getName() { + return "Recipes"; } } diff --git a/src/main/java/me/jddev0/ep/datagen/advancement/ModAdvancedAdvancements.java b/src/main/java/me/jddev0/ep/datagen/advancement/ModAdvancedAdvancements.java index 9c0b9b926..57dec4391 100644 --- a/src/main/java/me/jddev0/ep/datagen/advancement/ModAdvancedAdvancements.java +++ b/src/main/java/me/jddev0/ep/datagen/advancement/ModAdvancedAdvancements.java @@ -15,6 +15,7 @@ import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponentPatch; import net.minecraft.core.component.DataComponentPredicate; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; @@ -42,17 +43,20 @@ public void generate(HolderLookup.Provider lookupProvider, Consumer advancement return addAdvancement(advancementOutput, existingFileHelper, parent, new ItemStack(icon), advancementId, type, InventoryChangeTrigger.TriggerInstance.hasItems(trigger)); } - private AdvancementHolder addAdvancement(Consumer advancementOutput, ExistingFileHelper existingFileHelper, + private AdvancementHolder addAdvancement(HolderLookup.Provider lookupProvider, Consumer advancementOutput, ExistingFileHelper existingFileHelper, AdvancementHolder parent, ItemLike icon, String advancementId, AdvancementType type, TagKey trigger) { return addAdvancement(advancementOutput, existingFileHelper, parent, new ItemStack(icon), advancementId, type, InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of( + lookupProvider.lookupOrThrow(Registries.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 d186beafc..16e660a5e 100644 --- a/src/main/java/me/jddev0/ep/datagen/advancement/ModBasicsAdvancements.java +++ b/src/main/java/me/jddev0/ep/datagen/advancement/ModBasicsAdvancements.java @@ -14,6 +14,7 @@ import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.core.HolderLookup; import net.minecraft.core.component.DataComponentPatch; +import net.minecraft.core.registries.Registries; import net.minecraft.network.chat.Component; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; @@ -43,6 +44,7 @@ public void generate(HolderLookup.Provider lookupProvider, Consumer advancement return addAdvancement(advancementOutput, existingFileHelper, parent, new ItemStack(icon), advancementId, type, InventoryChangeTrigger.TriggerInstance.hasItems(trigger)); } - private AdvancementHolder addAdvancement(Consumer advancementOutput, ExistingFileHelper existingFileHelper, + private AdvancementHolder addAdvancement(HolderLookup.Provider lookupProvider, Consumer advancementOutput, ExistingFileHelper existingFileHelper, AdvancementHolder parent, ItemLike icon, String advancementId, AdvancementType type, TagKey trigger) { return addAdvancement(advancementOutput, existingFileHelper, parent, new ItemStack(icon), advancementId, type, InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of( + lookupProvider.lookupOrThrow(Registries.ITEM), trigger ))); } 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..d51713dbe --- /dev/null +++ b/src/main/java/me/jddev0/ep/datagen/recipe/ModRecipeGenerator.java @@ -0,0 +1,3047 @@ +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.item.EPItems; +import me.jddev0.ep.recipe.*; +import me.jddev0.ep.registry.tags.CommonItemTags; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementRequirements; +import net.minecraft.advancements.AdvancementRewards; +import net.minecraft.advancements.Criterion; +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.advancements.critereon.RecipeUnlockedTrigger; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.NonNullList; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.recipes.RecipeOutput; +import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.ItemTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; +import net.neoforged.neoforge.common.Tags; +import net.neoforged.neoforge.common.conditions.IConditionBuilder; +import net.neoforged.neoforge.fluids.FluidStack; + +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 RecipeProvider implements IConditionBuilder { + public ModRecipeGenerator(HolderLookup.Provider registries, RecipeOutput recipeOutput) { + super(registries, recipeOutput); + } + + @Override + protected void buildRecipes() { + 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(output, has(EPBlocks.SAWDUST_BLOCK), + ingredientOf(EPBlocks.SAWDUST_BLOCK), EPItems.SAWDUST, + CraftingBookCategory.MISC, "", "_from_sawdust_block"); + add3x3PackingCraftingRecipe(output, has(CommonItemTags.DUSTS_WOOD), + ingredientOf(CommonItemTags.DUSTS_WOOD), EPBlocks.SAWDUST_BLOCK_ITEM, + CraftingBookCategory.MISC, "", ""); + + add3x3UnpackingCraftingRecipe(output, has(CommonItemTags.STORAGE_BLOCKS_SILICON), + ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), EPItems.SILICON, + CraftingBookCategory.MISC, "", "_from_silicon_block"); + add3x3PackingCraftingRecipe(output, has(CommonItemTags.SILICON), + ingredientOf(CommonItemTags.SILICON), EPBlocks.SILICON_BLOCK_ITEM, + CraftingBookCategory.MISC, "", ""); + + addMetalNuggetCraftingRecipe(output, CommonItemTags.INGOTS_TIN, EPItems.TIN_NUGGET); + addMetalIngotCraftingRecipes(output, CommonItemTags.NUGGETS_TIN, CommonItemTags.STORAGE_BLOCKS_TIN, + EPItems.TIN_INGOT, "tin"); + + add3x3PackingCraftingRecipe(output, has(CommonItemTags.INGOTS_TIN), + ingredientOf(CommonItemTags.INGOTS_TIN), EPBlocks.TIN_BLOCK_ITEM, + CraftingBookCategory.MISC, "", ""); + + add3x3UnpackingCraftingRecipe(output, has(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), + ingredientOf(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), EPItems.RAW_TIN, + CraftingBookCategory.MISC, "", ""); + add3x3PackingCraftingRecipe(output, has(CommonItemTags.RAW_MATERIALS_TIN), + ingredientOf(CommonItemTags.RAW_MATERIALS_TIN), EPBlocks.RAW_TIN_BLOCK_ITEM, + CraftingBookCategory.MISC, "", ""); + + addMetalPlateCraftingRecipe(output, CommonItemTags.INGOTS_TIN, EPItems.TIN_PLATE); + addMetalPlateCraftingRecipe(output, Tags.Items.INGOTS_COPPER, EPItems.COPPER_PLATE); + addMetalPlateCraftingRecipe(output, Tags.Items.INGOTS_IRON, EPItems.IRON_PLATE); + addMetalPlateCraftingRecipe(output, Tags.Items.INGOTS_GOLD, EPItems.GOLD_PLATE); + + addMetalWireCraftingRecipe(output, CommonItemTags.PLATES_TIN, EPItems.TIN_WIRE); + addMetalWireCraftingRecipe(output, CommonItemTags.PLATES_COPPER, EPItems.COPPER_WIRE); + addMetalWireCraftingRecipe(output, CommonItemTags.PLATES_GOLD, EPItems.GOLD_WIRE); + + addShapedCraftingRecipe(output, has(CommonItemTags.SILICON), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'Q', ingredientOf(Tags.Items.GEMS_QUARTZ), + 'T', ingredientOf(CommonItemTags.INGOTS_TIN), + 'C', ingredientOf(Tags.Items.INGOTS_COPPER) + ), new String[] { + " C ", + "SQS", + " T " + }, new ItemStack(EPItems.BASIC_SOLAR_CELL.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(CommonItemTags.WIRES_COPPER), Map.of( + 'C', ingredientOf(CommonItemTags.WIRES_COPPER), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'S', ingredientOf(CommonItemTags.SILICON) + ), new String[] { + "RCR", + "CIC", + "SCS" + }, new ItemStack(EPItems.BASIC_CIRCUIT.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_CIRCUIT), Map.of( + 'G', ingredientOf(CommonItemTags.WIRES_GOLD), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPItems.BASIC_CIRCUIT) + ), new String[] { + "GGG", + "CBC", + "CBC" + }, new ItemStack(EPItems.BASIC_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ADVANCED_CIRCUIT), Map.of( + 'G', ingredientOf(CommonItemTags.WIRES_ENERGIZED_GOLD), + 'C', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'A', ingredientOf(EPItems.ADVANCED_CIRCUIT), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "GGG", + "CBC", + "CAC" + }, new ItemStack(EPItems.ADVANCED_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), Map.of( + 'g', ingredientOf(CommonItemTags.WIRES_ENERGIZED_GOLD), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'P', ingredientOf(EPItems.PROCESSING_UNIT), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE) + ), new String[] { + "ggg", + "GAG", + "GPG" + }, new ItemStack(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(Tags.Items.INGOTS_IRON), Map.of( + 'i', ingredientOf(Tags.Items.NUGGETS_IRON), + 'I', ingredientOf(Tags.Items.INGOTS_IRON) + ), new String[] { + " i ", + "iIi", + " i " + }, new ItemStack(EPItems.SAW_BLADE.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(CommonItemTags.SILICON), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'I', ingredientOf(Tags.Items.INGOTS_IRON), + 'C', ingredientOf(Tags.Items.INGOTS_COPPER) + ), new String[] { + "CIC", + "ISI", + "CIC" + }, new ItemStack(EPBlocks.BASIC_MACHINE_FRAME_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(CommonItemTags.GEARS_IRON), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 's', ingredientOf(CommonItemTags.INGOTS_STEEL), + 'I', ingredientOf(CommonItemTags.GEARS_IRON), + 'R', ingredientOf(CommonItemTags.RODS_IRON), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "IsR", + "SBS", + "RsI" + }, new ItemStack(EPBlocks.HARDENED_MACHINE_FRAME_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(CommonItemTags.INGOTS_ENERGIZED_COPPER), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'A', ingredientOf(CommonItemTags.INGOTS_ADVANCED_ALLOY), + 'E', ingredientOf(CommonItemTags.INGOTS_ENERGIZED_COPPER), + 'H', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "ESE", + "AHA", + "ESE" + }, new ItemStack(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "CSC", + "SAS", + "CSC" + }, new ItemStack(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM.get()), CraftingBookCategory.MISC); + } + private void buildFertilizerCraftingRecipes() { + addShapedCraftingRecipe(output, has(Items.BONE_MEAL), Map.of( + 'B', ingredientOf(Items.BONE_MEAL), + 'D', ingredientOf(Items.DANDELION), + 'b', ingredientOf(Items.BLUE_ORCHID), + 'L', ingredientOf(Tags.Items.GEMS_LAPIS), + 'A', ingredientOf(Items.ALLIUM), + 'P', ingredientOf(Items.POPPY) + ), new String[] { + "DBb", + "BLB", + "ABP" + }, new ItemStack(EPItems.BASIC_FERTILIZER.get(), 4), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_FERTILIZER), Map.of( + 'B', ingredientOf(EPItems.BASIC_FERTILIZER), + 'S', ingredientOf(Items.SUGAR_CANE), + 'K', ingredientOf(Items.KELP), + 's', ingredientOf(Items.SUGAR), + 'b', ingredientOf(Items.BAMBOO), + 'W', ingredientOf(Items.WHEAT_SEEDS) + ), new String[] { + "SBK", + "BsB", + "bBW" + }, new ItemStack(EPItems.GOOD_FERTILIZER.get(), 4), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.GOOD_FERTILIZER), Map.of( + 'G', ingredientOf(EPItems.GOOD_FERTILIZER), + 'M', ingredientOf(Items.RED_MUSHROOM), + 'S', ingredientOf(Items.SWEET_BERRIES), + 'r', ingredientOf(Tags.Items.DYES_RED), + 'T', ingredientOf(Items.RED_TULIP), + 'R', ingredientOf(Items.ROSE_BUSH) + ), new String[] { + "MGS", + "GrG", + "TGR" + }, new ItemStack(EPItems.ADVANCED_FERTILIZER.get(), 4), CraftingBookCategory.MISC); + } + private void buildUpgradeModuleCraftingRecipes() { + addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "CSC", + "RBR", + "CSC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.SPEED_UPGRADE_MODULE_1), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE), + 's', ingredientOf(EPItems.SPEED_UPGRADE_MODULE_1) + ), new String[] { + "CSC", + "RBR", + "CsC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.SPEED_UPGRADE_MODULE_2), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 's', ingredientOf(EPItems.SPEED_UPGRADE_MODULE_2) + ), new String[] { + "CSC", + "RAR", + "CsC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.SPEED_UPGRADE_MODULE_3), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 's', ingredientOf(EPItems.SPEED_UPGRADE_MODULE_3) + ), new String[] { + "CSC", + "RAR", + "CsC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.SPEED_UPGRADE_MODULE_4), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 's', ingredientOf(EPItems.SPEED_UPGRADE_MODULE_4) + ), new String[] { + "CSC", + "rRr", + "CsC" + }, new ItemStack(EPItems.SPEED_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'G', ingredientOf(Tags.Items.INGOTS_GOLD), + 'R', ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "CGC", + "RBR", + "CGC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'G', ingredientOf(Tags.Items.INGOTS_GOLD), + 'R', ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE), + 'E', ingredientOf(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_1) + ), new String[] { + "CGC", + "RBR", + "CEC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'G', ingredientOf(Tags.Items.INGOTS_GOLD), + 'R', ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'E', ingredientOf(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_2) + ), new String[] { + "CGC", + "RAR", + "CEC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'G', ingredientOf(Tags.Items.INGOTS_GOLD), + 'R', ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'E', ingredientOf(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_3) + ), new String[] { + "CGC", + "RAR", + "CEC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'G', ingredientOf(Tags.Items.INGOTS_GOLD), + 'r', ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'E', ingredientOf(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_4) + ), new String[] { + "CGC", + "rRr", + "CEC" + }, new ItemStack(EPItems.ENERGY_EFFICIENCY_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'T', ingredientOf(CommonItemTags.PLATES_TIN), + 'c', ingredientOf(ItemTags.COALS), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "CTC", + "cBc", + "CTC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'T', ingredientOf(CommonItemTags.PLATES_TIN), + 'c', ingredientOf(ItemTags.COALS), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE), + 'E', ingredientOf(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_1) + ), new String[] { + "CTC", + "cBc", + "CEC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'T', ingredientOf(CommonItemTags.PLATES_TIN), + 'c', ingredientOf(ItemTags.COALS), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'E', ingredientOf(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_2) + ), new String[] { + "CTC", + "cAc", + "CEC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'T', ingredientOf(CommonItemTags.PLATES_TIN), + 'c', ingredientOf(ItemTags.COALS), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'E', ingredientOf(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_3) + ), new String[] { + "CTC", + "cAc", + "CEC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'T', ingredientOf(CommonItemTags.PLATES_TIN), + 'c', ingredientOf(ItemTags.COALS), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'E', ingredientOf(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_4) + ), new String[] { + "CTC", + "cRc", + "CEC" + }, new ItemStack(EPItems.ENERGY_CAPACITY_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE) + ), new String[] { + "GCG", + "rRr", + "GCG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_1), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', ingredientOf(EPItems.DURATION_UPGRADE_MODULE_1) + ), new String[] { + "GCG", + "rRr", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_2), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', ingredientOf(EPItems.DURATION_UPGRADE_MODULE_2) + ), new String[] { + "GCG", + "rRr", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_3), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', ingredientOf(EPItems.DURATION_UPGRADE_MODULE_3) + ), new String[] { + "GCG", + "rRr", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_4), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', ingredientOf(EPItems.DURATION_UPGRADE_MODULE_4) + ), new String[] { + "GCG", + "rRr", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.DURATION_UPGRADE_MODULE_5), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'D', ingredientOf(EPItems.DURATION_UPGRADE_MODULE_5) + ), new String[] { + "GDG", + "CRC", + "GDG" + }, new ItemStack(EPItems.DURATION_UPGRADE_MODULE_6.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ADVANCED_UPGRADE_MODULE), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE) + ), new String[] { + "GRG", + "RAR", + "GRG" + }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.RANGE_UPGRADE_MODULE_1), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'R', ingredientOf(EPItems.RANGE_UPGRADE_MODULE_1) + ), new String[] { + "GrG", + "rAr", + "GRG" + }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.RANGE_UPGRADE_MODULE_2), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'R', ingredientOf(EPItems.RANGE_UPGRADE_MODULE_2) + ), new String[] { + "GrG", + "rAr", + "GRG" + }, new ItemStack(EPItems.RANGE_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE), + 'F', ingredientOf(EPBlocks.IRON_FLUID_PIPE_ITEM) + ), new String[] { + "IFI", + "RBR", + "IFI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1), Map.of( + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE), + 'F', ingredientOf(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'E', ingredientOf(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_1) + ), new String[] { + "IFI", + "RBR", + "IEI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2), Map.of( + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'F', ingredientOf(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'E', ingredientOf(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_2) + ), new String[] { + "IFI", + "RAR", + "IEI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3), Map.of( + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'F', ingredientOf(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'E', ingredientOf(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_3) + ), new String[] { + "IFI", + "RAR", + "IEI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4), Map.of( + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'r', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'F', ingredientOf(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'E', ingredientOf(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_4) + ), new String[] { + "IFI", + "rRr", + "IEI" + }, new ItemStack(EPItems.EXTRACTION_DEPTH_UPGRADE_MODULE_5.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE), + 'b', ingredientOf(Items.BLAST_FURNACE) + ), new String[] { + "CSC", + "RBR", + "CbC" + }, new ItemStack(EPItems.BLAST_FURNACE_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 's', ingredientOf(CommonItemTags.SILICON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE), + 'S', ingredientOf(Items.SMOKER) + ), new String[] { + "CsC", + "RBR", + "CSC" + }, new ItemStack(EPItems.SMOKER_UPGRADE_MODULE.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_UPGRADE_MODULE), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_GOLD), + 'S', ingredientOf(CommonItemTags.SILICON), + 'b', ingredientOf(EPItems.BASIC_SOLAR_CELL), + 'B', ingredientOf(EPItems.BASIC_UPGRADE_MODULE) + ), new String[] { + "GSG", + "bBb", + "GSG" + }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.MOON_LIGHT_UPGRADE_MODULE_1), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_GOLD), + 'S', ingredientOf(CommonItemTags.SILICON), + 'B', ingredientOf(EPItems.BASIC_SOLAR_CELL), + 'A', ingredientOf(EPItems.ADVANCED_UPGRADE_MODULE), + 'M', ingredientOf(EPItems.MOON_LIGHT_UPGRADE_MODULE_1) + ), new String[] { + "GSG", + "BAB", + "GMG" + }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.MOON_LIGHT_UPGRADE_MODULE_2), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_GOLD), + 'S', ingredientOf(CommonItemTags.SILICON), + 'B', ingredientOf(EPItems.BASIC_SOLAR_CELL), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_UPGRADE_MODULE), + 'M', ingredientOf(EPItems.MOON_LIGHT_UPGRADE_MODULE_2) + ), new String[] { + "GSG", + "BRB", + "GMG" + }, new ItemStack(EPItems.MOON_LIGHT_UPGRADE_MODULE_3.get()), CraftingBookCategory.MISC); + } + private void buildToolsCraftingRecipes() { + addHammerCraftingRecipe(output, ItemTags.PLANKS, EPItems.WOODEN_HAMMER); + addHammerCraftingRecipe(output, ItemTags.STONE_TOOL_MATERIALS, EPItems.STONE_HAMMER); + addHammerCraftingRecipe(output, Tags.Items.INGOTS_IRON, EPItems.IRON_HAMMER); + addHammerCraftingRecipe(output, Tags.Items.INGOTS_GOLD, EPItems.GOLDEN_HAMMER); + addHammerCraftingRecipe(output, Tags.Items.GEMS_DIAMOND, EPItems.DIAMOND_HAMMER); + + addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( + 'i', ingredientOf(Tags.Items.NUGGETS_IRON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'S', ingredientOf(Tags.Items.RODS_WOODEN) + ), new String[] { + "I I", + " i ", + "S S" + }, new ItemStack(EPItems.CUTTER.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(Tags.Items.INGOTS_IRON), Map.of( + 'i', ingredientOf(Tags.Items.NUGGETS_IRON), + 'I', ingredientOf(Tags.Items.INGOTS_IRON) + ), new String[] { + " I ", + " iI", + "i " + }, new ItemStack(EPItems.WRENCH.get()), CraftingBookCategory.MISC); + } + private void buildEnergyItemsCraftingRecipes() { + addShapedCraftingRecipe(output, has(Tags.Items.INGOTS_COPPER), Map.of( + 'T', ingredientOf(CommonItemTags.NUGGETS_TIN), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'c', ingredientOf(ItemTags.COALS) + ), new String[] { + "T T", + "CRC", + "CcC" + }, new ItemStack(EPItems.BATTERY_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_1), Map.of( + 'T', ingredientOf(CommonItemTags.NUGGETS_TIN), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'c', ingredientOf(ItemTags.COALS), + 'B', ingredientOf(EPItems.BATTERY_1) + ), new String[] { + "T T", + "CBC", + "IcI" + }, new ItemStack(EPItems.BATTERY_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_2), Map.of( + 'T', ingredientOf(CommonItemTags.NUGGETS_TIN), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'B', ingredientOf(EPItems.BATTERY_2) + ), new String[] { + "T T", + "BCB", + "CSC" + }, new ItemStack(EPItems.BATTERY_3.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_3), Map.of( + 'T', ingredientOf(CommonItemTags.NUGGETS_TIN), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'B', ingredientOf(EPItems.BATTERY_3) + ), new String[] { + "T T", + "CBC", + "SIS" + }, new ItemStack(EPItems.BATTERY_4.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_4), Map.of( + 'T', ingredientOf(CommonItemTags.NUGGETS_TIN), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'S', ingredientOf(CommonItemTags.SILICON), + 'B', ingredientOf(EPItems.BATTERY_4) + ), new String[] { + "T T", + "BSB", + "IRI" + }, new ItemStack(EPItems.BATTERY_5.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_5), Map.of( + 'T', ingredientOf(CommonItemTags.NUGGETS_TIN), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'B', ingredientOf(EPItems.BATTERY_5) + ), new String[] { + "T T", + "EBE", + "EBE" + }, new ItemStack(EPItems.BATTERY_6.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_6), Map.of( + 'G', ingredientOf(Tags.Items.NUGGETS_GOLD), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'S', ingredientOf(CommonItemTags.SILICON), + 'B', ingredientOf(EPItems.BATTERY_6) + ), new String[] { + "G G", + "EBE", + "SBS" + }, new ItemStack(EPItems.BATTERY_7.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_7), Map.of( + 'G', ingredientOf(Tags.Items.NUGGETS_GOLD), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'B', ingredientOf(EPItems.BATTERY_7) + ), new String[] { + "G G", + "EBE", + "ABA" + }, new ItemStack(EPItems.BATTERY_8.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.COAL_ENGINE_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'c', ingredientOf(CommonItemTags.PLATES_COPPER), + 'C', ingredientOf(EPBlocks.COAL_ENGINE_ITEM) + ), new String[] { + "SIS", + "RCR", + "cIc" + }, new ItemStack(EPItems.INVENTORY_COAL_ENGINE.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.CHARGER_ITEM), Map.of( + 'c', ingredientOf(CommonItemTags.PLATES_COPPER), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'S', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(EPBlocks.CHARGER_ITEM) + ), new String[] { + "SIS", + "RCR", + "cIc" + }, new ItemStack(EPItems.INVENTORY_CHARGER.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.TELEPORTER_ITEM), Map.of( + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'c', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'T', ingredientOf(EPBlocks.TELEPORTER_ITEM) + ), new String[] { + "CcC", + "RTR", + "GcG" + }, new ItemStack(EPItems.INVENTORY_TELEPORTER.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_3), Map.of( + 'b', ingredientOf(EPItems.BASIC_CIRCUIT), + 'S', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'B', ingredientOf(EPItems.BATTERY_3) + ), new String[] { + "S S", + "bRb", + "CBC" + }, new ItemStack(EPItems.ENERGY_ANALYZER.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BATTERY_3), Map.of( + 'b', ingredientOf(EPItems.BASIC_CIRCUIT), + 'S', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'L', ingredientOf(Tags.Items.GEMS_LAPIS), + 'B', ingredientOf(EPItems.BATTERY_3) + ), new String[] { + "S S", + "bLb", + "CBC" + }, new ItemStack(EPItems.FLUID_ANALYZER.get()), CraftingBookCategory.MISC); + } + private void buildItemTransportCraftingRecipes() { + addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( + 'L', ingredientOf(Tags.Items.LEATHERS), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE) + ), new String[] { + " ", + "LLL", + "IRI" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_ITEM.get(), 6), CraftingBookCategory.MISC, + "item_conveyor_belt", "_from_leather"); + + addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( + 'K', ingredientOf(Items.DRIED_KELP), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE) + ), new String[] { + " ", + "KKK", + "IRI" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_ITEM.get(), 6), CraftingBookCategory.MISC, + "item_conveyor_belt", "_from_dried_kelp"); + + addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_ITEM), Map.of( + 'C', ingredientOf(Tags.Items.COBBLESTONES_NORMAL), + 'c', ingredientOf(EPBlocks.ITEM_CONVEYOR_BELT_ITEM), + 'H', ingredientOf(Items.HOPPER) + ), new String[] { + "CCC", + "CHC", + "CcC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( + 'C', ingredientOf(Tags.Items.COBBLESTONES_NORMAL), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'R', ingredientOf(Tags.Items.STORAGE_BLOCKS_REDSTONE), + 'L', ingredientOf(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) + ), new String[] { + "CRC", + "ILI", + "CRC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SORTER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( + 'C', ingredientOf(Tags.Items.COBBLESTONES_NORMAL), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'l', ingredientOf(Items.LEVER), + 'L', ingredientOf(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) + ), new String[] { + "ClC", + "ILI", + "CRC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SWITCH_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( + 'C', ingredientOf(Tags.Items.COBBLESTONES_NORMAL), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'L', ingredientOf(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) + ), new String[] { + "CIC", + "ILI", + "CRC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_SPLITTER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM), Map.of( + 'C', ingredientOf(Tags.Items.COBBLESTONES_NORMAL), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'L', ingredientOf(EPBlocks.ITEM_CONVEYOR_BELT_LOADER_ITEM) + ), new String[] { + "CRC", + "ILI", + "CIC" + }, new ItemStack(EPBlocks.ITEM_CONVEYOR_BELT_MERGER_ITEM.get()), CraftingBookCategory.MISC); + } + private void buildFluidTransportCraftingRecipes() { + addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( + 'I', ingredientOf(Tags.Items.INGOTS_IRON), + 'i', ingredientOf(CommonItemTags.PLATES_IRON) + ), new String[] { + "IiI", + "IiI", + "IiI" + }, new ItemStack(EPBlocks.IRON_FLUID_PIPE_ITEM.get(), 12), CraftingBookCategory.MISC, + "", "", "iron_"); + + addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_GOLD), Map.of( + 'G', ingredientOf(Tags.Items.INGOTS_GOLD), + 'g', ingredientOf(CommonItemTags.PLATES_GOLD) + ), new String[] { + "GgG", + "GgG", + "GgG" + }, new ItemStack(EPBlocks.GOLDEN_FLUID_PIPE_ITEM.get(), 12), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(CommonItemTags.PLATES_IRON), Map.of( + 'G', ingredientOf(Tags.Items.GLASS_PANES_COLORLESS), + 'I', ingredientOf(CommonItemTags.PLATES_IRON) + ), new String[] { + "IGI", + "IGI", + "IGI" + }, new ItemStack(EPBlocks.FLUID_TANK_SMALL_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.FLUID_TANK_SMALL_ITEM), Map.of( + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM.get()), + 'S', ingredientOf(CommonItemTags.INGOTS_STEEL) + ), new String[] { + "SFS", + "SFS", + "SFS" + }, new ItemStack(EPBlocks.FLUID_TANK_MEDIUM_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.FLUID_TANK_MEDIUM_ITEM), Map.of( + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM.get()), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON) + ), new String[] { + "IFI", + "IFI", + "IFI" + }, new ItemStack(EPBlocks.FLUID_TANK_LARGE_ITEM.get()), CraftingBookCategory.MISC); + } + private void buildEnergyTransportCraftingRecipes() { + addBasicCableCraftingRecipes(output, CommonItemTags.INGOTS_TIN, CommonItemTags.WIRES_TIN, + new ItemStack(EPBlocks.TIN_CABLE_ITEM.get(), 9)); + + addBasicCableCraftingRecipes(output, Tags.Items.INGOTS_COPPER, CommonItemTags.WIRES_COPPER, + new ItemStack(EPBlocks.COPPER_CABLE_ITEM.get(), 6)); + addBasicCableCraftingRecipes(output, Tags.Items.INGOTS_GOLD, CommonItemTags.WIRES_GOLD, + new ItemStack(EPBlocks.GOLD_CABLE_ITEM.get(), 6)); + + addBasicCableCraftingRecipes(output, CommonItemTags.INGOTS_ENERGIZED_COPPER, CommonItemTags.WIRES_ENERGIZED_COPPER, + new ItemStack(EPBlocks.ENERGIZED_COPPER_CABLE_ITEM.get(), 3)); + addBasicCableCraftingRecipes(output, CommonItemTags.INGOTS_ENERGIZED_GOLD, CommonItemTags.WIRES_ENERGIZED_GOLD, + new ItemStack(EPBlocks.ENERGIZED_GOLD_CABLE_ITEM.get(), 3)); + + addShapedCraftingRecipe(output, has(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( + 'I', ingredientOf(EPItems.CABLE_INSULATOR), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX) + ), new String[] { + "ICI", + "ICI", + "ICI" + }, new ItemStack(EPBlocks.ENERGIZED_CRYSTAL_MATRIX_CABLE_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'M', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CSI", + "RMR", + "CSI" + }, new ItemStack(EPBlocks.LV_TRANSFORMER_1_TO_N_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'M', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CSI", + "SMR", + "CRI" + }, new ItemStack(EPBlocks.LV_TRANSFORMER_3_TO_3_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'M', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CRI", + "SMS", + "CRI" + }, new ItemStack(EPBlocks.LV_TRANSFORMER_N_TO_1_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'M', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.LV_TRANSFORMER_1_TO_N_ITEM) + ), new String[] { + "CTI", + "SMS", + "CTI" + }, new ItemStack(EPBlocks.MV_TRANSFORMER_1_TO_N_ITEM.get()), CraftingBookCategory.MISC, + "", "", "mv_"); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'M', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.LV_TRANSFORMER_3_TO_3_ITEM) + ), new String[] { + "CTI", + "SMS", + "CTI" + }, new ItemStack(EPBlocks.MV_TRANSFORMER_3_TO_3_ITEM.get()), CraftingBookCategory.MISC, + "", "", "mv_"); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'M', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.LV_TRANSFORMER_N_TO_1_ITEM) + ), new String[] { + "CTI", + "SMS", + "CTI" + }, new ItemStack(EPBlocks.MV_TRANSFORMER_N_TO_1_ITEM.get()), CraftingBookCategory.MISC, + "", "", "mv_"); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'M', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.MV_TRANSFORMER_1_TO_N_ITEM) + ), new String[] { + "GTG", + "SMS", + "GTG" + }, new ItemStack(EPBlocks.HV_TRANSFORMER_1_TO_N_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'M', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.MV_TRANSFORMER_3_TO_3_ITEM) + ), new String[] { + "GTG", + "SMS", + "GTG" + }, new ItemStack(EPBlocks.HV_TRANSFORMER_3_TO_3_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'M', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.MV_TRANSFORMER_N_TO_1_ITEM) + ), new String[] { + "GTG", + "SMS", + "GTG" + }, new ItemStack(EPBlocks.HV_TRANSFORMER_N_TO_1_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'M', ingredientOf(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.HV_TRANSFORMER_1_TO_N_ITEM) + ), new String[] { + "CTC", + "SMS", + "CTC" + }, new ItemStack(EPBlocks.EHV_TRANSFORMER_1_TO_N_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'M', ingredientOf(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.HV_TRANSFORMER_3_TO_3_ITEM) + ), new String[] { + "CTC", + "SMS", + "CTC" + }, new ItemStack(EPBlocks.EHV_TRANSFORMER_3_TO_3_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'M', ingredientOf(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), + 'T', ingredientOf(EPBlocks.HV_TRANSFORMER_N_TO_1_ITEM) + ), new String[] { + "CTC", + "SMS", + "CTC" + }, new ItemStack(EPBlocks.EHV_TRANSFORMER_N_TO_1_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPItems.BATTERY_5), + 'M', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CBC", + "BMB", + "SBS" + }, new ItemStack(EPBlocks.BATTERY_BOX_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'B', ingredientOf(EPItems.BATTERY_8), + 'M', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "EBE", + "BMB", + "BSB" + }, new ItemStack(EPBlocks.ADVANCED_BATTERY_BOX_ITEM.get()), CraftingBookCategory.MISC); + + addShapelessCraftingRecipe(output, has(EPBlocks.BATTERY_BOX_ITEM), List.of( + ingredientOf(EPBlocks.BATTERY_BOX_ITEM), + ingredientOf(Items.MINECART) + ), new ItemStack(EPItems.BATTERY_BOX_MINECART.get()), CraftingBookCategory.MISC); + + addShapelessCraftingRecipe(output, has(EPBlocks.ADVANCED_BATTERY_BOX_ITEM), List.of( + ingredientOf(EPBlocks.ADVANCED_BATTERY_BOX_ITEM), + ingredientOf(Items.MINECART) + ), new ItemStack(EPItems.ADVANCED_BATTERY_BOX_MINECART.get()), CraftingBookCategory.MISC); + } + private void buildMachineCraftingRecipes() { + addShapedCraftingRecipe(output, has(Items.SMOOTH_STONE), Map.of( + 'S', ingredientOf(Items.SMOOTH_STONE), + 'B', ingredientOf(Items.BRICKS), + 's', ingredientOf(ItemTags.SHOVELS) + ), new String[] { + "BBB", + "BsB", + "SSS" + }, new ItemStack(EPBlocks.PRESS_MOLD_MAKER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(Items.FURNACE), Map.of( + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'B', ingredientOf(Items.BRICKS), + 'F', ingredientOf(Items.FURNACE) + ), new String[] { + "III", + "FIF", + "BBB" + }, new ItemStack(EPBlocks.ALLOY_FURNACE_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'b', ingredientOf(EPItems.BASIC_CIRCUIT), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'T', ingredientOf(Items.CRAFTING_TABLE) + ), new String[] { + "CTC", + "bBb", + "ITI" + }, new ItemStack(EPBlocks.AUTO_CRAFTER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME), Map.of( + 'c', ingredientOf(EPItems.ADVANCED_CIRCUIT), + 'P', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'a', ingredientOf(EPBlocks.AUTO_CRAFTER_ITEM) + ), new String[] { + "GaG", + "cAc", + "PaP" + }, new ItemStack(EPBlocks.ADVANCED_AUTO_CRAFTER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 's', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', ingredientOf(Items.STONECUTTER) + ), new String[] { + "CsC", + "SBS", + "CIC" + }, new ItemStack(EPBlocks.CRUSHER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'c', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'C', ingredientOf(EPBlocks.CRUSHER_ITEM) + ), new String[] { + "aCa", + "FAF", + "cCc" + }, new ItemStack(EPBlocks.ADVANCED_CRUSHER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', ingredientOf(Items.STONECUTTER) + ), new String[] { + "ISI", + "SBS", + "ISI" + }, new ItemStack(EPBlocks.PULVERIZER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'C', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'P', ingredientOf(EPBlocks.PULVERIZER_ITEM) + ), new String[] { + "aPa", + "FAF", + "CPC" + }, new ItemStack(EPBlocks.ADVANCED_PULVERIZER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(EPItems.SAW_BLADE), + 's', ingredientOf(EPItems.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "sSs", + "CBC", + "sIs" + }, new ItemStack(EPBlocks.SAWMILL_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'P', ingredientOf(Items.PISTON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "IPI", + "PBP", + "IPI" + }, new ItemStack(EPBlocks.COMPRESSOR_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'P', ingredientOf(Items.PISTON), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'S', ingredientOf(CommonItemTags.INGOTS_STEEL), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "SPS", + "IBI", + "SIS" + }, new ItemStack(EPBlocks.METAL_PRESS_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'I', ingredientOf(CommonItemTags.GEARS_IRON), + 'i', ingredientOf(CommonItemTags.RODS_IRON), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'P', ingredientOf(EPBlocks.PRESS_MOLD_MAKER_ITEM) + ), new String[] { + "IPI", + "iBi", + "IPI" + }, new ItemStack(EPBlocks.AUTO_PRESS_MOLD_MAKER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 's', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', ingredientOf(Items.STONECUTTER) + ), new String[] { + "CSC", + "sBs", + "ISI" + }, new ItemStack(EPBlocks.AUTO_STONECUTTER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'G', ingredientOf(Tags.Items.GLASS_PANES_COLORLESS), + 'D', ingredientOf(Items.DIRT), + 'W', ingredientOf(Items.WATER_BUCKET), + 'S', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "SWS", + "GBG", + "IDI" + }, new ItemStack(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'D', ingredientOf(Items.DISPENSER) + ), new String[] { + "IDS", + "DBD", + "SDC" + }, new ItemStack(EPBlocks.BLOCK_PLACER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 's', ingredientOf(CommonItemTags.INGOTS_STEEL), + 'i', ingredientOf(CommonItemTags.GEARS_IRON), + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'B', ingredientOf(EPItems.BASIC_CIRCUIT), + 'H', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "iRi", + "BHB", + "SsS" + }, new ItemStack(EPBlocks.ASSEMBLING_MACHINE_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'B', ingredientOf(EPItems.BASIC_CIRCUIT), + 'S', ingredientOf(CommonItemTags.INGOTS_STEEL), + 'H', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'A', ingredientOf(EPBlocks.ALLOY_FURNACE_ITEM) + ), new String[] { + "SAS", + "BHB", + "SAS" + }, new ItemStack(EPBlocks.INDUCTION_SMELTER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "SIS", + "IBI", + "CFC" + }, new ItemStack(EPBlocks.FLUID_FILLER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'i', ingredientOf(CommonItemTags.GEARS_IRON), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'H', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "iSi", + "FHF", + "CIC" + }, new ItemStack(EPBlocks.STONE_SOLIDIFIER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'i', ingredientOf(CommonItemTags.PLATES_IRON), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'D', ingredientOf(EPBlocks.FLUID_DRAINER_ITEM), + 'F', ingredientOf(EPBlocks.FLUID_FILLER_ITEM), + 'f', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'H', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "CiC", + "DHF", + "IfI" + }, new ItemStack(EPBlocks.FLUID_TRANSPOSER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'i', ingredientOf(CommonItemTags.GEARS_IRON), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'B', ingredientOf(Items.IRON_BARS), + 'f', ingredientOf(EPBlocks.IRON_FLUID_PIPE_ITEM), + 'H', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM) + ), new String[] { + "iBi", + "FHF", + "IfI" + }, new ItemStack(EPBlocks.FILTRATION_PLANT_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new String[] { + "CFC", + "IBI", + "SIS" + }, new ItemStack(EPBlocks.FLUID_DRAINER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'P', ingredientOf(Items.PISTON), + 'p', ingredientOf(EPBlocks.IRON_FLUID_PIPE_ITEM) + ), new String[] { + "RPR", + "FBF", + "IpI" + }, new ItemStack(EPBlocks.FLUID_PUMP_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(Tags.Items.STORAGE_BLOCKS_IRON), Map.of( + 'i', ingredientOf(CommonItemTags.PLATES_IRON), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'B', ingredientOf(Items.IRON_BARS), + 'G', ingredientOf(Tags.Items.GLASS_BLOCKS_COLORLESS) + ), new String[] { + "IBI", + "iGi", + "IiI" + }, new ItemStack(EPBlocks.DRAIN_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 's', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON) + ), new String[] { + "sCs", + "IBI", + "CSC" + }, new ItemStack(EPBlocks.CHARGER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'C', ingredientOf(EPBlocks.CHARGER_ITEM) + ), new String[] { + "SGS", + "aAa", + "GCG" + }, new ItemStack(EPBlocks.ADVANCED_CHARGER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 's', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON) + ), new String[] { + "CSC", + "IBI", + "sCs" + }, new ItemStack(EPBlocks.UNCHARGER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'U', ingredientOf(EPBlocks.UNCHARGER_ITEM) + ), new String[] { + "GUG", + "aAa", + "SGS" + }, new ItemStack(EPBlocks.ADVANCED_UNCHARGER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.CHARGER_ITEM), Map.of( + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'c', ingredientOf(CommonItemTags.PLATES_COPPER), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'i', ingredientOf(CommonItemTags.PLATES_IRON), + 'S', ingredientOf(CommonItemTags.SILICON), + 'H', ingredientOf(EPBlocks.CHARGER_ITEM) + ), new String[] { + "cCc", + "SHS", + "iIi" + }, new ItemStack(EPBlocks.MINECART_CHARGER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_CHARGER_ITEM), Map.of( + 'G', ingredientOf(Tags.Items.STORAGE_BLOCKS_GOLD), + 'g', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'c', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'H', ingredientOf(EPBlocks.ADVANCED_CHARGER_ITEM) + ), new String[] { + "gGg", + "SHS", + "cCc" + }, new ItemStack(EPBlocks.ADVANCED_MINECART_CHARGER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.UNCHARGER_ITEM), Map.of( + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'c', ingredientOf(CommonItemTags.PLATES_COPPER), + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'i', ingredientOf(CommonItemTags.PLATES_IRON), + 'S', ingredientOf(CommonItemTags.SILICON), + 'U', ingredientOf(EPBlocks.UNCHARGER_ITEM) + ), new String[] { + "iIi", + "SUS", + "cCc" + }, new ItemStack(EPBlocks.MINECART_UNCHARGER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_UNCHARGER_ITEM), Map.of( + 'G', ingredientOf(Tags.Items.STORAGE_BLOCKS_GOLD), + 'g', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'c', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'S', ingredientOf(CommonItemTags.SILICON), + 'U', ingredientOf(EPBlocks.ADVANCED_UNCHARGER_ITEM) + ), new String[] { + "cCc", + "SUS", + "gGg" + }, new ItemStack(EPBlocks.ADVANCED_MINECART_UNCHARGER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.BASIC_SOLAR_CELL), Map.of( + 'G', ingredientOf(Tags.Items.GLASS_PANES_COLORLESS), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'I', ingredientOf(Tags.Items.INGOTS_IRON), + 'C', ingredientOf(Tags.Items.INGOTS_COPPER), + 'B', ingredientOf(EPItems.BASIC_SOLAR_CELL) + ), new String[] { + "GGG", + "BRB", + "ICI" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_1.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_1), Map.of( + 'G', ingredientOf(Tags.Items.GLASS_PANES_COLORLESS), + 'C', ingredientOf(Tags.Items.INGOTS_COPPER), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'S', ingredientOf(EPBlocks.SOLAR_PANEL_ITEM_1), + 'B', ingredientOf(EPItems.BASIC_SOLAR_CELL) + ), new String[] { + "GGG", + "SBS", + "CRC" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_2.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_2), Map.of( + 'G', ingredientOf(Tags.Items.GLASS_PANES_COLORLESS), + 'R', ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 's', ingredientOf(CommonItemTags.SILICON), + 'S', ingredientOf(EPBlocks.SOLAR_PANEL_ITEM_2), + 'B', ingredientOf(EPItems.BASIC_SOLAR_CELL) + ), new String[] { + "GGG", + "SBS", + "sRs" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_3.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_3), Map.of( + 'G', ingredientOf(Tags.Items.GLASS_PANES_COLORLESS), + 's', ingredientOf(CommonItemTags.SILICON), + 'R', ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), + 'S', ingredientOf(EPBlocks.SOLAR_PANEL_ITEM_3), + 'A', ingredientOf(EPItems.ADVANCED_SOLAR_CELL) + ), new String[] { + "GGG", + "SsS", + "ARA" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_4.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_4), Map.of( + 'G', ingredientOf(Tags.Items.GLASS_PANES_COLORLESS), + 'a', ingredientOf(Tags.Items.GEMS_AMETHYST), + 'E', ingredientOf(CommonItemTags.INGOTS_ENERGIZED_GOLD), + 'S', ingredientOf(EPBlocks.SOLAR_PANEL_ITEM_4), + 'A', ingredientOf(EPItems.ADVANCED_SOLAR_CELL) + ), new String[] { + "GGG", + "SaS", + "AEA" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_5.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.SOLAR_PANEL_ITEM_5), Map.of( + 'G', ingredientOf(Tags.Items.GLASS_PANES_COLORLESS), + 'A', ingredientOf(Tags.Items.GEMS_AMETHYST), + 'E', ingredientOf(CommonItemTags.INGOTS_ENERGIZED_GOLD), + 'S', ingredientOf(EPBlocks.SOLAR_PANEL_ITEM_5), + 'R', ingredientOf(EPItems.REINFORCED_ADVANCED_SOLAR_CELL) + ), new String[] { + "GGG", + "SAS", + "RER" + }, new ItemStack(EPBlocks.SOLAR_PANEL_ITEM_6.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'F', ingredientOf(Items.FURNACE) + ), new String[] { + "ISI", + "CBC", + "IFI" + }, new ItemStack(EPBlocks.COAL_ENGINE_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(Items.REDSTONE_LAMP), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'C', ingredientOf(Tags.Items.INGOTS_COPPER), + 'R', ingredientOf(Items.REDSTONE_LAMP) + ), new String[] { + "CSC", + "SRS", + "CSC" + }, new ItemStack(EPBlocks.POWERED_LAMP_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.BASIC_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'I', ingredientOf(CommonItemTags.PLATES_IRON), + 'C', ingredientOf(CommonItemTags.PLATES_COPPER), + 'B', ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM), + 'F', ingredientOf(Items.FURNACE) + ), new String[] { + "CFC", + "SBS", + "IFI" + }, new ItemStack(EPBlocks.POWERED_FURNACE_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'G', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), + 'P', ingredientOf(EPBlocks.POWERED_FURNACE_ITEM) + ), new String[] { + "GPG", + "SAS", + "aPa" + }, new ItemStack(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'G', ingredientOf(CommonItemTags.PLATES_GOLD), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "RaR", + "GAG", + "ECE" + }, new ItemStack(EPBlocks.LIGHTNING_GENERATOR_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'G', ingredientOf(CommonItemTags.PLATES_GOLD), + 'R', ingredientOf(Tags.Items.DUSTS_REDSTONE), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "RaR", + "GAG", + "ESE" + }, new ItemStack(EPBlocks.ENERGIZER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'I', ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), + 'R', ingredientOf(Tags.Items.STORAGE_BLOCKS_REDSTONE), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "aRa", + "IAI", + "ECE" + }, new ItemStack(EPBlocks.CHARGING_STATION_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.COAL_ENGINE_ITEM), Map.of( + 's', ingredientOf(CommonItemTags.SILICON), + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'c', ingredientOf(CommonItemTags.WIRES_COPPER), + 'C', ingredientOf(EPBlocks.COAL_ENGINE_ITEM) + ), new String[] { + "cSc", + "sCs", + "cSc" + }, new ItemStack(EPBlocks.HEAT_GENERATOR_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), Map.of( + 'S', ingredientOf(CommonItemTags.SILICON), + 'F', ingredientOf(EPBlocks.FLUID_TANK_SMALL_ITEM), + 'c', ingredientOf(CommonItemTags.PLATES_COPPER), + 'C', ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), + 'H', ingredientOf(EPBlocks.HARDENED_MACHINE_FRAME_ITEM), + 'E', ingredientOf(EPBlocks.COAL_ENGINE_ITEM) + ), new String[] { + "cHc", + "SES", + "CFC" + }, new ItemStack(EPBlocks.THERMAL_GENERATOR_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'a', ingredientOf(Items.AMETHYST_BLOCK), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), + 'P', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'A', ingredientOf(EPBlocks.ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "aPa", + "EAE", + "aPa" + }, new ItemStack(EPBlocks.CRYSTAL_GROWTH_CHAMBER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'P', ingredientOf(EPItems.PROCESSING_UNIT), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'a', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'A', ingredientOf(Tags.Items.GEMS_AMETHYST), + 'R', ingredientOf(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "CAC", + "PRP", + "aEa" + }, new ItemStack(EPBlocks.WEATHER_CONTROLLER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'P', ingredientOf(EPItems.PROCESSING_UNIT), + 'c', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'C', ingredientOf(Items.CLOCK), + 'A', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'R', ingredientOf(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "cCc", + "PRP", + "AEA" + }, new ItemStack(EPBlocks.TIME_CONTROLLER_ITEM.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM), Map.of( + 'T', ingredientOf(EPItems.TELEPORTER_PROCESSING_UNIT), + 'C', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'A', ingredientOf(CommonItemTags.PLATES_ADVANCED_ALLOY), + 'E', ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), + 'S', ingredientOf(CommonItemTags.STORAGE_BLOCKS_SILICON), + 'R', ingredientOf(EPBlocks.REINFORCED_ADVANCED_MACHINE_FRAME_ITEM) + ), new String[] { + "CEC", + "TRT", + "ASA" + }, new ItemStack(EPBlocks.TELEPORTER_ITEM.get()), CraftingBookCategory.MISC); + } + private void buildMiscCraftingRecipes() { + addShapelessCraftingRecipe(output, InventoryChangeTrigger.TriggerInstance.hasItems( + Items.BOOK, + EPBlocks.BASIC_MACHINE_FRAME_ITEM + ), List.of( + ingredientOf(Items.BOOK), + ingredientOf(EPBlocks.BASIC_MACHINE_FRAME_ITEM) + ), new ItemStack(EPItems.ENERGIZED_POWER_BOOK.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(CommonItemTags.DUSTS_CHARCOAL), Map.of( + 'P', ingredientOf(Items.PAPER), + 'C', ingredientOf(CommonItemTags.DUSTS_CHARCOAL), + 'I', ingredientOf(CommonItemTags.PLATES_IRON) + ), new String[] { + "PCP", + "CIC", + "PCP" + }, new ItemStack(EPItems.CHARCOAL_FILTER.get()), CraftingBookCategory.MISC); + + addShapedCraftingRecipe(output, has(EPItems.ENERGIZED_CRYSTAL_MATRIX), Map.of( + 'A', ingredientOf(Tags.Items.GEMS_AMETHYST), + 'E', ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), + 'e', ingredientOf(Tags.Items.ENDER_PEARLS) + ), new String[] { + "AEA", + "EeE", + "AEA" + }, new ItemStack(EPItems.TELEPORTER_MATRIX.get()), CraftingBookCategory.MISC); + } + private void buildCustomCraftingRecipes() { + addCustomCraftingRecipe(output, TeleporterMatrixSettingsCopyRecipe::new, CraftingBookCategory.MISC, + "teleporter_matrix_settings_copy"); + } + + private void buildCookingRecipes() { + addBlastingAndSmeltingRecipes(output, CommonItemTags.RAW_MATERIALS_TIN, new ItemStack(EPItems.TIN_INGOT.get()), CookingBookCategory.MISC, + 100, .7f, "tin_ingot", "raw_tin"); + addBlastingAndSmeltingRecipes(output, CommonItemTags.ORES_TIN, new ItemStack(EPItems.TIN_INGOT.get()), CookingBookCategory.MISC, + 100, .7f, "tin_ingot", "tin_ores"); + + addBlastingAndSmeltingRecipes(output, CommonItemTags.DUSTS_TIN, new ItemStack(EPItems.TIN_INGOT.get()), CookingBookCategory.MISC, + 100, .7f, "tin_ingot", "tin_dust"); + addBlastingAndSmeltingRecipes(output, CommonItemTags.DUSTS_COPPER, new ItemStack(Items.COPPER_INGOT), CookingBookCategory.MISC, + 100, .7f, "copper_ingot", "copper_dust"); + addBlastingAndSmeltingRecipes(output, CommonItemTags.DUSTS_IRON, new ItemStack(Items.IRON_INGOT), CookingBookCategory.MISC, + 100, .7f, "iron_ingot", "iron_dust"); + addBlastingAndSmeltingRecipes(output, CommonItemTags.DUSTS_GOLD, new ItemStack(Items.GOLD_INGOT), CookingBookCategory.MISC, + 100, .7f, "gold_ingot", "gold_dust"); + + addBlastingAndSmeltingRecipes(output, EPItems.IRON_HAMMER.get(), new ItemStack(Items.IRON_NUGGET), CookingBookCategory.MISC, + 100, .1f, "iron_nugget", "iron_hammer"); + addBlastingAndSmeltingRecipes(output, EPItems.GOLDEN_HAMMER.get(), new ItemStack(Items.GOLD_NUGGET), CookingBookCategory.MISC, + 100, .1f, "gold_nugget", "golden_hammer"); + + addBlastingAndSmeltingRecipes(output, Tags.Items.GEMS_QUARTZ, new ItemStack(EPItems.SILICON.get()), CookingBookCategory.MISC, + 250, 4.1f, "silicon", "nether_quartz"); + + addSmeltingRecipe(output, EPBlocks.SAWDUST_BLOCK_ITEM.get(), new ItemStack(Items.CHARCOAL), CookingBookCategory.MISC, + 200, .15f, null, "sawdust_block"); + + addSmeltingRecipe(output, EPItems.RAW_GEAR_PRESS_MOLD.get(), new ItemStack(EPItems.GEAR_PRESS_MOLD.get()), CookingBookCategory.MISC, + 200, .3f, null); + addSmeltingRecipe(output, EPItems.RAW_ROD_PRESS_MOLD.get(), new ItemStack(EPItems.ROD_PRESS_MOLD.get()), CookingBookCategory.MISC, + 200, .3f, null); + addSmeltingRecipe(output, EPItems.RAW_WIRE_PRESS_MOLD.get(), new ItemStack(EPItems.WIRE_PRESS_MOLD.get()), CookingBookCategory.MISC, + 200, .3f, null); + } + + private void buildSmithingRecipes() { + addNetheriteSmithingUpgradeRecipe(output, ingredientOf(EPItems.DIAMOND_HAMMER), + new ItemStack(EPItems.NETHERITE_HAMMER.get())); + } + + private void buildPressMoldMakerRecipes() { + addPressMoldMakerRecipe(output, 4, new ItemStack(EPItems.RAW_GEAR_PRESS_MOLD.get())); + addPressMoldMakerRecipe(output, 9, new ItemStack(EPItems.RAW_ROD_PRESS_MOLD.get())); + addPressMoldMakerRecipe(output, 6, new ItemStack(EPItems.RAW_WIRE_PRESS_MOLD.get())); + } + + private void buildAlloyFurnaceRecipes() { + addAlloyFurnaceRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(Tags.Items.INGOTS_IRON)), + new IngredientWithCount(ingredientOf(ItemTags.COALS), 3) + }, new ItemStack(EPItems.STEEL_INGOT.get()), 500); + + addAlloyFurnaceRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(CommonItemTags.INGOTS_TIN)), + new IngredientWithCount(ingredientOf(CommonItemTags.SILICON)), + new IngredientWithCount(ingredientOf(Tags.Items.DUSTS_REDSTONE), 2) + }, new ItemStack(EPItems.REDSTONE_ALLOY_INGOT.get()), 2500); + + addAlloyFurnaceRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(CommonItemTags.INGOTS_STEEL), 3), + new IngredientWithCount(ingredientOf(Tags.Items.INGOTS_COPPER), 3), + new IngredientWithCount(ingredientOf(CommonItemTags.INGOTS_TIN), 3) + }, new ItemStack(EPItems.ADVANCED_ALLOY_INGOT.get()), 10000); + } + + private void buildCompressorRecipes() { + addCompressorRecipe(output, new IngredientWithCount(ingredientOf(EPItems.STONE_PEBBLE), 16), new ItemStack(Items.COBBLESTONE), + "stone_pebbles"); + + addPlateCompressorRecipes(output, ingredientOf(CommonItemTags.INGOTS_TIN), + ingredientOf(CommonItemTags.STORAGE_BLOCKS_TIN), new ItemStack(EPItems.TIN_PLATE.get()), + "tin"); + addPlateCompressorRecipes(output, ingredientOf(Tags.Items.INGOTS_COPPER), + ingredientOf(Tags.Items.STORAGE_BLOCKS_COPPER), new ItemStack(EPItems.COPPER_PLATE.get()), + "copper"); + addPlateCompressorRecipes(output, ingredientOf(Tags.Items.INGOTS_IRON), + ingredientOf(Tags.Items.STORAGE_BLOCKS_IRON), new ItemStack(EPItems.IRON_PLATE.get()), + "iron"); + addPlateCompressorRecipes(output, ingredientOf(Tags.Items.INGOTS_GOLD), + ingredientOf(Tags.Items.STORAGE_BLOCKS_GOLD), new ItemStack(EPItems.GOLD_PLATE.get()), + "gold"); + + addPlateCompressorIngotRecipe(output, ingredientOf(CommonItemTags.INGOTS_ADVANCED_ALLOY), + new ItemStack(EPItems.ADVANCED_ALLOY_PLATE.get()), "advanced_alloy"); + addPlateCompressorIngotRecipe(output, ingredientOf(CommonItemTags.INGOTS_ENERGIZED_COPPER), + new ItemStack(EPItems.ENERGIZED_COPPER_PLATE.get()), "energized_copper"); + addPlateCompressorIngotRecipe(output, ingredientOf(CommonItemTags.INGOTS_ENERGIZED_GOLD), + new ItemStack(EPItems.ENERGIZED_GOLD_PLATE.get()), "energized_gold"); + } + + private void buildCrusherRecipes() { + addCrusherRecipe(output, ingredientOf(Items.STONE), new ItemStack(Items.COBBLESTONE), + "stone"); + addCrusherRecipe(output, ingredientOf(Items.STONE_BRICKS, Items.CHISELED_STONE_BRICKS, Items.CRACKED_STONE_BRICKS, + Items.SMOOTH_STONE), new ItemStack(Items.COBBLESTONE), + "stone_variants"); + + addCrusherRecipe(output, ingredientOf(Items.MOSSY_STONE_BRICKS), new ItemStack(Items.MOSSY_COBBLESTONE), + "mossy_stone_bricks"); + + addCrusherRecipe(output, ingredientOf(Items.TUFF_BRICKS, Items.CHISELED_TUFF_BRICKS, Items.CHISELED_TUFF, + Items.POLISHED_TUFF), new ItemStack(Items.TUFF), + "tuff_variants"); + + addCrusherRecipe(output, ingredientOf(Items.DEEPSLATE), new ItemStack(Items.COBBLED_DEEPSLATE), + "deepslate"); + addCrusherRecipe(output, ingredientOf(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(output, ingredientOf(Items.POLISHED_GRANITE), new ItemStack(Items.GRANITE), + "polished_granite"); + addCrusherRecipe(output, ingredientOf(Items.POLISHED_DIORITE), new ItemStack(Items.DIORITE), + "polished_diorite"); + addCrusherRecipe(output, ingredientOf(Items.POLISHED_ANDESITE), new ItemStack(Items.ANDESITE), + "polished_andesite"); + + addCrusherRecipe(output, ingredientOf(Tags.Items.COBBLESTONES_NORMAL), new ItemStack(Items.GRAVEL), + "cobblestone"); + + addCrusherRecipe(output, ingredientOf(Tags.Items.GRAVELS), new ItemStack(Items.SAND), + "gravel"); + + addCrusherRecipe(output, ingredientOf(Items.SANDSTONE), new ItemStack(Items.SAND), + "sandstone"); + addCrusherRecipe(output, ingredientOf(Items.SMOOTH_SANDSTONE, Items.CUT_SANDSTONE, + Items.CHISELED_SANDSTONE), new ItemStack(Items.SAND), + "sandstone_variants"); + + addCrusherRecipe(output, ingredientOf(Items.RED_SANDSTONE), new ItemStack(Items.RED_SAND), + "red_sandstone"); + addCrusherRecipe(output, ingredientOf(Items.SMOOTH_RED_SANDSTONE, Items.CUT_RED_SANDSTONE, + Items.CHISELED_RED_SANDSTONE), new ItemStack(Items.RED_SAND), + "red_sandstone_variants"); + + addCrusherRecipe(output, ingredientOf(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(output, ingredientOf(Items.SMOOTH_BASALT, Items.POLISHED_BASALT), new ItemStack(Items.BASALT), + "basalt_variants"); + } + + private void buildPulverizerRecipes() { + addBasicMetalPulverizerRecipes(output, + ingredientOf(CommonItemTags.ORES_TIN), ingredientOf(CommonItemTags.RAW_MATERIALS_TIN), + ingredientOf(CommonItemTags.STORAGE_BLOCKS_RAW_TIN), ingredientOf(CommonItemTags.INGOTS_TIN), + new ItemStack(EPItems.TIN_DUST.get()), "tin"); + addBasicMetalPulverizerRecipes(output, + ingredientOf(Tags.Items.ORES_IRON), ingredientOf(Tags.Items.RAW_MATERIALS_IRON), + ingredientOf(Tags.Items.STORAGE_BLOCKS_RAW_IRON), ingredientOf(Tags.Items.INGOTS_IRON), + new ItemStack(EPItems.IRON_DUST.get()), "iron"); + addBasicMetalPulverizerRecipes(output, + ingredientOf(Tags.Items.ORES_GOLD), ingredientOf(Tags.Items.RAW_MATERIALS_GOLD), + ingredientOf(Tags.Items.STORAGE_BLOCKS_RAW_GOLD), ingredientOf(Tags.Items.INGOTS_GOLD), + new ItemStack(EPItems.GOLD_DUST.get()), "gold"); + + addPulverizerRecipe(output, ingredientOf(Tags.Items.ORES_COPPER), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(EPItems.COPPER_DUST.get()), 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.get()), + .1, .2), "copper_ores"); + addRawMetalAndIngotPulverizerRecipes(output, + ingredientOf(Tags.Items.RAW_MATERIALS_COPPER), + ingredientOf(Tags.Items.STORAGE_BLOCKS_RAW_COPPER), ingredientOf(Tags.Items.INGOTS_COPPER), + new ItemStack(EPItems.COPPER_DUST.get()), "copper"); + + addPulverizerRecipe(output, ingredientOf(Tags.Items.ORES_COAL), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.COAL), new double[] { + 1., 1., .25 + }, new double[] { + 1., 1., .5, .25 + }), "coal_ores"); + + addPulverizerRecipe(output, ingredientOf(Tags.Items.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(output, ingredientOf(Tags.Items.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(output, ingredientOf(Tags.Items.ORES_EMERALD), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.EMERALD), new double[] { + 1., .67, .17 + }, new double[] { + 1., .67, .33, .17 + }), "emerald_ores"); + + addPulverizerRecipe(output, ingredientOf(Tags.Items.ORES_DIAMOND), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.DIAMOND), new double[] { + 1., .67, .17 + }, new double[] { + 1., .67, .33, .17 + }), "diamond_ores"); + + addPulverizerRecipe(output, ingredientOf(Tags.Items.ORES_QUARTZ), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.QUARTZ), new double[] { + 1., .67, .17 + }, new double[] { + 1., .67, .33, .17 + }), "nether_quartz_ores"); + + addPulverizerRecipe(output, ingredientOf(Tags.Items.ORES_NETHERITE_SCRAP), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(Items.NETHERITE_SCRAP), new double[] { + 1., .125, .125 + }, new double[] { + 1., .25, .25, .125 + }), "ancient_debris"); + + addPulverizerRecipe(output, ingredientOf(Items.CHARCOAL), + new PulverizerRecipe.OutputItemStackWithPercentages(new ItemStack(EPItems.CHARCOAL_DUST.get()), + 1., 1.), "charcoal"); + } + + private void buildSawmillRecipes() { + addBasicWoodSawmillRecipe(output, new ItemStack(Items.OAK_PLANKS), + ingredientOf(ItemTags.OAK_LOGS), ingredientOf(Items.OAK_FENCE), + ingredientOf(Items.OAK_FENCE_GATE), ingredientOf(Items.OAK_DOOR), + ingredientOf(Items.OAK_TRAPDOOR), ingredientOf(Items.OAK_PRESSURE_PLATE), + ingredientOf(Items.OAK_SIGN), ingredientOf(Items.OAK_BOAT), ingredientOf(Items.OAK_CHEST_BOAT), + false, "oak"); + + addBasicWoodSawmillRecipe(output, new ItemStack(Items.SPRUCE_PLANKS), + ingredientOf(ItemTags.SPRUCE_LOGS), ingredientOf(Items.SPRUCE_FENCE), + ingredientOf(Items.SPRUCE_FENCE_GATE), ingredientOf(Items.SPRUCE_DOOR), + ingredientOf(Items.SPRUCE_TRAPDOOR), ingredientOf(Items.SPRUCE_PRESSURE_PLATE), + ingredientOf(Items.SPRUCE_SIGN), ingredientOf(Items.SPRUCE_BOAT), ingredientOf(Items.SPRUCE_CHEST_BOAT), + false, "spruce"); + + addBasicWoodSawmillRecipe(output, new ItemStack(Items.BIRCH_PLANKS), + ingredientOf(ItemTags.BIRCH_LOGS), ingredientOf(Items.BIRCH_FENCE), + ingredientOf(Items.BIRCH_FENCE_GATE), ingredientOf(Items.BIRCH_DOOR), + ingredientOf(Items.BIRCH_TRAPDOOR), ingredientOf(Items.BIRCH_PRESSURE_PLATE), + ingredientOf(Items.BIRCH_SIGN), ingredientOf(Items.BIRCH_BOAT), ingredientOf(Items.BIRCH_CHEST_BOAT), + false, "birch"); + + addBasicWoodSawmillRecipe(output, new ItemStack(Items.JUNGLE_PLANKS), + ingredientOf(ItemTags.JUNGLE_LOGS), ingredientOf(Items.JUNGLE_FENCE), + ingredientOf(Items.JUNGLE_FENCE_GATE), ingredientOf(Items.JUNGLE_DOOR), + ingredientOf(Items.JUNGLE_TRAPDOOR), ingredientOf(Items.JUNGLE_PRESSURE_PLATE), + ingredientOf(Items.JUNGLE_SIGN), ingredientOf(Items.JUNGLE_BOAT), ingredientOf(Items.JUNGLE_CHEST_BOAT), + false, "jungle"); + + addBasicWoodSawmillRecipe(output, new ItemStack(Items.ACACIA_PLANKS), + ingredientOf(ItemTags.ACACIA_LOGS), ingredientOf(Items.ACACIA_FENCE), + ingredientOf(Items.ACACIA_FENCE_GATE), ingredientOf(Items.ACACIA_DOOR), + ingredientOf(Items.ACACIA_TRAPDOOR), ingredientOf(Items.ACACIA_PRESSURE_PLATE), + ingredientOf(Items.ACACIA_SIGN), ingredientOf(Items.ACACIA_BOAT), ingredientOf(Items.ACACIA_CHEST_BOAT), + false, "acacia"); + + addBasicWoodSawmillRecipe(output, new ItemStack(Items.DARK_OAK_PLANKS), + ingredientOf(ItemTags.DARK_OAK_LOGS), ingredientOf(Items.DARK_OAK_FENCE), + ingredientOf(Items.DARK_OAK_FENCE_GATE), ingredientOf(Items.DARK_OAK_DOOR), + ingredientOf(Items.DARK_OAK_TRAPDOOR), ingredientOf(Items.DARK_OAK_PRESSURE_PLATE), + ingredientOf(Items.DARK_OAK_SIGN), ingredientOf(Items.DARK_OAK_BOAT), ingredientOf(Items.DARK_OAK_CHEST_BOAT), + false, "dark_oak"); + + addBasicWoodSawmillRecipe(output, new ItemStack(Items.MANGROVE_PLANKS), + ingredientOf(ItemTags.MANGROVE_LOGS), ingredientOf(Items.MANGROVE_FENCE), + ingredientOf(Items.MANGROVE_FENCE_GATE), ingredientOf(Items.MANGROVE_DOOR), + ingredientOf(Items.MANGROVE_TRAPDOOR), ingredientOf(Items.MANGROVE_PRESSURE_PLATE), + ingredientOf(Items.MANGROVE_SIGN), ingredientOf(Items.MANGROVE_BOAT), ingredientOf(Items.MANGROVE_CHEST_BOAT), + false, "mangrove"); + + addBasicWoodSawmillRecipe(output, new ItemStack(Items.CHERRY_PLANKS), + ingredientOf(ItemTags.CHERRY_LOGS), ingredientOf(Items.CHERRY_FENCE), + ingredientOf(Items.CHERRY_FENCE_GATE), ingredientOf(Items.CHERRY_DOOR), + ingredientOf(Items.CHERRY_TRAPDOOR), ingredientOf(Items.CHERRY_PRESSURE_PLATE), + ingredientOf(Items.CHERRY_SIGN), ingredientOf(Items.CHERRY_BOAT), ingredientOf(Items.CHERRY_CHEST_BOAT), + false, "cherry"); + + addSawmillRecipe(output, ingredientOf(ItemTags.BAMBOO_BLOCKS), new ItemStack(Items.BAMBOO_PLANKS, 3), + 1, "bamboo_planks", "bamboo_blocks"); + addBasicWoodWithoutLogsSawmillRecipe(output, new ItemStack(Items.BAMBOO_PLANKS), + ingredientOf(Items.BAMBOO_FENCE), ingredientOf(Items.BAMBOO_FENCE_GATE), ingredientOf(Items.BAMBOO_DOOR), + ingredientOf(Items.BAMBOO_TRAPDOOR), ingredientOf(Items.BAMBOO_PRESSURE_PLATE), + ingredientOf(Items.BAMBOO_SIGN), ingredientOf(Items.BAMBOO_RAFT), ingredientOf(Items.BAMBOO_CHEST_RAFT), + true, "bamboo"); + + addSawmillRecipe(output, ingredientOf(ItemTags.CRIMSON_STEMS), new ItemStack(Items.CRIMSON_PLANKS, 6), + 1, "crimson_planks", "crimson_stems"); + addBasicWoodWithoutLogsAndBoatsSawmillRecipe(output, new ItemStack(Items.CRIMSON_PLANKS), + ingredientOf(Items.CRIMSON_FENCE), ingredientOf(Items.CRIMSON_FENCE_GATE), ingredientOf(Items.CRIMSON_DOOR), + ingredientOf(Items.CRIMSON_TRAPDOOR), ingredientOf(Items.CRIMSON_PRESSURE_PLATE), + ingredientOf(Items.CRIMSON_SIGN), "crimson"); + + addSawmillRecipe(output, ingredientOf(ItemTags.WARPED_STEMS), new ItemStack(Items.WARPED_PLANKS, 6), + 1, "warped_planks", "warped_stems"); + addBasicWoodWithoutLogsAndBoatsSawmillRecipe(output, new ItemStack(Items.WARPED_PLANKS), + ingredientOf(Items.WARPED_FENCE), ingredientOf(Items.WARPED_FENCE_GATE), ingredientOf(Items.WARPED_DOOR), + ingredientOf(Items.WARPED_TRAPDOOR), ingredientOf(Items.WARPED_PRESSURE_PLATE), + ingredientOf(Items.WARPED_SIGN), "warped"); + + addSawmillRecipe(output, ingredientOf(Items.CRAFTING_TABLE), new ItemStack(Items.OAK_PLANKS, 3), + 2, "oak_planks", "crafting_table"); + addSawmillRecipe(output, ingredientOf(Items.CARTOGRAPHY_TABLE), new ItemStack(Items.OAK_PLANKS, 4), + new ItemStack(Items.PAPER, 2), "oak_planks", "cartography_table"); + addSawmillRecipe(output, ingredientOf(Items.FLETCHING_TABLE), new ItemStack(Items.OAK_PLANKS, 4), + new ItemStack(Items.FLINT, 2), "oak_planks", "fletching_table"); + addSawmillRecipe(output, ingredientOf(Items.LOOM), new ItemStack(Items.OAK_PLANKS, 2), + new ItemStack(Items.STRING, 2), "oak_planks", "loom"); + addSawmillRecipe(output, ingredientOf(Items.COMPOSTER), new ItemStack(Items.OAK_PLANKS, 3), + 2, "oak_planks", "composter"); + addSawmillRecipe(output, ingredientOf(Items.NOTE_BLOCK), new ItemStack(Items.OAK_PLANKS, 8), + new ItemStack(Items.REDSTONE), "oak_planks", "note_block"); + addSawmillRecipe(output, ingredientOf(Items.JUKEBOX), new ItemStack(Items.OAK_PLANKS, 8), + new ItemStack(Items.DIAMOND), "oak_planks", "jukebox"); + + addSawmillRecipe(output, ingredientOf(Items.BOOKSHELF), new ItemStack(Items.OAK_PLANKS, 6), + new ItemStack(Items.BOOK, 3), "oak_planks", "bookshelf"); + addSawmillRecipe(output, ingredientOf(Items.CHISELED_BOOKSHELF), new ItemStack(Items.OAK_PLANKS, 6), + 5, "oak_planks", "chiseled_bookshelf"); + addSawmillRecipe(output, ingredientOf(Items.LECTERN), new ItemStack(Items.OAK_PLANKS, 8), + new ItemStack(Items.BOOK, 3), "oak_planks", "lectern"); + + addSawmillRecipe(output, ingredientOf(Items.CHEST), new ItemStack(Items.OAK_PLANKS, 7), + 3, "oak_planks", "chest"); + addSawmillRecipe(output, ingredientOf(Items.BARREL), new ItemStack(Items.OAK_PLANKS, 6), + 5, "oak_planks", "barrel"); + + addSawmillRecipe(output, ingredientOf(Items.WOODEN_SWORD), new ItemStack(Items.OAK_PLANKS, 2), + 1, "oak_planks", "wooden_sword"); + addSawmillRecipe(output, ingredientOf(Items.WOODEN_SHOVEL), new ItemStack(Items.OAK_PLANKS), + 2, "oak_planks", "wooden_shovel"); + addSawmillRecipe(output, ingredientOf(Items.WOODEN_PICKAXE), new ItemStack(Items.OAK_PLANKS, 3), + 2, "oak_planks", "wooden_pickaxe"); + addSawmillRecipe(output, ingredientOf(Items.WOODEN_AXE), new ItemStack(Items.OAK_PLANKS, 3), + 2, "oak_planks", "wooden_axe"); + addSawmillRecipe(output, ingredientOf(Items.WOODEN_HOE), new ItemStack(Items.OAK_PLANKS, 2), + 2, "oak_planks", "wooden_hoe"); + addSawmillRecipe(output, ingredientOf(EPItems.WOODEN_HAMMER.get()), new ItemStack(Items.OAK_PLANKS, 2), + 2, "oak_planks", "wooden_hammer"); + + addSawmillRecipe(output, ingredientOf(ItemTags.PLANKS), new ItemStack(Items.STICK, 3), + 1, "sticks", "planks"); + addSawmillRecipe(output, ingredientOf(Items.BAMBOO_MOSAIC), new ItemStack(Items.STICK, 3), + 3, "sticks", "bamboo_mosaic"); + + addSawmillRecipe(output, ingredientOf(ItemTags.WOODEN_STAIRS), + new ItemStack(Items.STICK, 3), 1, "sticks", "stairs"); + addSawmillRecipe(output, ingredientOf(Items.BAMBOO_MOSAIC_STAIRS), + new ItemStack(Items.STICK, 3), 1, "sticks", "bamboo_mosaic_stairs"); + addSawmillRecipe(output, ingredientOf(ItemTags.WOODEN_SLABS), + new ItemStack(Items.STICK, 1), 1, "sticks", "slabs"); + addSawmillRecipe(output, ingredientOf(Items.BAMBOO_MOSAIC_SLAB), + new ItemStack(Items.STICK, 1), 1, "sticks", "bamboo_mosaic_slabs"); + addSawmillRecipe(output, ingredientOf(ItemTags.WOODEN_BUTTONS), new ItemStack(Items.STICK, 3), + 1, "sticks", "buttons"); + + addSawmillRecipe(output, ingredientOf(Items.LADDER), new ItemStack(Items.STICK, 2), + 1, "sticks", "ladder"); + + addSawmillRecipe(output, ingredientOf(Items.BOWL), new ItemStack(Items.STICK), + 2, "sticks", "bowl"); + addSawmillRecipe(output, ingredientOf(Items.BOW), new ItemStack(Items.STICK, 3), + new ItemStack(Items.STRING, 3), "sticks", "bow"); + addSawmillRecipe(output, ingredientOf(Items.FISHING_ROD), new ItemStack(Items.STICK, 3), + new ItemStack(Items.STRING, 2), "sticks", "fishing_rod"); + + addSawmillRecipe(output, ingredientOf(Tags.Items.RODS_WOODEN), new ItemStack(EPItems.SAWDUST.get()), + 0, "sawdust", "sticks"); + } + + private void buildPlantGrowthChamberRecipes() { + addBasicFlowerGrowingRecipe(output, Items.DANDELION, "dandelions"); + addBasicFlowerGrowingRecipe(output, Items.POPPY, "poppies"); + addBasicFlowerGrowingRecipe(output, Items.BLUE_ORCHID, "blue_orchids"); + addBasicFlowerGrowingRecipe(output, Items.ALLIUM, "alliums"); + addBasicFlowerGrowingRecipe(output, Items.AZURE_BLUET, "azure_bluets"); + addBasicFlowerGrowingRecipe(output, Items.RED_TULIP, "red_tulips"); + addBasicFlowerGrowingRecipe(output, Items.ORANGE_TULIP, "orange_tulips"); + addBasicFlowerGrowingRecipe(output, Items.WHITE_TULIP, "white_tulips"); + addBasicFlowerGrowingRecipe(output, Items.PINK_TULIP, "pink_tulips"); + addBasicFlowerGrowingRecipe(output, Items.OXEYE_DAISY, "oxeye_daisies"); + addBasicFlowerGrowingRecipe(output, Items.CORNFLOWER, "cornflowers"); + addBasicFlowerGrowingRecipe(output, Items.LILY_OF_THE_VALLEY, "lily_of_the_valley"); + + addBasicFlowerGrowingRecipe(output, Items.SUNFLOWER, "sunflowers"); + addBasicFlowerGrowingRecipe(output, Items.LILAC, "lilacs"); + addBasicFlowerGrowingRecipe(output, Items.ROSE_BUSH, "rose_bushes"); + addBasicFlowerGrowingRecipe(output, Items.PEONY, "peonies"); + + addBasicMushroomsGrowingRecipe(output, Items.BROWN_MUSHROOM, "brown_mushrooms"); + addBasicMushroomsGrowingRecipe(output, Items.RED_MUSHROOM, "red_mushrooms"); + + addBasicAncientFlowerGrowingRecipe(output, Items.TORCHFLOWER_SEEDS, Items.TORCHFLOWER, "torchflowers"); + addBasicAncientFlowerGrowingRecipe(output, Items.PITCHER_POD, Items.PITCHER_PLANT, "pitcher_plants"); + + addPlantGrowthChamberRecipe(output, ingredientOf(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(output, ingredientOf(Items.SWEET_BERRIES), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.SWEET_BERRIES), new double[] { + 1., 1., .33, .17 + }) + }, 16000, "sweet_berries", "sweet_berries"); + + addPlantGrowthChamberRecipe(output, ingredientOf(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(output, ingredientOf(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(output, ingredientOf(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(output, ingredientOf(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(output, ingredientOf(Items.CARROT), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.CARROT), new double[] { + 1., .75, .25, .25 + }) + }, 16000, "carrots", "carrot"); + + addPlantGrowthChamberRecipe(output, ingredientOf(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(output, ingredientOf(Items.PUMPKIN_SEEDS), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.PUMPKIN), new double[] { + 1. + }) + }, 16000, "pumpkin", "pumpkin_seeds"); + + addPlantGrowthChamberRecipe(output, ingredientOf(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(output, ingredientOf(Items.BAMBOO), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(Items.BAMBOO), new double[] { + 1., 1., .67, .17 + }) + }, 16000, "bamboo", "bamboo"); + } + + private void buildPlantGrowthChamberFertilizerRecipes() { + addPlantGrowthChamberFertilizerRecipe(output, ingredientOf(Items.BONE_MEAL), + 1.5, 3., "bone_meal"); + + addPlantGrowthChamberFertilizerRecipe(output, ingredientOf(EPItems.BASIC_FERTILIZER.get()), + 2.5, 3.5, "basic_fertilizer"); + + addPlantGrowthChamberFertilizerRecipe(output, ingredientOf(EPItems.GOOD_FERTILIZER.get()), + 3.5, 5., "good_fertilizer"); + + addPlantGrowthChamberFertilizerRecipe(output, ingredientOf(EPItems.ADVANCED_FERTILIZER.get()), + 5., 6.5, "advanced_fertilizer"); + } + + private void buildMetalPressRecipes() { + addGearMetalPressRecipe(output, ingredientOf(CommonItemTags.PLATES_IRON), new ItemStack(EPItems.IRON_GEAR.get())); + + addRodMetalPressRecipe(output, ingredientOf(CommonItemTags.PLATES_IRON), new ItemStack(EPItems.IRON_ROD.get())); + + addWireMetalPressRecipe(output, ingredientOf(CommonItemTags.PLATES_TIN), new ItemStack(EPItems.TIN_WIRE.get())); + addWireMetalPressRecipe(output, ingredientOf(CommonItemTags.PLATES_COPPER), new ItemStack(EPItems.COPPER_WIRE.get())); + addWireMetalPressRecipe(output, ingredientOf(CommonItemTags.PLATES_GOLD), new ItemStack(EPItems.GOLD_WIRE.get())); + + addWireMetalPressRecipe(output, ingredientOf(CommonItemTags.PLATES_ENERGIZED_COPPER), new ItemStack(EPItems.ENERGIZED_COPPER_WIRE.get())); + addWireMetalPressRecipe(output, ingredientOf(CommonItemTags.PLATES_ENERGIZED_GOLD), new ItemStack(EPItems.ENERGIZED_GOLD_WIRE.get())); + } + + private void buildHeatGeneratorRecipes() { + addHeatGeneratorRecipe(output, Fluids.FLOWING_LAVA, 15, "flowing_lava"); + addHeatGeneratorRecipe(output, Fluids.LAVA, 25, "still_lava"); + } + + private void buildThermalGeneratorRecipes() { + addThermalGeneratorRecipe(output, Fluids.LAVA, 20000, "lava"); + } + + private void buildAssemblingMachineRecipes() { + addAssemblingMachineRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(EPItems.BASIC_SOLAR_CELL), 2), + new IngredientWithCount(ingredientOf(CommonItemTags.INGOTS_ENERGIZED_COPPER), 4), + new IngredientWithCount(ingredientOf(CommonItemTags.INGOTS_TIN), 2), + new IngredientWithCount(ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY), 1) + }, new ItemStack(EPItems.ADVANCED_SOLAR_CELL.get())); + + addAssemblingMachineRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(EPItems.ADVANCED_SOLAR_CELL), 2), + new IngredientWithCount(ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), 4), + new IngredientWithCount(ingredientOf(CommonItemTags.SILICON), 2), + new IngredientWithCount(ingredientOf(Tags.Items.DUSTS_REDSTONE), 2) + }, new ItemStack(EPItems.REINFORCED_ADVANCED_SOLAR_CELL.get())); + + addAssemblingMachineRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(EPItems.BASIC_CIRCUIT), 4), + new IngredientWithCount(ingredientOf(CommonItemTags.WIRES_ENERGIZED_COPPER), 4), + new IngredientWithCount(ingredientOf(CommonItemTags.SILICON), 4), + new IngredientWithCount(ingredientOf(Tags.Items.DUSTS_REDSTONE), 2) + }, new ItemStack(EPItems.ADVANCED_CIRCUIT.get())); + + addAssemblingMachineRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(EPItems.ADVANCED_CIRCUIT), 4), + new IngredientWithCount(ingredientOf(CommonItemTags.WIRES_ENERGIZED_GOLD), 6), + new IngredientWithCount(ingredientOf(CommonItemTags.SILICON), 6) + }, new ItemStack(EPItems.PROCESSING_UNIT.get())); + + addAssemblingMachineRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(EPItems.PROCESSING_UNIT), 4), + new IngredientWithCount(ingredientOf(EPItems.TELEPORTER_MATRIX), 4), + new IngredientWithCount(ingredientOf(EPItems.ENERGIZED_CRYSTAL_MATRIX), 2), + new IngredientWithCount(ingredientOf(CommonItemTags.SILICON), 2) + }, new ItemStack(EPItems.TELEPORTER_PROCESSING_UNIT.get())); + + addAssemblingMachineRecipe(output, new IngredientWithCount[] { + new IngredientWithCount(ingredientOf(Tags.Items.GEMS_AMETHYST), 6), + new IngredientWithCount(ingredientOf(Tags.Items.GEMS_DIAMOND), 2), + new IngredientWithCount(ingredientOf(Tags.Items.GEMS_EMERALD), 2), + new IngredientWithCount(ingredientOf(CommonItemTags.INGOTS_REDSTONE_ALLOY)) + }, new ItemStack(EPItems.CRYSTAL_MATRIX.get())); + } + + private void buildStoneSolidifierRecipes() { + addStoneSolidifierRecipe(output, 1000, 50, new ItemStack(Items.STONE)); + + addStoneSolidifierRecipe(output, 50, 50, new ItemStack(Items.COBBLESTONE)); + + addStoneSolidifierRecipe(output, 1000, 150, new ItemStack(Items.DEEPSLATE)); + + addStoneSolidifierRecipe(output, 150, 150, new ItemStack(Items.COBBLED_DEEPSLATE)); + + addStoneSolidifierRecipe(output, 1000, 50, new ItemStack(Items.GRANITE)); + + addStoneSolidifierRecipe(output, 1000, 50, new ItemStack(Items.DIORITE)); + + addStoneSolidifierRecipe(output, 1000, 50, new ItemStack(Items.ANDESITE)); + + addStoneSolidifierRecipe(output, 1000, 250, new ItemStack(Items.BLACKSTONE)); + + addStoneSolidifierRecipe(output, 1000, 1000, new ItemStack(Items.OBSIDIAN)); + } + + private void buildFiltrationPlantRecipes() { + addOreFiltrationRecipe(output, new ItemStack(EPItems.RAW_TIN.get()), 0.05, "tin"); + addOreFiltrationRecipe(output, new ItemStack(Items.RAW_COPPER), 0.05, "copper"); + addOreFiltrationRecipe(output, new ItemStack(Items.RAW_IRON), 0.05, "iron"); + addOreFiltrationRecipe(output, new ItemStack(Items.RAW_GOLD), 0.005, "gold"); + } + + private void buildFluidTransposerRecipes() { + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.WHITE_CONCRETE_POWDER), new ItemStack(Items.WHITE_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.ORANGE_CONCRETE_POWDER), new ItemStack(Items.ORANGE_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.MAGENTA_CONCRETE_POWDER), new ItemStack(Items.MAGENTA_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.LIGHT_BLUE_CONCRETE_POWDER), new ItemStack(Items.LIGHT_BLUE_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.YELLOW_CONCRETE_POWDER), new ItemStack(Items.YELLOW_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.LIME_CONCRETE_POWDER), new ItemStack(Items.LIME_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.PINK_CONCRETE_POWDER), new ItemStack(Items.PINK_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.GRAY_CONCRETE_POWDER), new ItemStack(Items.GRAY_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.LIGHT_GRAY_CONCRETE_POWDER), new ItemStack(Items.LIGHT_GRAY_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.CYAN_CONCRETE_POWDER), new ItemStack(Items.CYAN_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.PURPLE_CONCRETE_POWDER), new ItemStack(Items.PURPLE_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.BLUE_CONCRETE_POWDER), new ItemStack(Items.BLUE_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.BROWN_CONCRETE_POWDER), new ItemStack(Items.BROWN_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.GREEN_CONCRETE_POWDER), new ItemStack(Items.GREEN_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.RED_CONCRETE_POWDER), new ItemStack(Items.RED_CONCRETE)); + addConcreteFluidTransposerRecipe(output, ingredientOf(Items.BLACK_CONCRETE_POWDER), new ItemStack(Items.BLACK_CONCRETE)); + + addFluidTransposerRecipe(output, ingredientOf(Items.SPONGE), new ItemStack(Items.WET_SPONGE), FluidTransposerBlockEntity.Mode.FILLING, + new FluidStack(Fluids.WATER, 1000)); + addFluidTransposerRecipe(output, ingredientOf(Items.WET_SPONGE), new ItemStack(Items.SPONGE), FluidTransposerBlockEntity.Mode.EMPTYING, + new FluidStack(Fluids.WATER, 1000)); + + addFluidTransposerRecipe(output, ingredientOf(Items.DIRT), new ItemStack(Items.MUD), FluidTransposerBlockEntity.Mode.FILLING, + new FluidStack(Fluids.WATER, 250)); + } + + private void buildChargerRecipes() { + addChargerRecipe(output, ingredientOf(Tags.Items.INGOTS_COPPER), + new ItemStack(EPItems.ENERGIZED_COPPER_INGOT.get()), 4194304); + } + + private void buildEnergizerRecipes() { + addEnergizerRecipe(output, ingredientOf(Tags.Items.INGOTS_COPPER), + new ItemStack(EPItems.ENERGIZED_COPPER_INGOT.get()), 32768); + addEnergizerRecipe(output, ingredientOf(Tags.Items.INGOTS_GOLD), + new ItemStack(EPItems.ENERGIZED_GOLD_INGOT.get()), 131072); + addEnergizerRecipe(output, ingredientOf(EPItems.CRYSTAL_MATRIX), + new ItemStack(EPItems.ENERGIZED_CRYSTAL_MATRIX.get()), 524288); + } + + private void buildCrystalGrowthChamberRecipes() { + addCrystalGrowthChamberRecipe(output, ingredientOf(Tags.Items.GEMS_AMETHYST), + new OutputItemStackWithPercentages(new ItemStack(Items.AMETHYST_SHARD), new double[] { + 1., 1., .67, .5, .25, .125 + }), 16000); + addCrystalGrowthChamberRecipe(output, new IngredientWithCount(ingredientOf(Items.AMETHYST_BLOCK), 4), + new OutputItemStackWithPercentages(new ItemStack(Items.BUDDING_AMETHYST), .25), + 32000); + } + + private void add3x3PackingCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + Ingredient unpackedInput, ItemLike packedItem, CraftingBookCategory category, + String group, String recipeIdSuffix) { + addShapedCraftingRecipe(output, hasIngredientTrigger, Map.of( + '#', unpackedInput + ), new String[] { + "###", + "###", + "###" + }, new ItemStack(packedItem), category, group, recipeIdSuffix); + } + private void add3x3UnpackingCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + Ingredient packedInput, ItemLike unpackedItem, CraftingBookCategory category, + String group, String recipeIdSuffix) { + addShapelessCraftingRecipe(output, hasIngredientTrigger, List.of( + packedInput + ), new ItemStack(unpackedItem, 9), category, group, recipeIdSuffix); + } + private void addMetalIngotCraftingRecipes(RecipeOutput output, TagKey nuggetInput, + TagKey blockInput, ItemLike ingotItem, String metalName) { + add3x3PackingCraftingRecipe(output, has(nuggetInput), ingredientOf(nuggetInput), ingotItem, + CraftingBookCategory.MISC, metalName + "_ingot", "_from_nuggets"); + add3x3UnpackingCraftingRecipe(output, has(blockInput), ingredientOf(blockInput), ingotItem, + CraftingBookCategory.MISC, metalName + "_ingot", "_from_" + metalName + "_block"); + } + private void addMetalNuggetCraftingRecipe(RecipeOutput output, TagKey ingotInput, ItemLike nuggetItem) { + addShapelessCraftingRecipe(output, has(ingotInput), List.of( + ingredientOf(ingotInput) + ), new ItemStack(nuggetItem, 9), CraftingBookCategory.MISC); + } + private void addMetalPlateCraftingRecipe(RecipeOutput output, TagKey ingotInput, ItemLike plateItem) { + addShapelessCraftingRecipe(output, has(ingotInput), List.of( + ingredientOf(CommonItemTags.TOOLS_HAMMERS), + ingredientOf(ingotInput) + ), new ItemStack(plateItem), CraftingBookCategory.MISC); + } + private void addMetalWireCraftingRecipe(RecipeOutput output, TagKey plateInput, ItemLike wireItem) { + addShapelessCraftingRecipe(output, has(plateInput), List.of( + ingredientOf(CommonItemTags.TOOLS_CUTTERS), + ingredientOf(plateInput) + ), new ItemStack(wireItem, 2), CraftingBookCategory.MISC); + } + private void addHammerCraftingRecipe(RecipeOutput output, TagKey materialInput, ItemLike hammerItem) { + addShapedCraftingRecipe(output, has(materialInput), Map.of( + 'S', ingredientOf(Tags.Items.RODS_WOODEN), + 'M', ingredientOf(materialInput) + ), new String[] { + " M ", + " SM", + "S " + }, new ItemStack(hammerItem), CraftingBookCategory.MISC); + } + private void addBasicCableCraftingRecipes(RecipeOutput output, TagKey ingotInput, TagKey wireInput, + ItemStack cableItem) { + addCableCraftingRecipe(output, ingotInput, cableItem); + addCableUsingWireCraftingRecipe(output, wireInput, cableItem); + } + private void addCableUsingWireCraftingRecipe(RecipeOutput output, TagKey wireInput, + ItemStack cableItem) { + addShapedCraftingRecipe(output, has(wireInput), Map.of( + 'W', ingredientOf(wireInput), + 'I', ingredientOf(EPItems.CABLE_INSULATOR) + ), new String[] { + "IWI", + "IWI", + "IWI" + }, cableItem, CraftingBookCategory.MISC, getItemName(cableItem.getItem()), "_using_wire"); + } + private void addCableCraftingRecipe(RecipeOutput output, TagKey ingotInput, + ItemStack cableItem) { + addShapedCraftingRecipe(output, has(ingotInput), Map.of( + 'I', ingredientOf(ingotInput), + 'i', ingredientOf(EPItems.CABLE_INSULATOR) + ), new String[] { + "iIi", + "iIi", + "iIi" + }, cableItem, CraftingBookCategory.MISC, getItemName(cableItem.getItem())); + } + private void addShapedCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + Map key, String[] pattern, + ItemStack result, CraftingBookCategory category) { + addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, ""); + } + private void addShapedCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + Map key, String[] pattern, + ItemStack result, CraftingBookCategory category, + String group) { + addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, group, ""); + } + private void addShapedCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + Map key, String[] pattern, + ItemStack result, CraftingBookCategory category, + String group, String recipeIdSuffix) { + addShapedCraftingRecipe(output, hasIngredientTrigger, key, pattern, result, category, group, recipeIdSuffix, ""); + } + private void addShapedCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + Map key, String[] pattern, + ItemStack result, CraftingBookCategory category, + String group, String recipeIdSuffix, String recipeIdPrefix) { + ResourceLocation recipeId = EPAPI.id("crafting/" + + recipeIdPrefix + getItemName(result.getItem()) + recipeIdSuffix); + + Advancement.Builder advancementBuilder = output.advancement() + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(getKey(recipeId))) + .addCriterion("has_the_ingredient", hasIngredientTrigger) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .requirements(AdvancementRequirements.Strategy.OR); + ShapedRecipe recipe = new ShapedRecipe(Objects.requireNonNullElse(group, ""), + category, ShapedRecipePattern.of(key, pattern), result); + output.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); + } + private void addShapelessCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + List inputs, ItemStack result, CraftingBookCategory category) { + addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, ""); + } + private void addShapelessCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + List inputs, ItemStack result, CraftingBookCategory category, + String group) { + addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, group, ""); + } + private void addShapelessCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + List inputs, ItemStack result, CraftingBookCategory category, + String group, String recipeIdSuffix) { + addShapelessCraftingRecipe(output, hasIngredientTrigger, inputs, result, category, group, recipeIdSuffix, ""); + } + private void addShapelessCraftingRecipe(RecipeOutput output, Criterion hasIngredientTrigger, + List inputs, ItemStack result, CraftingBookCategory category, + String group, String recipeIdSuffix, String recipeIdPrefix) { + ResourceLocation recipeId = EPAPI.id("crafting/" + + recipeIdPrefix + getItemName(result.getItem()) + recipeIdSuffix); + + Advancement.Builder advancementBuilder = output.advancement() + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(getKey(recipeId))) + .addCriterion("has_the_ingredient", hasIngredientTrigger) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .requirements(AdvancementRequirements.Strategy.OR); + ShapelessRecipe recipe = new ShapelessRecipe(Objects.requireNonNullElse(group, ""), category, result, + NonNullList.of(null, inputs.toArray(Ingredient[]::new))); + output.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); + } + private void addCustomCraftingRecipe(RecipeOutput output, Function customRecipeFactory, + CraftingBookCategory category, String recipeIdString) { + ResourceLocation recipeId = EPAPI.id("crafting/" + + recipeIdString); + + CustomRecipe recipe = customRecipeFactory.apply(category); + output.accept(getKey(recipeId), recipe, null); + } + + private void addBlastingAndSmeltingRecipes(RecipeOutput output, ItemLike ingredient, ItemStack result, + CookingBookCategory 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 void addBlastingAndSmeltingRecipes(RecipeOutput output, TagKey ingredient, ItemStack result, + CookingBookCategory 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 void addSmeltingRecipe(RecipeOutput output, ItemLike ingredient, ItemStack result, CookingBookCategory category, + int time, float xp, String group) { + ResourceLocation recipeId = EPAPI.id("smelting/" + + getItemName(result.getItem())); + + addSmeltingRecipe(output, ingredient, result, category, time, xp, group, recipeId); + } + private void addSmeltingRecipe(RecipeOutput output, ItemLike ingredient, ItemStack result, CookingBookCategory category, + int time, float xp, String group, String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("smelting/" + + getItemName(result.getItem()) + "_from_smelting_" + recipeIngredientName); + + addSmeltingRecipe(output, ingredient, result, category, time, xp, group, recipeId); + } + private void addSmeltingRecipe(RecipeOutput output, ItemLike ingredient, ItemStack result, CookingBookCategory category, + int time, float xp, String group, ResourceLocation recipeId) { + Advancement.Builder advancementBuilder = output.advancement() + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(getKey(recipeId))) + .addCriterion("has_the_ingredient", has(ingredient)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .requirements(AdvancementRequirements.Strategy.OR); + AbstractCookingRecipe recipe = new SmeltingRecipe(Objects.requireNonNullElse(group, ""), + category, ingredientOf(ingredient), result, xp, time); + output.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); + } + private void addSmeltingRecipe(RecipeOutput output, TagKey ingredient, ItemStack result, CookingBookCategory category, + int time, float xp, String group, String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("smelting/" + + getItemName(result.getItem()) + "_from_smelting_" + recipeIngredientName); + + Advancement.Builder advancementBuilder = output.advancement() + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(getKey(recipeId))) + .addCriterion("has_the_ingredient", has(ingredient)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .requirements(AdvancementRequirements.Strategy.OR); + AbstractCookingRecipe recipe = new SmeltingRecipe(Objects.requireNonNullElse(group, ""), + category, ingredientOf(ingredient), result, xp, time); + output.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); + } + + private void addBlastingRecipe(RecipeOutput output, ItemLike ingredient, ItemStack result, CookingBookCategory category, + int time, float xp, String group, String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("blasting/" + + getItemName(result.getItem()) + "_from_blasting_" + recipeIngredientName); + + Advancement.Builder advancementBuilder = output.advancement() + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(getKey(recipeId))) + .addCriterion("has_the_ingredient", has(ingredient)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .requirements(AdvancementRequirements.Strategy.OR); + AbstractCookingRecipe recipe = new BlastingRecipe(Objects.requireNonNullElse(group, ""), + category, ingredientOf(ingredient), result, xp, time); + output.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); + } + private void addBlastingRecipe(RecipeOutput output, TagKey ingredient, ItemStack result, CookingBookCategory category, + int time, float xp, String group, String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("blasting/" + + getItemName(result.getItem()) + "_from_blasting_" + recipeIngredientName); + + Advancement.Builder advancementBuilder = output.advancement() + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(getKey(recipeId))) + .addCriterion("has_the_ingredient", has(ingredient)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .requirements(AdvancementRequirements.Strategy.OR); + AbstractCookingRecipe recipe = new BlastingRecipe(Objects.requireNonNullElse(group, ""), + category, ingredientOf(ingredient), result, xp, time); + output.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); + } + + private void addNetheriteSmithingUpgradeRecipe(RecipeOutput recipeOutput, Ingredient base, ItemStack output) { + ResourceLocation recipeId = EPAPI.id("smithing/" + + getItemName(output.getItem())); + + Advancement.Builder advancementBuilder = recipeOutput.advancement() + .addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(getKey(recipeId))) + .addCriterion("has_the_ingredient", has(Tags.Items.INGOTS_NETHERITE)) + .rewards(AdvancementRewards.Builder.recipe(getKey(recipeId))) + .requirements(AdvancementRequirements.Strategy.OR); + SmithingTransformRecipe recipe = new SmithingTransformRecipe(Optional.of(ingredientOf(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE)), + Optional.of(base), Optional.of(ingredientOf(Tags.Items.INGOTS_NETHERITE)), output); + recipeOutput.accept(getKey(recipeId), recipe, advancementBuilder.build(recipeId.withPrefix("recipes/"))); + } + + private void addAlloyFurnaceRecipe(RecipeOutput recipeOutput, IngredientWithCount[] inputs, ItemStack output, + int ticks) { + addAlloyFurnaceRecipe(recipeOutput, inputs, output, OutputItemStackWithPercentages.EMPTY, ticks); + } + private void addAlloyFurnaceRecipe(RecipeOutput recipeOutput, IngredientWithCount[] inputs, ItemStack output, + OutputItemStackWithPercentages secondaryOutput, int ticks) { + ResourceLocation recipeId = EPAPI.id("alloy_furnace/" + + getItemName(output.getItem())); + + AlloyFurnaceRecipe recipe = new AlloyFurnaceRecipe(output, secondaryOutput, inputs, ticks); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addPressMoldMakerRecipe(RecipeOutput recipeOutput, int clayCount, ItemStack output) { + ResourceLocation recipeId = EPAPI.id("press_mold_maker/" + + getItemName(output.getItem())); + + PressMoldMakerRecipe recipe = new PressMoldMakerRecipe(output, clayCount); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addPlateCompressorRecipes(RecipeOutput recipeOutput, Ingredient ingotInput, + Ingredient blockInput, ItemStack output, String metalName) { + addPlateCompressorIngotRecipe(recipeOutput, ingotInput, output, metalName); + addCompressorRecipe(recipeOutput, blockInput, output.copyWithCount(9), metalName + "_block"); + } + private void addPlateCompressorIngotRecipe(RecipeOutput recipeOutput, Ingredient ingotInput, + ItemStack output, String metalName) { + addCompressorRecipe(recipeOutput, ingotInput, output, metalName + "_ingot"); + } + private void addCompressorRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, String recipeIngredientName) { + addCompressorRecipe(recipeOutput, new IngredientWithCount(input), output, recipeIngredientName); + } + private void addCompressorRecipe(RecipeOutput recipeOutput, IngredientWithCount input, ItemStack output, + String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("compressing/" + + getItemName(output.getItem()) + "_from_compressing_" + recipeIngredientName); + + CompressorRecipe recipe = new CompressorRecipe(output, input); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addCrusherRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, + String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("crusher/" + + getItemName(output.getItem()) + "_from_crushing_" + recipeIngredientName); + + CrusherRecipe recipe = new CrusherRecipe(output, input); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addBasicMetalPulverizerRecipes(RecipeOutput recipeOutput, Ingredient oreInput, + Ingredient rawMetalInput, Ingredient rawMetalBlockInput, + Ingredient ingotInput, ItemStack output, String metalName) { + addPulverizerRecipe(recipeOutput, oreInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { + 1., 1., .25 + }, new double[] { + 1., 1, .5, .25 + }), metalName + "_ores"); + + addRawMetalAndIngotPulverizerRecipes(recipeOutput, rawMetalInput, rawMetalBlockInput, ingotInput, output, metalName); + } + private void addRawMetalAndIngotPulverizerRecipes(RecipeOutput recipeOutput, + Ingredient rawMetalInput, Ingredient rawMetalBlockInput, + Ingredient ingotInput, ItemStack output, String metalName) { + addPulverizerRecipe(recipeOutput, rawMetalInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, new double[] { + 1., .25 + }, new double[] { + 1., .5 + }), "raw_" + metalName); + + addPulverizerRecipe(recipeOutput, 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(recipeOutput, ingotInput, new PulverizerRecipe.OutputItemStackWithPercentages(output, + 1., 1.), metalName + "_ingots"); + } + private void addPulverizerRecipe(RecipeOutput recipeOutput, Ingredient input, + PulverizerRecipe.OutputItemStackWithPercentages output, + String recipeIngredientName) { + addPulverizerRecipe(recipeOutput, input, output, + new PulverizerRecipe.OutputItemStackWithPercentages(ItemStack.EMPTY, new double[0], new double[0]), recipeIngredientName); + } + private void addPulverizerRecipe(RecipeOutput recipeOutput, Ingredient input, + PulverizerRecipe.OutputItemStackWithPercentages output, + PulverizerRecipe.OutputItemStackWithPercentages secondaryOutput, + String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("pulverizer/" + + getItemName(output.output().getItem()) + "_from_pulverizer_" + recipeIngredientName); + + PulverizerRecipe recipe = new PulverizerRecipe(output, secondaryOutput, input); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addBasicWoodSawmillRecipe(RecipeOutput recipeOutput, 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(recipeOutput, logsInput, planksItem.copyWithCount(6), 1, getItemName(planksItem.getItem()), + woodName + "_logs"); + + addBasicWoodWithoutLogsSawmillRecipe(recipeOutput, planksItem, fenceInput, fenceGateInput, doorInput, trapdoorInput, + pressurePlateInput, signInput, boatInput, chestBoatInput, isRaft, woodName); + } + private void addBasicWoodWithoutLogsSawmillRecipe(RecipeOutput recipeOutput, ItemStack planksItem, + Ingredient fenceInput, Ingredient fenceGateInput, + Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, + Ingredient signInput, Ingredient boatInput, Ingredient chestBoatInput, + boolean isRaft, String woodName) { + addBasicWoodWithoutLogsAndBoatsSawmillRecipe(recipeOutput, planksItem, fenceInput, fenceGateInput, doorInput, + trapdoorInput, pressurePlateInput, signInput, woodName); + + addSawmillRecipe(recipeOutput, boatInput, planksItem.copyWithCount(4), 3, getItemName(planksItem.getItem()), + woodName + (isRaft?"_raft":"_boat")); + addSawmillRecipe(recipeOutput, chestBoatInput, planksItem.copyWithCount(5), 7, getItemName(planksItem.getItem()), + woodName + (isRaft?"_chest_raft":"_chest_boat")); + } + private void addBasicWoodWithoutLogsAndBoatsSawmillRecipe(RecipeOutput recipeOutput, ItemStack planksItem, + Ingredient fenceInput, Ingredient fenceGateInput, + Ingredient doorInput, Ingredient trapdoorInput, Ingredient pressurePlateInput, + Ingredient signInput, String woodName) { + addSawmillRecipe(recipeOutput, fenceInput, planksItem, 2, getItemName(planksItem.getItem()), + woodName + "_fence"); + addSawmillRecipe(recipeOutput, fenceGateInput, planksItem.copyWithCount(2), 3, getItemName(planksItem.getItem()), + woodName + "_fence_gate"); + addSawmillRecipe(recipeOutput, doorInput, planksItem, 3, getItemName(planksItem.getItem()), + woodName + "_door"); + addSawmillRecipe(recipeOutput, trapdoorInput, planksItem.copyWithCount(2), 3, getItemName(planksItem.getItem()), + woodName + "_trapdoor"); + addSawmillRecipe(recipeOutput, pressurePlateInput, planksItem, 2, getItemName(planksItem.getItem()), + woodName + "_pressure_plate"); + addSawmillRecipe(recipeOutput, signInput, planksItem.copyWithCount(2), 1, getItemName(planksItem.getItem()), + woodName + "_sign"); + } + private void addSawmillRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, + int sawdustAmount, String outputName, String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("sawmill/" + + outputName + "_from_sawing_" + recipeIngredientName); + + SawmillRecipe recipe = new SawmillRecipe(output, input, sawdustAmount); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + private void addSawmillRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, + ItemStack secondaryOutput, String outputName, String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("sawmill/" + + outputName + "_from_sawing_" + recipeIngredientName); + + SawmillRecipe recipe = new SawmillRecipe(output, secondaryOutput, input); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addBasicFlowerGrowingRecipe(RecipeOutput recipeOutput, ItemLike flowerItem, + String outputName) { + addPlantGrowthChamberRecipe(recipeOutput, ingredientOf(flowerItem), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(flowerItem), new double[] { + 1., 1., .33 + }) + }, 16000, outputName, getItemName(flowerItem)); + } + private void addBasicMushroomsGrowingRecipe(RecipeOutput recipeOutput, ItemLike mushroomItem, + String outputName) { + addPlantGrowthChamberRecipe(recipeOutput, ingredientOf(mushroomItem), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(mushroomItem), new double[] { + 1., 1., .5, .25 + }) + }, 16000, outputName, getItemName(mushroomItem)); + } + private void addBasicAncientFlowerGrowingRecipe(RecipeOutput recipeOutput, ItemLike seedItem, + ItemLike flowerItem, String outputName) { + addPlantGrowthChamberRecipe(recipeOutput, ingredientOf(seedItem), new OutputItemStackWithPercentages[] { + new OutputItemStackWithPercentages(new ItemStack(seedItem), new double[] { + 1., .33, .15 + }), + new OutputItemStackWithPercentages(new ItemStack(flowerItem), new double[] { + 1., .15 + }) + }, 16000, outputName, getItemName(seedItem)); + } + private void addPlantGrowthChamberRecipe(RecipeOutput recipeOutput, Ingredient input, + OutputItemStackWithPercentages[] outputs, int ticks, + String outputName, String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("growing/" + + outputName + "_from_growing_" + recipeIngredientName); + + PlantGrowthChamberRecipe recipe = new PlantGrowthChamberRecipe(outputs, input, ticks); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addPlantGrowthChamberFertilizerRecipe(RecipeOutput recipeOutput, Ingredient input, + double speedMultiplier, double energyConsumptionMultiplier, + String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("growing/fertilizer/" + + recipeIngredientName); + + PlantGrowthChamberFertilizerRecipe recipe = new PlantGrowthChamberFertilizerRecipe(input, speedMultiplier, + energyConsumptionMultiplier); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addGearMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output) { + addMetalPressRecipe(recipeOutput, new IngredientWithCount(input, 2), output, new ItemStack(EPItems.GEAR_PRESS_MOLD.get())); + } + private void addRodMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output) { + addMetalPressRecipe(recipeOutput, input, output.copyWithCount(2), new ItemStack(EPItems.ROD_PRESS_MOLD.get())); + } + private void addWireMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output) { + addMetalPressRecipe(recipeOutput, input, output.copyWithCount(3), new ItemStack(EPItems.WIRE_PRESS_MOLD.get())); + } + private void addMetalPressRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, + ItemStack pressMold) { + addMetalPressRecipe(recipeOutput, new IngredientWithCount(input), output, pressMold); + } + private void addMetalPressRecipe(RecipeOutput recipeOutput, IngredientWithCount input, ItemStack output, + ItemStack pressMold) { + ResourceLocation recipeId = EPAPI.id("metal_press/" + + getItemName(output.getItem())); + + MetalPressRecipe recipe = new MetalPressRecipe(output, pressMold, input); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addHeatGeneratorRecipe(RecipeOutput recipeOutput, Fluid input, int energyProduction, + String recipeIngredientName) { + addHeatGeneratorRecipe(recipeOutput, new Fluid[] { + input + }, energyProduction, recipeIngredientName); + } + private void addHeatGeneratorRecipe(RecipeOutput recipeOutput, Fluid[] input, int energyProduction, + String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("heat_generator/" + + "energy_production_from_" + recipeIngredientName); + + HeatGeneratorRecipe recipe = new HeatGeneratorRecipe(input, energyProduction); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addThermalGeneratorRecipe(RecipeOutput recipeOutput, Fluid input, int energyProduction, + String recipeIngredientName) { + addThermalGeneratorRecipe(recipeOutput, new Fluid[] { + input + }, energyProduction, recipeIngredientName); + } + private void addThermalGeneratorRecipe(RecipeOutput recipeOutput, Fluid[] input, int energyProduction, + String recipeIngredientName) { + ResourceLocation recipeId = EPAPI.id("thermal_generator/" + + "energy_production_from_" + recipeIngredientName); + + ThermalGeneratorRecipe recipe = new ThermalGeneratorRecipe(input, energyProduction); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addStoneSolidifierRecipe(RecipeOutput recipeOutput, int waterAmount, int lavaAmount, ItemStack output) { + ResourceLocation recipeId = EPAPI.id("stone_solidifier/" + + getItemName(output.getItem())); + + StoneSolidifierRecipe recipe = new StoneSolidifierRecipe(output, waterAmount, lavaAmount); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addAssemblingMachineRecipe(RecipeOutput recipeOutput, IngredientWithCount[] inputs, ItemStack output) { + ResourceLocation recipeId = EPAPI.id("assembling/" + + getItemName(output.getItem())); + + AssemblingMachineRecipe recipe = new AssemblingMachineRecipe(output, inputs); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addOreFiltrationRecipe(RecipeOutput recipeOutput, ItemStack oreOutput, double oreOutputPercentage, + String oreName) { + addFiltrationPlantRecipe(recipeOutput, new OutputItemStackWithPercentages(new ItemStack(EPItems.STONE_PEBBLE.get()), .33), + new OutputItemStackWithPercentages(oreOutput, oreOutputPercentage), BuiltInRegistries.ITEM.getKey(oreOutput.getItem()), + oreName + "_ore_filtration"); + } + private void addFiltrationPlantRecipe(RecipeOutput recipeOutput, OutputItemStackWithPercentages output, + ResourceLocation icon, String recipeName) { + addFiltrationPlantRecipe(recipeOutput, output, OutputItemStackWithPercentages.EMPTY, icon, recipeName); + } + private void addFiltrationPlantRecipe(RecipeOutput recipeOutput, OutputItemStackWithPercentages output, + OutputItemStackWithPercentages secondaryOutput, ResourceLocation icon, + String recipeName) { + ResourceLocation recipeId = EPAPI.id("filtration_plant/" + + recipeName); + + FiltrationPlantRecipe recipe = new FiltrationPlantRecipe(output, secondaryOutput, icon); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addConcreteFluidTransposerRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output) { + addFluidTransposerRecipe(recipeOutput, input, output, FluidTransposerBlockEntity.Mode.FILLING, + new FluidStack(Fluids.WATER, 1000)); + } + private void addFluidTransposerRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, + FluidTransposerBlockEntity.Mode mode, FluidStack fluid) { + ResourceLocation recipeId = EPAPI.id("fluid_transposer/" + + getItemName(output.getItem())); + + FluidTransposerRecipe recipe = new FluidTransposerRecipe(mode, output, input, fluid); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addChargerRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, int energyConsumption) { + ResourceLocation recipeId = EPAPI.id("charger/" + + getItemName(output.getItem())); + + ChargerRecipe recipe = new ChargerRecipe(output, input, energyConsumption); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addEnergizerRecipe(RecipeOutput recipeOutput, Ingredient input, ItemStack output, int energyConsumption) { + ResourceLocation recipeId = EPAPI.id("energizer/" + + getItemName(output.getItem())); + + EnergizerRecipe recipe = new EnergizerRecipe(output, input, energyConsumption); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private void addCrystalGrowthChamberRecipe(RecipeOutput recipeOutput, Ingredient input, OutputItemStackWithPercentages output, + int ticks) { + addCrystalGrowthChamberRecipe(recipeOutput, new IngredientWithCount(input), output, ticks); + } + private void addCrystalGrowthChamberRecipe(RecipeOutput recipeOutput, IngredientWithCount input, OutputItemStackWithPercentages output, + int ticks) { + ResourceLocation recipeId = EPAPI.id("crystal_growing/" + + getItemName(output.output().getItem())); + + CrystalGrowthChamberRecipe recipe = new CrystalGrowthChamberRecipe(output, input, ticks); + recipeOutput.accept(getKey(recipeId), recipe, null); + } + + private Ingredient ingredientOf(ItemLike item) { + return Ingredient.of(item); + } + + private Ingredient ingredientOf(ItemLike... items) { + return Ingredient.of(items); + } + + private Ingredient ingredientOf(TagKey tagKey) { + return Ingredient.of(registries.lookupOrThrow(Registries.ITEM).getOrThrow(tagKey)); + } + + private static ResourceKey> getKey(ResourceLocation recipeId) { + return ResourceKey.create(Registries.RECIPE, recipeId); + } +} diff --git a/src/main/java/me/jddev0/ep/entity/AbstractMinecartBatteryBox.java b/src/main/java/me/jddev0/ep/entity/AbstractMinecartBatteryBox.java index 0ba2a2c84..6ffa27cbb 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.Builder.of(MinecartBatteryBox::new, MobCategory.MISC). sized(.98f, .7f). clientTrackingRange(8). - build(EPAPI.id("battery_box_minecart"). - toString())); + build(ResourceKey.create(Registries.ENTITY_TYPE, EPAPI.id("battery_box_minecart")))); public static final Supplier> ADVANCED_BATTERY_BOX_MINECART = ENTITY_TYPES.register("advanced_battery_box_minecart", () -> EntityType.Builder.of(MinecartAdvancedBatteryBox::new, MobCategory.MISC). sized(.98f, .7f). clientTrackingRange(8). - build(EPAPI.id("advanced_battery_box_minecart"). - toString())); + build(ResourceKey.create(Registries.ENTITY_TYPE, EPAPI.id("advanced_battery_box_minecart")))); public static void register(IEventBus modEventBus) { diff --git a/src/main/java/me/jddev0/ep/fluid/EPFluids.java b/src/main/java/me/jddev0/ep/fluid/EPFluids.java index 3c796671d..56eeb7e29 100644 --- a/src/main/java/me/jddev0/ep/fluid/EPFluids.java +++ b/src/main/java/me/jddev0/ep/fluid/EPFluids.java @@ -7,6 +7,7 @@ import net.minecraft.world.item.BucketItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.LiquidBlock; import net.minecraft.world.level.block.state.BlockBehaviour; @@ -19,6 +20,8 @@ import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; +import java.util.function.Function; + public final class EPFluids { private EPFluids() {} @@ -28,14 +31,23 @@ private EPFluids() {} () -> new BaseFlowingFluid.Source(EPFluids.DIRTY_WATER_PROPS)); public static final DeferredHolder FLOWING_DIRTY_WATER = FLUIDS.register("flowing_dirty_water", () -> new BaseFlowingFluid.Flowing(EPFluids.DIRTY_WATER_PROPS)); - public static final DeferredBlock DIRTY_WATER_BLOCK = EPBlocks.BLOCKS.register("dirty_water", - () -> new LiquidBlock(DIRTY_WATER.get(), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER))); - public static final DeferredItem DIRTY_WATER_BUCKET_ITEM = EPItems.ITEMS.register("dirty_water_bucket", - () -> new BucketItem(DIRTY_WATER.get(), new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1))); + public static final DeferredBlock DIRTY_WATER_BLOCK = createBlock("dirty_water", + props -> new LiquidBlock(DIRTY_WATER.get(), props), BlockBehaviour.Properties.ofFullCopy(Blocks.WATER)); + public static final DeferredItem DIRTY_WATER_BUCKET_ITEM = createItem("dirty_water_bucket", + DIRTY_WATER, new Item.Properties().craftRemainder(Items.BUCKET).stacksTo(1)); private static final BaseFlowingFluid.Properties DIRTY_WATER_PROPS = new BaseFlowingFluid.Properties( EPFluidTypes.DIRTY_WATER_FLUID_TYPE, DIRTY_WATER, FLOWING_DIRTY_WATER ).explosionResistance(100.f).block(DIRTY_WATER_BLOCK).bucket(DIRTY_WATER_BUCKET_ITEM); + private static DeferredBlock createBlock(String name, Function factory, + BlockBehaviour.Properties props) { + return EPBlocks.registerBlock(name, factory, props); + } + + public static DeferredItem createItem(String name, DeferredHolder fluid, Item.Properties props) { + return EPItems.registerItem(name, p -> new BucketItem(fluid.get(), p), props); + } + public static void register(IEventBus modEventBus) { FLUIDS.register(modEventBus); } 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 ca7a82b98..1ac97cb25 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); 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 bb2e72368..8804fc2d8 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); 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 c420185f7..13f68857e 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); 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 35a68ced3..36a94fbc1 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 int energyConsumption; public ChargerEMIRecipe(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); this.input = List.of(EmiIngredient.of(recipe.value().getInput())); this.output = List.of(EmiStack.of(recipe.value().getOutput())); this.energyConsumption = (int)(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 876434dd3..69e55ea1b 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(RecipeHolder recipe) { - this.id = recipe.id(); - this.input = List.of(EmiIngredient.of(recipe.value().getInput(), recipe.value().getInputCount())); + this.id = recipe.id().location(); + 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/CrusherEMIRecipe.java b/src/main/java/me/jddev0/ep/integration/emi/CrusherEMIRecipe.java index 0dec2be14..09c933331 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); this.input = List.of(EmiIngredient.of(recipe.value().getInput())); this.output = List.of(EmiStack.of(recipe.value().getOutput())); } 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 3ab77c550..28a8ebf32 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(RecipeHolder recipe) { - this.id = recipe.id(); - this.input = List.of(EmiIngredient.of(recipe.value().getInput(), recipe.value().getInputCount())); + this.id = recipe.id().location(); + 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 20dae7afd..415ef78a8 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/EnergizedPowerEMIPlugin.java +++ b/src/main/java/me/jddev0/ep/integration/emi/EnergizedPowerEMIPlugin.java @@ -113,6 +113,8 @@ private void registerCategories(EmiRegistry registry) { private void registerRecipes(EmiRegistry registry) { RecipeManager recipeManager = registry.getRecipeManager(); + //TODO fix + /* for(RecipeHolder recipe:recipeManager.getAllRecipesFor(ChargerRecipe.Type.INSTANCE)) registry.addRecipe(new ChargerEMIRecipe(recipe)); @@ -163,7 +165,6 @@ private void registerRecipes(EmiRegistry registry) { for(RecipeHolder recipe:recipeManager.getAllRecipesFor(FluidTransposerRecipe.Type.INSTANCE)) registry.addRecipe(new FluidTransposerEMIRecipe(recipe)); - registry.addRecipe(new DispenserEMIRecipe(new DispenserEMIRecipe.DispenserRecipe( EPAPI.id("dispenser/energizedpower/cable_insulator"), Ingredient.of(Tags.Items.TOOLS_SHEAR), Ingredient.of(ItemTags.WOOL), @@ -172,7 +173,7 @@ private void registerRecipes(EmiRegistry registry) { registry.addRecipe(new InWorldEMIRecipe(new InWorldEMIRecipe.InWorldRecipe( EPAPI.id("in_world_crafting/energizedpower/cable_insulator"), Ingredient.of(Tags.Items.TOOLS_SHEAR), Ingredient.of(ItemTags.WOOL), - new ItemStack(EPItems.CABLE_INSULATOR.get(), 18)))); + new ItemStack(EPItems.CABLE_INSULATOR.get(), 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 b8d578e3f..21f2779bc 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 int energyConsumption; public EnergizerEMIRecipe(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); this.input = List.of(EmiIngredient.of(recipe.value().getInput())); this.output = List.of(EmiStack.of(recipe.value().getOutput())); this.energyConsumption = (int)(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 21e465658..1aeeafbde 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); this.input = List.of(EmiStack.of(EPFluids.DIRTY_WATER.get(), 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 7516b3fd1..89c2ed1f7 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); 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 57d640ae2..df4d36cd9 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/MetalPressEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/MetalPressEMIRecipe.java @@ -27,9 +27,9 @@ public class MetalPressEMIRecipe implements EmiRecipe { private final List output; public MetalPressEMIRecipe(RecipeHolder recipe) { - this.id = recipe.id(); - this.catalysts = List.of(EmiIngredient.of(Ingredient.of(recipe.value().getPressMold()))); - this.input = List.of(EmiIngredient.of(recipe.value().getInput(), recipe.value().getInputCount())); + this.id = recipe.id().location(); + this.catalysts = List.of(EmiIngredient.of(Ingredient.of(recipe.value().getPressMold().getItem()))); + 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 554be8b6d..d5bacacf6 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); 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) { Component oddsText = Component.translatable("recipes.energizedpower.transfer.output_percentages"); if(i >= 4 || i + 4 < outputsWithPercentages.length) { - outputSlot.appendTooltip(Component.translatable(outputsWithPercentages[i].output().getDescriptionId()). + outputSlot.appendTooltip(Component.empty().append(outputsWithPercentages[i].output().getHoverName()). append(Component.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 704eae864..d36f93f66 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); 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 692d84b4e..a50d6b9bd 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); this.input = List.of(EmiIngredient.of(Ingredient.of(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 af70bc690..76c22f347 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); 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 ec599efd6..41ff1e376 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(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); this.input = List.of(EmiIngredient.of(recipe.value().getInput())); EmiStack emiOutputItem = EmiStack.of(recipe.value().getOutput()); 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 9e84dd0c1..7aa94497b 100644 --- a/src/main/java/me/jddev0/ep/integration/emi/StoneSolidifierEMIRecipe.java +++ b/src/main/java/me/jddev0/ep/integration/emi/StoneSolidifierEMIRecipe.java @@ -26,7 +26,7 @@ public class StoneSolidifierEMIRecipe implements EmiRecipe { private final List output; public StoneSolidifierEMIRecipe(RecipeHolder recipe) { - this.id = recipe.id(); + this.id = recipe.id().location(); this.input = List.of( EmiStack.of(Fluids.WATER, recipe.value().getWaterAmount()), EmiStack.of(Fluids.LAVA, recipe.value().getLavaAmount()) diff --git a/src/main/java/me/jddev0/ep/integration/jei/AdvancedAutoCrafterTransferHandler.java b/src/main/java/me/jddev0/ep/integration/jei/AdvancedAutoCrafterTransferHandler.java index cdfe74da6..c85f6bbb8 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/AdvancedAutoCrafterTransferHandler.java +++ b/src/main/java/me/jddev0/ep/integration/jei/AdvancedAutoCrafterTransferHandler.java @@ -48,8 +48,9 @@ public RecipeType> getRecipeType() { @Override public @Nullable IRecipeTransferError transferRecipe(AdvancedAutoCrafterMenu container, RecipeHolder recipe, IRecipeSlotsView recipeSlots, Player player, boolean maxTransfer, boolean doTransfer) { + /*TODO fix if(!recipe.value().canCraftInDimensions(3, 3)) - return helper.createUserErrorWithTooltip(Component.translatable("recipes.energizedpower.transfer.too_large")); + return helper.createUserErrorWithTooltip(Component.translatable("recipes.energizedpower.transfer.too_large"));*/ if(!doTransfer) return null; @@ -61,7 +62,7 @@ public RecipeType> getRecipeType() { for(int i = 0;i < len;i++) itemStacks.add(inputSlots.get(i).getDisplayedItemStack().orElse(ItemStack.EMPTY).copy()); - ModMessages.sendToServer(new SetAdvancedAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getBlockPos(), itemStacks, recipe.id())); + ModMessages.sendToServer(new SetAdvancedAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getBlockPos(), itemStacks, recipe.id().location())); return null; } diff --git a/src/main/java/me/jddev0/ep/integration/jei/AlloyFurnaceCategory.java b/src/main/java/me/jddev0/ep/integration/jei/AlloyFurnaceCategory.java index 9a9ef6a45..9822a4779 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/AlloyFurnaceCategory.java +++ b/src/main/java/me/jddev0/ep/integration/jei/AlloyFurnaceCategory.java @@ -66,10 +66,11 @@ public void setRecipe(IRecipeLayoutBuilder iRecipeLayoutBuilder, RecipeHolder itemStack.copyWithCount(input.count())). - collect(Collectors.toList())); + collect(Collectors.toList()));*/ } ItemStack[] outputEntries = recipe.value().getMaxOutputCounts(); diff --git a/src/main/java/me/jddev0/ep/integration/jei/AssemblingMachineCategory.java b/src/main/java/me/jddev0/ep/integration/jei/AssemblingMachineCategory.java index c695a5872..e59e79737 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/AssemblingMachineCategory.java +++ b/src/main/java/me/jddev0/ep/integration/jei/AssemblingMachineCategory.java @@ -59,10 +59,11 @@ public void setRecipe(IRecipeLayoutBuilder iRecipeLayoutBuilder, RecipeHolder itemStack.copyWithCount(input.count())). - collect(Collectors.toList())); + collect(Collectors.toList()));*/ } iRecipeLayoutBuilder.addSlot(RecipeIngredientRole.OUTPUT, 91, 19).addItemStack(recipe.value().getOutput()); diff --git a/src/main/java/me/jddev0/ep/integration/jei/AutoCrafterTransferHandler.java b/src/main/java/me/jddev0/ep/integration/jei/AutoCrafterTransferHandler.java index 8c7a8010c..ba1766160 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/AutoCrafterTransferHandler.java +++ b/src/main/java/me/jddev0/ep/integration/jei/AutoCrafterTransferHandler.java @@ -48,8 +48,9 @@ public RecipeType> getRecipeType() { @Override public @Nullable IRecipeTransferError transferRecipe(AutoCrafterMenu container, RecipeHolder recipe, IRecipeSlotsView recipeSlots, Player player, boolean maxTransfer, boolean doTransfer) { + /*TODO fix if(!recipe.value().canCraftInDimensions(3, 3)) - return helper.createUserErrorWithTooltip(Component.translatable("recipes.energizedpower.transfer.too_large")); + return helper.createUserErrorWithTooltip(Component.translatable("recipes.energizedpower.transfer.too_large"));*/ if(!doTransfer) return null; @@ -61,7 +62,7 @@ public RecipeType> getRecipeType() { for(int i = 0;i < len;i++) itemStacks.add(inputSlots.get(i).getDisplayedItemStack().orElse(ItemStack.EMPTY).copy()); - ModMessages.sendToServer(new SetAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getBlockPos(), itemStacks, recipe.id())); + ModMessages.sendToServer(new SetAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getBlockPos(), itemStacks, recipe.id().location())); return null; } diff --git a/src/main/java/me/jddev0/ep/integration/jei/CompressorCategory.java b/src/main/java/me/jddev0/ep/integration/jei/CompressorCategory.java index dcb7623be..8f839bd1b 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/CompressorCategory.java +++ b/src/main/java/me/jddev0/ep/integration/jei/CompressorCategory.java @@ -54,10 +54,11 @@ public IDrawable getIcon() { @Override public void setRecipe(IRecipeLayoutBuilder iRecipeLayoutBuilder, RecipeHolder recipe, IFocusGroup iFocusGroup) { + /*TODO fix iRecipeLayoutBuilder.addSlot(RecipeIngredientRole.INPUT, 1, 5).addItemStacks( Arrays.stream(recipe.value().getInput().getItems()). map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). - collect(Collectors.toList())); + collect(Collectors.toList()));*/ iRecipeLayoutBuilder.addSlot(RecipeIngredientRole.OUTPUT, 77, 5).addItemStack(recipe.value().getOutput()); } diff --git a/src/main/java/me/jddev0/ep/integration/jei/CrystalGrowthChamberCategory.java b/src/main/java/me/jddev0/ep/integration/jei/CrystalGrowthChamberCategory.java index b73e61928..f5d621f9a 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/CrystalGrowthChamberCategory.java +++ b/src/main/java/me/jddev0/ep/integration/jei/CrystalGrowthChamberCategory.java @@ -60,10 +60,11 @@ public IDrawable getIcon() { @Override public void setRecipe(IRecipeLayoutBuilder iRecipeLayoutBuilder, RecipeHolder recipe, IFocusGroup iFocusGroup) { + /*TODO fix iRecipeLayoutBuilder.addSlot(RecipeIngredientRole.INPUT, 1, 5).addItemStacks( Arrays.stream(recipe.value().getInput().getItems()). map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). - collect(Collectors.toList())); + collect(Collectors.toList()));*/ iRecipeLayoutBuilder.addSlot(RecipeIngredientRole.OUTPUT, 77, 5).addItemStack(recipe.value().getMaxOutputCount()). addRichTooltipCallback((view, tooltip) -> { diff --git a/src/main/java/me/jddev0/ep/integration/jei/EnergizedPowerJEIPlugin.java b/src/main/java/me/jddev0/ep/integration/jei/EnergizedPowerJEIPlugin.java index c2819c065..4fb77b041 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/EnergizedPowerJEIPlugin.java +++ b/src/main/java/me/jddev0/ep/integration/jei/EnergizedPowerJEIPlugin.java @@ -90,6 +90,7 @@ public void registerRecipeTransferHandlers(IRecipeTransferRegistration registrat @Override public void registerRecipes(IRecipeRegistration registration) { + /*TODO fix RecipeManager recipeManager = Minecraft.getInstance().level.getRecipeManager(); registration.addRecipes(ChargerCategory.TYPE, recipeManager.getAllRecipesFor(ChargerRecipe.Type.INSTANCE)); @@ -118,7 +119,7 @@ public void registerRecipes(IRecipeRegistration registration) { registration.addRecipes(DispenserCategory.TYPE, Arrays.asList( new DispenserCategory.DispenserRecipe(Ingredient.of(Tags.Items.TOOLS_SHEAR), Ingredient.of(ItemTags.WOOL), new ItemStack(EPItems.CABLE_INSULATOR.get(), 18)) - )); + ));*/ } @Override diff --git a/src/main/java/me/jddev0/ep/integration/jei/MetalPressCategory.java b/src/main/java/me/jddev0/ep/integration/jei/MetalPressCategory.java index 2409369e5..b0c64fdee 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/MetalPressCategory.java +++ b/src/main/java/me/jddev0/ep/integration/jei/MetalPressCategory.java @@ -54,10 +54,11 @@ public IDrawable getIcon() { @Override public void setRecipe(IRecipeLayoutBuilder iRecipeLayoutBuilder, RecipeHolder recipe, IFocusGroup iFocusGroup) { + /*TODO fix iRecipeLayoutBuilder.addSlot(RecipeIngredientRole.INPUT, 1, 13).addItemStacks( Arrays.stream(recipe.value().getInput().getItems()). map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). - collect(Collectors.toList())); + collect(Collectors.toList()));*/ iRecipeLayoutBuilder.addSlot(RecipeIngredientRole.CATALYST, 37, 1).addItemStack(recipe.value().getPressMold()); diff --git a/src/main/java/me/jddev0/ep/integration/jei/SelectableRecipeMachineTransferHandler.java b/src/main/java/me/jddev0/ep/integration/jei/SelectableRecipeMachineTransferHandler.java index a181a89d8..588574f27 100644 --- a/src/main/java/me/jddev0/ep/integration/jei/SelectableRecipeMachineTransferHandler.java +++ b/src/main/java/me/jddev0/ep/integration/jei/SelectableRecipeMachineTransferHandler.java @@ -54,7 +54,7 @@ public RecipeType> getRecipeType() { if(!doTransfer) return null; - ModMessages.sendToServer(new SetCurrentRecipeIdC2SPacket(container.getBlockEntity().getBlockPos(), recipe.id())); + ModMessages.sendToServer(new SetCurrentRecipeIdC2SPacket(container.getBlockEntity().getBlockPos(), recipe.id().location())); return null; } 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 37f96279c..31e36ec30 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.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.RecipeHolder; 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 RecipeHolder recipeEntry) || !(recipeEntry.value() instanceof CraftingRecipe recipe)) + if(!(display instanceof SimpleGridMenuDisplay simpleGridMenuDisplay)) return Result.createNotApplicable(); - if(!recipe.canCraftInDimensions(3, 3)) + Optional recipeIdOptional = display.getDisplayLocation(); + if(recipeIdOptional.isEmpty()) + return Result.createNotApplicable(); + + if(simpleGridMenuDisplay.getWidth() > 3 || simpleGridMenuDisplay.getHeight() > 3) return Result.createFailed(Component.translatable("recipes.energizedpower.transfer.too_large")); if(!context.isActuallyCrafting()) @@ -37,26 +40,17 @@ 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.canCraftInDimensions(1, 2) || recipe.canCraftInDimensions(1, 3))) { - //1xX recipe: Add 2nd and 3rd column items - itemStacks.add(ItemStack.EMPTY); - itemStacks.add(ItemStack.EMPTY); - }else if((recipe.canCraftInDimensions(2, 2) || recipe.canCraftInDimensions(2, 3)) && i % 2 == 1) { - //2xX recipe: Add 3rd column item - itemStacks.add(ItemStack.EMPTY); - } } - ModMessages.sendToServer(new SetAdvancedAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getBlockPos(), itemStacks, recipeEntry.id())); + ModMessages.sendToServer(new SetAdvancedAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getBlockPos(), 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 a251112aa..8f89a95cd 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 5d2614ee7..1e6cc17be 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.Arrays; import java.util.List; +import java.util.Optional; public record AdvancedPulverizerDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.PULVERIZER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new AdvancedPulverizerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.PULVERIZER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new AdvancedPulverizerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 43cdaaf21..41a65e87c 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 541d5e80e..e568d827f 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.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record AlloyFurnaceDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.ALLOY_FURNACE_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new AlloyFurnaceDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.ALLOY_FURNACE_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new AlloyFurnaceDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return Arrays.stream(recipe.value().getInputs()).map(input -> - EntryIngredients.ofItemStacks(Arrays.stream(input.input().getItems()). + EntryIngredients.ofItemStacks(input.input().items().stream(). + map(Holder::unwrap). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().lookupOrThrow(Registries.ITEM).getOrThrow(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().location()); + } + + @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 9f7081164..c63be78fd 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 2d3f04ab5..e2e287941 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.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record AssemblingMachineDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.ASSEMBLING_MACHINE_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new AssemblingMachineDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.ASSEMBLING_MACHINE_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new AssemblingMachineDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return Arrays.stream(recipe.value().getInputs()).map(input -> - EntryIngredients.ofItemStacks(Arrays.stream(input.input().getItems()). + EntryIngredients.ofItemStacks(input.input().items().stream(). + map(Holder::unwrap). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().lookupOrThrow(Registries.ITEM).getOrThrow(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().location()); + } + + @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 09bea6457..fb3f3cfca 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.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.RecipeHolder; 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 RecipeHolder recipeEntry) || !(recipeEntry.value() instanceof CraftingRecipe recipe)) + if(!(display instanceof SimpleGridMenuDisplay simpleGridMenuDisplay)) return Result.createNotApplicable(); - if(!recipe.canCraftInDimensions(3, 3)) + Optional recipeIdOptional = display.getDisplayLocation(); + if(recipeIdOptional.isEmpty()) + return Result.createNotApplicable(); + + if(simpleGridMenuDisplay.getWidth() > 3 || simpleGridMenuDisplay.getHeight() > 3) return Result.createFailed(Component.translatable("recipes.energizedpower.transfer.too_large")); if(!context.isActuallyCrafting()) @@ -37,26 +40,17 @@ 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.canCraftInDimensions(1, 2) || recipe.canCraftInDimensions(1, 3))) { - //1xX recipe: Add 2nd and 3rd column items - itemStacks.add(ItemStack.EMPTY); - itemStacks.add(ItemStack.EMPTY); - }else if((recipe.canCraftInDimensions(2, 2) || recipe.canCraftInDimensions(2, 3)) && i % 2 == 1) { - //2xX recipe: Add 3rd column item - itemStacks.add(ItemStack.EMPTY); - } } - ModMessages.sendToServer(new SetAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getBlockPos(), itemStacks, recipeEntry.id())); + ModMessages.sendToServer(new SetAutoCrafterPatternInputSlotsC2SPacket(container.getBlockEntity().getBlockPos(), 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 e5211694d..ac3f54604 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 b62aa3948..ea74ee9b9 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.List; +import java.util.Optional; public record ChargerDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.CHARGER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new ChargerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.CHARGER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new ChargerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 451ca3931..0f091e130 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 115e32dd0..461bc7ad8 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.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeHolder; -import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record CompressorDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.COMPRESSOR_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new CompressorDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.COMPRESSOR_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new CompressorDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( - EntryIngredients.ofItemStacks(Arrays.stream(recipe.value().getInput().getItems()). - map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). + EntryIngredients.ofItemStacks(recipe.value().getInput().input().items().stream(). + map(Holder::unwrap). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().lookupOrThrow(Registries.ITEM).getOrThrow(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().location()); + } + + @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 271c85e4c..c58182a3c 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 853a833b0..34361cfca 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.List; +import java.util.Optional; public record CrusherDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.CRUSHER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new CrusherDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.CRUSHER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new CrusherDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 5dfa4e4cc..818a8a715 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 8df959d14..f571deb5d 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.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeHolder; -import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record CrystalGrowthChamberDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.CRYSTAL_GROWTH_CHAMBER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new CrystalGrowthChamberDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.CRYSTAL_GROWTH_CHAMBER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new CrystalGrowthChamberDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( - EntryIngredients.ofItemStacks(Arrays.stream(recipe.value().getInput().getItems()). - map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). + EntryIngredients.ofItemStacks(recipe.value().getInput().input().items().stream(). + map(Holder::unwrap). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().lookupOrThrow(Registries.ITEM).getOrThrow(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().location()); + } + + @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 9fd088b01..48571910d 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 e216490f8..6b47f4657 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.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.neoforged.neoforge.common.Tags; +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..3e5433547 --- /dev/null +++ b/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIClientPlugin.java @@ -0,0 +1,232 @@ +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.forge.REIPluginClient; +import me.shedaniel.rei.plugin.common.BuiltinPlugin; +import me.shedaniel.rei.plugincompatibilities.api.REIPluginCompatIgnore; +import net.minecraft.client.gui.screens.inventory.DispenserScreen; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.StonecutterRecipe; +import net.neoforged.neoforge.common.Tags; + +@REIPluginClient +@REIPluginCompatIgnore +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(Tags.Items.TOOLS_SHEAR)); + + 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, + StonecutterRecipe.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), + DispenserScreen.class, DispenserDisplay.CATEGORY); + registry.registerContainerClickArea(new Rectangle(115, 16, 54, 54), + DispenserScreen.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 dbfd460f8..0d85a5228 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIPlugin.java +++ b/src/main/java/me/jddev0/ep/integration/rei/EnergizedPowerREIPlugin.java @@ -1,253 +1,59 @@ 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.forge.REIPluginClient; -import me.shedaniel.rei.plugin.common.BuiltinPlugin; +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; +import me.shedaniel.rei.forge.REIPluginCommon; import me.shedaniel.rei.plugincompatibilities.api.REIPluginCompatIgnore; -import net.minecraft.client.gui.screens.inventory.DispenserScreen; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.StonecutterRecipe; -import net.neoforged.neoforge.common.Tags; -@REIPluginClient +@REIPluginCommon @REIPluginCompatIgnore -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.get())); - - registry.addWorkstations(BuiltinPlugin.CRAFTING, EntryStacks.of(EPBlocks.ADVANCED_AUTO_CRAFTER_ITEM.get())); - - registry.addWorkstations(BuiltinPlugin.SMELTING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM.get())); - registry.addWorkstations(BuiltinPlugin.BLASTING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM.get())); - registry.addWorkstations(BuiltinPlugin.SMOKING, EntryStacks.of(EPBlocks.POWERED_FURNACE_ITEM.get())); - - registry.addWorkstations(BuiltinPlugin.SMELTING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM.get())); - registry.addWorkstations(BuiltinPlugin.BLASTING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM.get())); - registry.addWorkstations(BuiltinPlugin.SMOKING, EntryStacks.of(EPBlocks.ADVANCED_POWERED_FURNACE_ITEM.get())); - - registry.addWorkstations(BuiltinPlugin.STONE_CUTTING, EntryStacks.of(EPBlocks.AUTO_STONECUTTER_ITEM.get())); - - registry.addWorkstations(BuiltinPlugin.FUEL, EntryStacks.of(EPBlocks.COAL_ENGINE_ITEM.get())); - - registry.addWorkstations(BuiltinPlugin.FUEL, EntryStacks.of(EPItems.INVENTORY_COAL_ENGINE.get())); - - registry.add(new ChargerCategory()); - registry.addWorkstations(ChargerCategory.CATEGORY, EntryStacks.of(EPBlocks.CHARGER_ITEM.get()), - EntryStacks.of(EPBlocks.ADVANCED_CHARGER_ITEM.get())); - - registry.add(new CrusherCategory()); - registry.addWorkstations(CrusherCategory.CATEGORY, EntryStacks.of(EPBlocks.CRUSHER_ITEM.get()), - EntryStacks.of(EPBlocks.ADVANCED_CRUSHER_ITEM.get())); - - registry.add(new PulverizerCategory()); - registry.addWorkstations(PulverizerCategory.CATEGORY, EntryStacks.of(EPBlocks.PULVERIZER_ITEM.get())); - - registry.add(new AdvancedPulverizerCategory()); - registry.addWorkstations(AdvancedPulverizerCategory.CATEGORY, EntryStacks.of(EPBlocks.ADVANCED_PULVERIZER_ITEM.get())); - - registry.add(new SawmillCategory()); - registry.addWorkstations(SawmillCategory.CATEGORY, EntryStacks.of(EPBlocks.SAWMILL_ITEM.get())); - - registry.add(new CompressorCategory()); - registry.addWorkstations(CompressorCategory.CATEGORY, EntryStacks.of(EPBlocks.COMPRESSOR_ITEM.get())); - - registry.add(new MetalPressCategory()); - registry.addWorkstations(MetalPressCategory.CATEGORY, EntryStacks.of(EPBlocks.METAL_PRESS_ITEM.get())); - - registry.add(new AssemblingMachineCategory()); - registry.addWorkstations(AssemblingMachineCategory.CATEGORY, EntryStacks.of(EPBlocks.ASSEMBLING_MACHINE_ITEM.get())); - - registry.add(new PlantGrowthChamberCategory()); - registry.addWorkstations(PlantGrowthChamberCategory.CATEGORY, EntryStacks.of(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM.get())); - - registry.add(new PlantGrowthChamberFertilizerCategory()); - registry.addWorkstations(PlantGrowthChamberFertilizerCategory.CATEGORY, EntryStacks.of(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM.get())); - - registry.add(new EnergizerCategory()); - registry.addWorkstations(EnergizerCategory.CATEGORY, EntryStacks.of(EPBlocks.ENERGIZER_ITEM.get())); - - registry.add(new CrystalGrowthChamberCategory()); - registry.addWorkstations(CrystalGrowthChamberCategory.CATEGORY, EntryStacks.of(EPBlocks.CRYSTAL_GROWTH_CHAMBER_ITEM.get())); - - registry.add(new PressMoldMakerCategory()); - registry.addWorkstations(PressMoldMakerCategory.CATEGORY, EntryStacks.of(EPBlocks.PRESS_MOLD_MAKER_ITEM.get())); - registry.addWorkstations(PressMoldMakerCategory.CATEGORY, EntryStacks.of(EPBlocks.AUTO_PRESS_MOLD_MAKER_ITEM.get())); - - registry.add(new AlloyFurnaceCategory()); - registry.addWorkstations(AlloyFurnaceCategory.CATEGORY, EntryStacks.of(EPBlocks.ALLOY_FURNACE_ITEM.get())); - registry.addWorkstations(AlloyFurnaceCategory.CATEGORY, EntryStacks.of(EPBlocks.INDUCTION_SMELTER_ITEM.get())); - - registry.add(new StoneSolidifierCategory()); - registry.addWorkstations(StoneSolidifierCategory.CATEGORY, EntryStacks.of(EPBlocks.STONE_SOLIDIFIER_ITEM.get())); - - registry.add(new FiltrationPlantCategory()); - registry.addWorkstations(FiltrationPlantCategory.CATEGORY, EntryStacks.of(EPBlocks.FILTRATION_PLANT_ITEM.get())); - - registry.add(new FluidTransposerCategory()); - registry.addWorkstations(FluidTransposerCategory.CATEGORY, EntryStacks.of(EPBlocks.FLUID_TRANSPOSER_ITEM.get())); - - - registry.add(new InWorldCategory()); - registry.addWorkstations(InWorldCategory.CATEGORY, EntryIngredients.ofItemTag(Tags.Items.TOOLS_SHEAR)); - - 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, - StonecutterRecipe.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.get()).fill(ChargerDisplay::new); + registry.beginRecipeFiller(CrusherRecipe.class).filterType(EPRecipes.CRUSHER_TYPE.get()).fill(CrusherDisplay::new); + registry.beginRecipeFiller(PulverizerRecipe.class).filterType(EPRecipes.PULVERIZER_TYPE.get()).fill(PulverizerDisplay::new); + registry.beginRecipeFiller(PulverizerRecipe.class).filterType(EPRecipes.PULVERIZER_TYPE.get()).fill(AdvancedPulverizerDisplay::new); + registry.beginRecipeFiller(SawmillRecipe.class).filterType(EPRecipes.SAWMILL_TYPE.get()).fill(SawmillDisplay::new); + registry.beginRecipeFiller(CompressorRecipe.class).filterType(EPRecipes.COMPRESSOR_TYPE.get()).fill(CompressorDisplay::new); + registry.beginRecipeFiller(MetalPressRecipe.class).filterType(EPRecipes.METAL_PRESS_TYPE.get()).fill(MetalPressDisplay::new); + registry.beginRecipeFiller(AssemblingMachineRecipe.class).filterType(EPRecipes.ASSEMBLING_MACHINE_TYPE.get()).fill(AssemblingMachineDisplay::new); + registry.beginRecipeFiller(PlantGrowthChamberRecipe.class).filterType(EPRecipes.PLANT_GROWTH_CHAMBER_TYPE.get()).fill(PlantGrowthChamberDisplay::new); + registry.beginRecipeFiller(PlantGrowthChamberFertilizerRecipe.class).filterType(EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_TYPE.get()).fill(PlantGrowthChamberFertilizerDisplay::new); + registry.beginRecipeFiller(EnergizerRecipe.class).filterType(EPRecipes.ENERGIZER_TYPE.get()).fill(EnergizerDisplay::new); + registry.beginRecipeFiller(CrystalGrowthChamberRecipe.class).filterType(EPRecipes.CRYSTAL_GROWTH_CHAMBER_TYPE.get()).fill(CrystalGrowthChamberDisplay::new); + registry.beginRecipeFiller(PressMoldMakerRecipe.class).filterType(EPRecipes.PRESS_MOLD_MAKER_TYPE.get()).fill(PressMoldMakerDisplay::new); + registry.beginRecipeFiller(AlloyFurnaceRecipe.class).filterType(EPRecipes.ALLOY_FURNACE_TYPE.get()).fill(AlloyFurnaceDisplay::new); + registry.beginRecipeFiller(StoneSolidifierRecipe.class).filterType(EPRecipes.STONE_SOLIDIFIER_TYPE.get()).fill(StoneSolidifierDisplay::new); + registry.beginRecipeFiller(FiltrationPlantRecipe.class).filterType(EPRecipes.FILTRATION_PLANT_TYPE.get()).fill(FiltrationPlantDisplay::new); + registry.beginRecipeFiller(FluidTransposerRecipe.class).filterType(EPRecipes.FLUID_TRANSPOSER_TYPE.get()).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), - DispenserScreen.class, DispenserCategory.CATEGORY); - registry.registerContainerClickArea(new Rectangle(115, 16, 54, 54), - DispenserScreen.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 752552175..ae6a8ad22 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 08d136e66..d4a453cee 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.List; +import java.util.Optional; public record EnergizerDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.ENERGIZER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new EnergizerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.ENERGIZER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new EnergizerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 f40c56b2f..02ae71802 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 4be11d3ff..4821bfe7f 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.Arrays; import java.util.List; +import java.util.Optional; public record FiltrationPlantDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.FILTRATION_PLANT_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new FiltrationPlantDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.FILTRATION_PLANT_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new FiltrationPlantDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 3fc9ff1a6..c5996f3a5 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 df4bc8450..b9ffaefab 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.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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import net.neoforged.neoforge.fluids.FluidStack; import java.util.List; +import java.util.Optional; public record FluidTransposerDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.FLUID_TRANSPOSER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new FluidTransposerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.FLUID_TRANSPOSER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new FluidTransposerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 e5c59ab57..b909ef90e 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 3e19ac39b..8657f4eb0 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.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.neoforged.neoforge.common.Tags; +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 068193789..a90ce422c 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 610f25c3c..03d08f5bf 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.core.Holder; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeHolder; -import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; public record MetalPressDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.METAL_PRESS_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new MetalPressDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.METAL_PRESS_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new MetalPressDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( EntryIngredients.of(recipe.value().getPressMold()), - EntryIngredients.ofItemStacks(Arrays.stream(recipe.value().getInput().getItems()). - map(itemStack -> itemStack.copyWithCount(recipe.value().getInputCount())). + EntryIngredients.ofItemStacks(recipe.value().getInput().input().items().stream(). + map(Holder::unwrap). + map(registryKeyItemEither -> registryKeyItemEither.map( + l -> new ItemStack(BasicDisplay.registryAccess().lookupOrThrow(Registries.ITEM).getOrThrow(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().location()); + } + + @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 78c734e09..083e95bb5 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 fffddca72..bd3920cc8 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.Arrays; import java.util.List; +import java.util.Optional; public record PlantGrowthChamberDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.PLANT_GROWTH_CHAMBER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new PlantGrowthChamberDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.PLANT_GROWTH_CHAMBER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new PlantGrowthChamberDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 98319e500..e7eadedbb 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 3992cd451..63496f885 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.List; +import java.util.Optional; public record PlantGrowthChamberFertilizerDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new PlantGrowthChamberFertilizerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new PlantGrowthChamberFertilizerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 cd050bb7b..d03e1387a 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/PressMoldMakerCategory.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; @@ -16,13 +15,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 3590fb18a..38b43c8a6 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.List; +import java.util.Optional; public record PressMoldMakerDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.PRESS_MOLD_MAKER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new PressMoldMakerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.PRESS_MOLD_MAKER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new PressMoldMakerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 41a966ba6..dabe2e682 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 714389c9d..44bf34105 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.Arrays; import java.util.List; +import java.util.Optional; public record PulverizerDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.PULVERIZER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new PulverizerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.PULVERIZER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new PulverizerDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 e66d693e5..732a1cf5a 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 17fdb2e32..b89d5dbaa 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import java.util.List; +import java.util.Optional; public record SawmillDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.SAWMILL_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new SawmillDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.SAWMILL_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new SawmillDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.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().location()); + } + + @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 7a76f2217..9c5dfb751 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.resources.ResourceLocation; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeHolder; + +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 RecipeHolder recipeEntry) || !recipeClass.isAssignableFrom(recipeEntry.value().getClass())) + Optional recipeIdOptional = display.getDisplayLocation(); + if(recipeIdOptional.isEmpty()) return Result.createNotApplicable(); if(!context.isActuallyCrafting()) return Result.createSuccessful().blocksFurtherHandling(); - ModMessages.sendToServer(new SetCurrentRecipeIdC2SPacket(container.getBlockEntity().getBlockPos(), recipeEntry.id())); + ModMessages.sendToServer(new SetCurrentRecipeIdC2SPacket(container.getBlockEntity().getBlockPos(), 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 dcedfe27c..c73909dab 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierCategory.java +++ b/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierCategory.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; @@ -16,13 +15,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 7cc056460..03a863b66 100644 --- a/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierDisplay.java +++ b/src/main/java/me/jddev0/ep/integration/rei/StoneSolidifierDisplay.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.StoneSolidifierRecipe; 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.core.registries.Registries; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.material.Fluids; import java.util.List; +import java.util.Optional; public record StoneSolidifierDisplay(RecipeHolder 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(ResourceLocation.CODEC.fieldOf("recipeId").forGetter(display -> { + return display.recipe.id().location(); + }), EPRecipes.STONE_SOLIDIFIER_SERIALIZER.get().codec().fieldOf("ingredient").forGetter(display -> { + return display.recipe.value(); + })).apply(instance, (recipeId, recipe) -> new StoneSolidifierDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + ))); + }), + StreamCodec.composite( + ResourceLocation.STREAM_CODEC, + display -> display.recipe.id().location(), + EPRecipes.STONE_SOLIDIFIER_SERIALIZER.get().streamCodec(), + display -> display.recipe.value(), + (recipeId, recipe) -> new StoneSolidifierDisplay(new RecipeHolder<>( + ResourceKey.create(Registries.RECIPE, recipeId), recipe + )) + ) + ); + @Override public List getInputEntries() { return List.of( @@ -28,6 +59,16 @@ public List getOutputEntries() { @Override public CategoryIdentifier getCategoryIdentifier() { - return StoneSolidifierCategory.CATEGORY; + return CATEGORY; + } + + @Override + public Optional getDisplayLocation() { + return Optional.of(recipe.id().location()); + } + + @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 1cf90325c..09ca0c8cb 100644 --- a/src/main/java/me/jddev0/ep/item/AdvancedBatteryBoxMinecartItem.java +++ b/src/main/java/me/jddev0/ep/item/AdvancedBatteryBoxMinecartItem.java @@ -44,7 +44,7 @@ public ItemStack execute(BlockSource blockSource, ItemStack itemStack) { double additionalYOffset; if(blockState.is(BlockTags.RAILS)) { - additionalYOffset = railShape.isAscending()?.6:.1; + additionalYOffset = railShape.isSlope()?.6:.1; }else { if(!blockState.isAir() || !level.getBlockState(blockPos.below()).is(BlockTags.RAILS)) return DEFAULT_ITEM_BEHAVIOR.dispense(blockSource, itemStack); @@ -54,7 +54,7 @@ public ItemStack execute(BlockSource blockSource, ItemStack itemStack) { blockStateBelow.getValue(((BaseRailBlock)blockStateBelow.getBlock()).getShapeProperty()): RailShape.NORTH_SOUTH; - additionalYOffset = direction != Direction.DOWN && railShapeBelow.isAscending()?-.4:-.9; + additionalYOffset = direction != Direction.DOWN && railShapeBelow.isSlope()?-.4:-.9; } MinecartAdvancedBatteryBox minecartAdvancedBatteryBox = new MinecartAdvancedBatteryBox(level, xOffset, @@ -101,7 +101,7 @@ public InteractionResult useOn(UseOnContext useOnContext) { RailShape railShape = blockState.getBlock() instanceof BaseRailBlock? ((BaseRailBlock)blockState.getBlock()).getRailDirection(blockState, level, blockPos, null): RailShape.NORTH_SOUTH; - double yOffset = railShape.isAscending()?.5:0.; + double yOffset = railShape.isSlope()?.5:0.; MinecartAdvancedBatteryBox minecartAdvancedBatteryBox = new MinecartAdvancedBatteryBox(level, blockPos.getX() + .5, blockPos.getY() + .0625 + yOffset, blockPos.getZ() + .5); @@ -114,6 +114,6 @@ public InteractionResult useOn(UseOnContext useOnContext) { } itemStack.shrink(1); - return InteractionResult.sidedSuccess(level.isClientSide); + return level.isClientSide?InteractionResult.SUCCESS:InteractionResult.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 207dd1e30..3a8fbd2f2 100644 --- a/src/main/java/me/jddev0/ep/item/BatteryBoxMinecartItem.java +++ b/src/main/java/me/jddev0/ep/item/BatteryBoxMinecartItem.java @@ -45,7 +45,7 @@ public ItemStack execute(BlockSource blockSource, ItemStack itemStack) { double additionalYOffset; if(blockState.is(BlockTags.RAILS)) { - additionalYOffset = railShape.isAscending()?.6:.1; + additionalYOffset = railShape.isSlope()?.6:.1; }else { if(!blockState.isAir() || !level.getBlockState(blockPos.below()).is(BlockTags.RAILS)) return DEFAULT_ITEM_BEHAVIOR.dispense(blockSource, itemStack); @@ -55,7 +55,7 @@ public ItemStack execute(BlockSource blockSource, ItemStack itemStack) { blockStateBelow.getValue(((BaseRailBlock)blockStateBelow.getBlock()).getShapeProperty()): RailShape.NORTH_SOUTH; - additionalYOffset = direction != Direction.DOWN && railShapeBelow.isAscending()?-.4:-.9; + additionalYOffset = direction != Direction.DOWN && railShapeBelow.isSlope()?-.4:-.9; } MinecartBatteryBox minecartBatteryBox = new MinecartBatteryBox(level, xOffset, @@ -102,7 +102,7 @@ public InteractionResult useOn(UseOnContext useOnContext) { RailShape railShape = blockState.getBlock() instanceof BaseRailBlock? ((BaseRailBlock)blockState.getBlock()).getRailDirection(blockState, level, blockPos, null): RailShape.NORTH_SOUTH; - double yOffset = railShape.isAscending()?.5:0.; + double yOffset = railShape.isSlope()?.5:0.; MinecartBatteryBox minecartBatteryBox = new MinecartBatteryBox(level, blockPos.getX() + .5, blockPos.getY() + .0625 + yOffset, blockPos.getZ() + .5); @@ -115,6 +115,6 @@ public InteractionResult useOn(UseOnContext useOnContext) { } itemStack.shrink(1); - return InteractionResult.sidedSuccess(level.isClientSide); + return level.isClientSide?InteractionResult.SUCCESS:InteractionResult.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 a73fde9bf..53fdc8a91 100644 --- a/src/main/java/me/jddev0/ep/item/BatteryItem.java +++ b/src/main/java/me/jddev0/ep/item/BatteryItem.java @@ -18,8 +18,8 @@ public class BatteryItem extends EnergizedPowerEnergyItem { private final Tier tier; - public BatteryItem(Tier tier) { - super(new Item.Properties().stacksTo(1), () -> new ReceiveAndExtractEnergyStorage(0, tier.getCapacity(), tier.getMaxTransfer())); + public BatteryItem(Properties props, Tier tier) { + super(props.stacksTo(1), () -> new ReceiveAndExtractEnergyStorage(0, tier.getCapacity(), 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 922f341fd..5356aacac 100644 --- a/src/main/java/me/jddev0/ep/item/CutterItem.java +++ b/src/main/java/me/jddev0/ep/item/CutterItem.java @@ -1,21 +1,24 @@ package me.jddev0.ep.item; import me.jddev0.ep.block.CableBlock; +import me.jddev0.ep.component.EPDataComponentTypes; import net.minecraft.util.RandomSource; +import net.minecraft.util.Unit; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Tier; -import net.minecraft.world.item.TieredItem; +import net.minecraft.world.item.ToolMaterial; import net.minecraft.world.level.block.state.BlockState; -public class CutterItem extends TieredItem { +public class CutterItem extends Item { private final RandomSource random = RandomSource.create(); - public CutterItem(Tier tier, Properties props) { - super(tier, props.setNoRepair()); + public CutterItem(ToolMaterial tier, Properties props) { + super(props.component(EPDataComponentTypes.NO_REPAIR, Unit.INSTANCE). + durability(tier.durability()).repairable(tier.repairItems()).enchantable(tier.enchantmentValue())); } @Override - public ItemStack getCraftingRemainingItem(ItemStack itemStack) { + public ItemStack getCraftingRemainder(ItemStack itemStack) { ItemStack copy = itemStack.copy(); //TODO fix for durability enchantment -> Get ServerWorld somehow and use instead of if: // "copy.hurtAndBreak(1, null, null, item -> copy.setCount(0));" @@ -29,11 +32,6 @@ public ItemStack getCraftingRemainingItem(ItemStack itemStack) { return copy; } - @Override - public boolean hasCraftingRemainingItem(ItemStack itemStack) { - return true; - } - @Override public float getDestroySpeed(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 1f3379657..f6c3d5445 100644 --- a/src/main/java/me/jddev0/ep/item/EPItems.java +++ b/src/main/java/me/jddev0/ep/item/EPItems.java @@ -1,294 +1,266 @@ package me.jddev0.ep.item; import me.jddev0.ep.api.EPAPI; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; -import net.minecraft.world.item.Tiers; +import net.minecraft.world.item.ToolMaterial; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredItem; import net.neoforged.neoforge.registries.DeferredRegister; +import java.util.function.Function; + public final class EPItems { private EPItems() {} - + + public static DeferredItem registerItem(String name) { + return registerItem(name, Item::new, new Item.Properties()); + } + + public static DeferredItem registerItem(String name, Item.Properties props) { + return registerItem(name, Item::new, props); + } + + public static DeferredItem registerItem(String name, Function factory) { + return registerItem(name, factory, new Item.Properties()); + } + + public static DeferredItem registerItem(String name, Function factory, Item.Properties props) { + ResourceLocation itemId = EPAPI.id(name); + return ITEMS.register(name, () -> factory.apply(props.setId(ResourceKey.create(Registries.ITEM, itemId)))); + } + public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(EPAPI.MOD_ID); - public static final DeferredItem ENERGIZED_COPPER_INGOT = ITEMS.register("energized_copper_ingot", - () -> new Item(new Item.Properties())); - public static final DeferredItem ENERGIZED_GOLD_INGOT = ITEMS.register("energized_gold_ingot", - () -> new Item(new Item.Properties())); - - public static final DeferredItem ENERGIZED_COPPER_PLATE = ITEMS.register("energized_copper_plate", - () -> new Item(new Item.Properties())); - public static final DeferredItem ENERGIZED_GOLD_PLATE = ITEMS.register("energized_gold_plate", - () -> new Item(new Item.Properties())); - - public static final DeferredItem ENERGIZED_COPPER_WIRE = ITEMS.register("energized_copper_wire", - () -> new Item(new Item.Properties())); - public static final DeferredItem ENERGIZED_GOLD_WIRE = ITEMS.register("energized_gold_wire", - () -> new Item(new Item.Properties())); - - public static final DeferredItem SILICON = ITEMS.register("silicon", - () -> new Item(new Item.Properties())); - - public static final DeferredItem STONE_PEBBLE = ITEMS.register("stone_pebble", - () -> new Item(new Item.Properties())); - - public static final DeferredItem RAW_TIN = ITEMS.register("raw_tin", - () -> new Item(new Item.Properties())); - - public static final DeferredItem TIN_DUST = ITEMS.register("tin_dust", - () -> new Item(new Item.Properties())); - public static final DeferredItem COPPER_DUST = ITEMS.register("copper_dust", - () -> new Item(new Item.Properties())); - public static final DeferredItem IRON_DUST = ITEMS.register("iron_dust", - () -> new Item(new Item.Properties())); - public static final DeferredItem GOLD_DUST = ITEMS.register("gold_dust", - () -> new Item(new Item.Properties())); - - public static final DeferredItem TIN_NUGGET = ITEMS.register("tin_nugget", - () -> new Item(new Item.Properties())); - - public static final DeferredItem TIN_INGOT = ITEMS.register("tin_ingot", - () -> new Item(new Item.Properties())); - - public static final DeferredItem TIN_PLATE = ITEMS.register("tin_plate", - () -> new Item(new Item.Properties())); - public static final DeferredItem COPPER_PLATE = ITEMS.register("copper_plate", - () -> new Item(new Item.Properties())); - public static final DeferredItem IRON_PLATE = ITEMS.register("iron_plate", - () -> new Item(new Item.Properties())); - public static final DeferredItem GOLD_PLATE = ITEMS.register("gold_plate", - () -> new Item(new Item.Properties())); - - public static final DeferredItem STEEL_INGOT = ITEMS.register("steel_ingot", - () -> new Item(new Item.Properties())); - - public static final DeferredItem REDSTONE_ALLOY_INGOT = ITEMS.register("redstone_alloy_ingot", - () -> new Item(new Item.Properties())); - - public static final DeferredItem ADVANCED_ALLOY_INGOT = ITEMS.register("advanced_alloy_ingot", - () -> new Item(new Item.Properties())); - - public static final DeferredItem ADVANCED_ALLOY_PLATE = ITEMS.register("advanced_alloy_plate", - () -> new Item(new Item.Properties())); - - public static final DeferredItem IRON_GEAR = ITEMS.register("iron_gear", - () -> new Item(new Item.Properties())); - - public static final DeferredItem IRON_ROD = ITEMS.register("iron_rod", - () -> new Item(new Item.Properties())); - - public static final DeferredItem TIN_WIRE = ITEMS.register("tin_wire", - () -> new Item(new Item.Properties())); - public static final DeferredItem COPPER_WIRE = ITEMS.register("copper_wire", - () -> new Item(new Item.Properties())); - public static final DeferredItem GOLD_WIRE = ITEMS.register("gold_wire", - () -> new Item(new Item.Properties())); - - public static final DeferredItem SAWDUST = ITEMS.register("sawdust", - () -> new Item(new Item.Properties())); - - public static final DeferredItem CHARCOAL_DUST = ITEMS.register("charcoal_dust", - () -> new Item(new Item.Properties())); - - public static final DeferredItem BASIC_FERTILIZER = ITEMS.register("basic_fertilizer", - () -> new Item(new Item.Properties())); - public static final DeferredItem GOOD_FERTILIZER = ITEMS.register("good_fertilizer", - () -> new Item(new Item.Properties())); - public static final DeferredItem ADVANCED_FERTILIZER = ITEMS.register("advanced_fertilizer", - () -> new Item(new Item.Properties())); - - public static final DeferredItem RAW_GEAR_PRESS_MOLD = ITEMS.register("raw_gear_press_mold", - () -> new Item(new Item.Properties())); - public static final DeferredItem RAW_ROD_PRESS_MOLD = ITEMS.register("raw_rod_press_mold", - () -> new Item(new Item.Properties())); - public static final DeferredItem RAW_WIRE_PRESS_MOLD = ITEMS.register("raw_wire_press_mold", - () -> new Item(new Item.Properties())); - - public static final DeferredItem GEAR_PRESS_MOLD = ITEMS.register("gear_press_mold", - () -> new Item(new Item.Properties().durability(2000))); - public static final DeferredItem ROD_PRESS_MOLD = ITEMS.register("rod_press_mold", - () -> new Item(new Item.Properties().durability(2000))); - public static final DeferredItem WIRE_PRESS_MOLD = ITEMS.register("wire_press_mold", - () -> new Item(new Item.Properties().durability(2000))); - - public static final DeferredItem BASIC_SOLAR_CELL = ITEMS.register("basic_solar_cell", - () -> new Item(new Item.Properties())); - public static final DeferredItem ADVANCED_SOLAR_CELL = ITEMS.register("advanced_solar_cell", - () -> new Item(new Item.Properties())); - public static final DeferredItem REINFORCED_ADVANCED_SOLAR_CELL = ITEMS.register("reinforced_advanced_solar_cell", - () -> new Item(new Item.Properties())); - - public static final DeferredItem BASIC_CIRCUIT = ITEMS.register("basic_circuit", - () -> new Item(new Item.Properties())); - public static final DeferredItem ADVANCED_CIRCUIT = ITEMS.register("advanced_circuit", - () -> new Item(new Item.Properties())); - public static final DeferredItem PROCESSING_UNIT = ITEMS.register("processing_unit", - () -> new Item(new Item.Properties())); - - public static final DeferredItem TELEPORTER_MATRIX = ITEMS.register("teleporter_matrix", - () -> new TeleporterMatrixItem(new Item.Properties())); - public static final DeferredItem TELEPORTER_PROCESSING_UNIT = ITEMS.register("teleporter_processing_unit", - () -> new Item(new Item.Properties())); - - public static final DeferredItem BASIC_UPGRADE_MODULE = ITEMS.register("basic_upgrade_module", - () -> new Item(new Item.Properties())); - public static final DeferredItem ADVANCED_UPGRADE_MODULE = ITEMS.register("advanced_upgrade_module", - () -> new Item(new Item.Properties())); - public static final DeferredItem REINFORCED_ADVANCED_UPGRADE_MODULE = ITEMS.register("reinforced_advanced_upgrade_module", - () -> new Item(new Item.Properties())); - - public static final DeferredItem SPEED_UPGRADE_MODULE_1 = ITEMS.register("speed_upgrade_module_1", - () -> new SpeedUpgradeModuleItem(new Item.Properties(), 1)); - public static final DeferredItem SPEED_UPGRADE_MODULE_2 = ITEMS.register("speed_upgrade_module_2", - () -> new SpeedUpgradeModuleItem(new Item.Properties(), 2)); - public static final DeferredItem SPEED_UPGRADE_MODULE_3 = ITEMS.register("speed_upgrade_module_3", - () -> new SpeedUpgradeModuleItem(new Item.Properties(), 3)); - public static final DeferredItem SPEED_UPGRADE_MODULE_4 = ITEMS.register("speed_upgrade_module_4", - () -> new SpeedUpgradeModuleItem(new Item.Properties(), 4)); - public static final DeferredItem SPEED_UPGRADE_MODULE_5 = ITEMS.register("speed_upgrade_module_5", - () -> new SpeedUpgradeModuleItem(new Item.Properties(), 5)); - - public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_1 = ITEMS.register("energy_efficiency_upgrade_module_1", - () -> new EnergyEfficiencyUpgradeModuleItem(new Item.Properties(), 1)); - public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_2 = ITEMS.register("energy_efficiency_upgrade_module_2", - () -> new EnergyEfficiencyUpgradeModuleItem(new Item.Properties(), 2)); - public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_3 = ITEMS.register("energy_efficiency_upgrade_module_3", - () -> new EnergyEfficiencyUpgradeModuleItem(new Item.Properties(), 3)); - public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_4 = ITEMS.register("energy_efficiency_upgrade_module_4", - () -> new EnergyEfficiencyUpgradeModuleItem(new Item.Properties(), 4)); - public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_5 = ITEMS.register("energy_efficiency_upgrade_module_5", - () -> new EnergyEfficiencyUpgradeModuleItem(new Item.Properties(), 5)); - - public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_1 = ITEMS.register("energy_capacity_upgrade_module_1", - () -> new EnergyCapacityUpgradeModuleItem(new Item.Properties(), 1)); - public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_2 = ITEMS.register("energy_capacity_upgrade_module_2", - () -> new EnergyCapacityUpgradeModuleItem(new Item.Properties(), 2)); - public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_3 = ITEMS.register("energy_capacity_upgrade_module_3", - () -> new EnergyCapacityUpgradeModuleItem(new Item.Properties(), 3)); - public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_4 = ITEMS.register("energy_capacity_upgrade_module_4", - () -> new EnergyCapacityUpgradeModuleItem(new Item.Properties(), 4)); - public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_5 = ITEMS.register("energy_capacity_upgrade_module_5", - () -> new EnergyCapacityUpgradeModuleItem(new Item.Properties(), 5)); - - public static final DeferredItem DURATION_UPGRADE_MODULE_1 = ITEMS.register("duration_upgrade_module_1", - () -> new DurationUpgradeModuleItem(new Item.Properties(), 1)); - public static final DeferredItem DURATION_UPGRADE_MODULE_2 = ITEMS.register("duration_upgrade_module_2", - () -> new DurationUpgradeModuleItem(new Item.Properties(), 2)); - public static final DeferredItem DURATION_UPGRADE_MODULE_3 = ITEMS.register("duration_upgrade_module_3", - () -> new DurationUpgradeModuleItem(new Item.Properties(), 3)); - public static final DeferredItem DURATION_UPGRADE_MODULE_4 = ITEMS.register("duration_upgrade_module_4", - () -> new DurationUpgradeModuleItem(new Item.Properties(), 4)); - public static final DeferredItem DURATION_UPGRADE_MODULE_5 = ITEMS.register("duration_upgrade_module_5", - () -> new DurationUpgradeModuleItem(new Item.Properties(), 5)); - public static final DeferredItem DURATION_UPGRADE_MODULE_6 = ITEMS.register("duration_upgrade_module_6", - () -> new DurationUpgradeModuleItem(new Item.Properties(), 6)); - - public static final DeferredItem RANGE_UPGRADE_MODULE_1 = ITEMS.register("range_upgrade_module_1", - () -> new RangeUpgradeModuleItem(new Item.Properties(), 1)); - public static final DeferredItem RANGE_UPGRADE_MODULE_2 = ITEMS.register("range_upgrade_module_2", - () -> new RangeUpgradeModuleItem(new Item.Properties(), 2)); - public static final DeferredItem RANGE_UPGRADE_MODULE_3 = ITEMS.register("range_upgrade_module_3", - () -> new RangeUpgradeModuleItem(new Item.Properties(), 3)); - - public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_1 = ITEMS.register("extraction_depth_upgrade_module_1", - () -> new ExtractionDepthUpgradeModuleItem(new Item.Properties(), 1)); - public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_2 = ITEMS.register("extraction_depth_upgrade_module_2", - () -> new ExtractionDepthUpgradeModuleItem(new Item.Properties(), 2)); - public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_3 = ITEMS.register("extraction_depth_upgrade_module_3", - () -> new ExtractionDepthUpgradeModuleItem(new Item.Properties(), 3)); - public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_4 = ITEMS.register("extraction_depth_upgrade_module_4", - () -> new ExtractionDepthUpgradeModuleItem(new Item.Properties(), 4)); - public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_5 = ITEMS.register("extraction_depth_upgrade_module_5", - () -> new ExtractionDepthUpgradeModuleItem(new Item.Properties(), 5)); - - public static final DeferredItem BLAST_FURNACE_UPGRADE_MODULE = ITEMS.register("blast_furnace_upgrade_module", - () -> new FurnaceModeUpgradeModuleItem(new Item.Properties(), 1)); - public static final DeferredItem SMOKER_UPGRADE_MODULE = ITEMS.register("smoker_upgrade_module", - () -> new FurnaceModeUpgradeModuleItem(new Item.Properties(), 2)); - - public static final DeferredItem MOON_LIGHT_UPGRADE_MODULE_1 = ITEMS.register("moon_light_upgrade_module_1", - () -> new MoonLightUpgradeModuleItem(new Item.Properties(), 1)); - public static final DeferredItem MOON_LIGHT_UPGRADE_MODULE_2 = ITEMS.register("moon_light_upgrade_module_2", - () -> new MoonLightUpgradeModuleItem(new Item.Properties(), 2)); - public static final DeferredItem MOON_LIGHT_UPGRADE_MODULE_3 = ITEMS.register("moon_light_upgrade_module_3", - () -> new MoonLightUpgradeModuleItem(new Item.Properties(), 3)); - - public static final DeferredItem ENERGIZED_POWER_BOOK = ITEMS.register("energized_power_book", - () -> new EnergizedPowerBookItem(new Item.Properties().stacksTo(1))); - - public static final DeferredItem CABLE_INSULATOR = ITEMS.register("cable_insulator", - () -> new CableInsulatorItem(new Item.Properties())); - - public static final DeferredItem CHARCOAL_FILTER = ITEMS.register("charcoal_filter", - () -> new Item(new Item.Properties().durability(200))); - - public static final DeferredItem SAW_BLADE = ITEMS.register("saw_blade", - () -> new Item(new Item.Properties())); - - public static final DeferredItem CRYSTAL_MATRIX = ITEMS.register("crystal_matrix", - () -> new Item(new Item.Properties())); - - public static final DeferredItem ENERGIZED_CRYSTAL_MATRIX = ITEMS.register("energized_crystal_matrix", - () -> new Item(new Item.Properties())); - - public static final DeferredItem INVENTORY_COAL_ENGINE = ITEMS.register("inventory_coal_engine", - () -> new InventoryCoalEngineItem(new Item.Properties().stacksTo(1))); - - public static final DeferredItem INVENTORY_CHARGER = ITEMS.register("inventory_charger", - () -> new InventoryChargerItem(new Item.Properties().stacksTo(1))); - - public static final DeferredItem INVENTORY_TELEPORTER = ITEMS.register("inventory_teleporter", - () -> new InventoryTeleporterItem(new Item.Properties().stacksTo(1))); - - public static final DeferredItem BATTERY_1 = ITEMS.register("battery_1", - () -> new BatteryItem(BatteryItem.Tier.BATTERY_1)); - public static final DeferredItem BATTERY_2 = ITEMS.register("battery_2", - () -> new BatteryItem(BatteryItem.Tier.BATTERY_2)); - public static final DeferredItem BATTERY_3 = ITEMS.register("battery_3", - () -> new BatteryItem(BatteryItem.Tier.BATTERY_3)); - public static final DeferredItem BATTERY_4 = ITEMS.register("battery_4", - () -> new BatteryItem(BatteryItem.Tier.BATTERY_4)); - public static final DeferredItem BATTERY_5 = ITEMS.register("battery_5", - () -> new BatteryItem(BatteryItem.Tier.BATTERY_5)); - public static final DeferredItem BATTERY_6 = ITEMS.register("battery_6", - () -> new BatteryItem(BatteryItem.Tier.BATTERY_6)); - public static final DeferredItem BATTERY_7 = ITEMS.register("battery_7", - () -> new BatteryItem(BatteryItem.Tier.BATTERY_7)); - public static final DeferredItem BATTERY_8 = ITEMS.register("battery_8", - () -> new BatteryItem(BatteryItem.Tier.BATTERY_8)); - public static final DeferredItem CREATIVE_BATTERY = ITEMS.register("creative_battery", - () -> new CreativeBatteryItem(new Item.Properties().stacksTo(1))); - - public static final DeferredItem ENERGY_ANALYZER = ITEMS.register("energy_analyzer", - () -> new EnergyAnalyzerItem(new Item.Properties().stacksTo(1))); - - public static final DeferredItem FLUID_ANALYZER = ITEMS.register("fluid_analyzer", - () -> new FluidAnalyzerItem(new Item.Properties().stacksTo(1))); - - public static final DeferredItem WOODEN_HAMMER = ITEMS.register("wooden_hammer", - () -> new HammerItem(Tiers.WOOD, new Item.Properties())); - public static final DeferredItem STONE_HAMMER = ITEMS.register("stone_hammer", - () -> new HammerItem(Tiers.STONE, new Item.Properties())); - public static final DeferredItem IRON_HAMMER = ITEMS.register("iron_hammer", - () -> new HammerItem(Tiers.IRON, new Item.Properties())); - public static final DeferredItem GOLDEN_HAMMER = ITEMS.register("golden_hammer", - () -> new HammerItem(Tiers.GOLD, new Item.Properties())); - public static final DeferredItem DIAMOND_HAMMER = ITEMS.register("diamond_hammer", - () -> new HammerItem(Tiers.DIAMOND, new Item.Properties())); - public static final DeferredItem NETHERITE_HAMMER = ITEMS.register("netherite_hammer", - () -> new HammerItem(Tiers.NETHERITE, new Item.Properties().fireResistant())); - - public static final DeferredItem CUTTER = ITEMS.register("cutter", - () -> new CutterItem(Tiers.IRON, new Item.Properties())); - - public static final DeferredItem WRENCH = ITEMS.register("wrench", - () -> new WrenchItem(new Item.Properties().stacksTo(1))); - - public static final DeferredItem BATTERY_BOX_MINECART = ITEMS.register("battery_box_minecart", - () -> new BatteryBoxMinecartItem(new Item.Properties().stacksTo(1))); - public static final DeferredItem ADVANCED_BATTERY_BOX_MINECART = ITEMS.register("advanced_battery_box_minecart", - () -> new AdvancedBatteryBoxMinecartItem(new Item.Properties().stacksTo(1))); + public static final DeferredItem ENERGIZED_COPPER_INGOT = registerItem("energized_copper_ingot"); + public static final DeferredItem ENERGIZED_GOLD_INGOT = registerItem("energized_gold_ingot"); + + public static final DeferredItem ENERGIZED_COPPER_PLATE = registerItem("energized_copper_plate"); + public static final DeferredItem ENERGIZED_GOLD_PLATE = registerItem("energized_gold_plate"); + + public static final DeferredItem ENERGIZED_COPPER_WIRE = registerItem("energized_copper_wire"); + public static final DeferredItem ENERGIZED_GOLD_WIRE = registerItem("energized_gold_wire"); + + public static final DeferredItem SILICON = registerItem("silicon"); + + public static final DeferredItem STONE_PEBBLE = registerItem("stone_pebble"); + + public static final DeferredItem RAW_TIN = registerItem("raw_tin"); + + public static final DeferredItem TIN_DUST = registerItem("tin_dust"); + public static final DeferredItem COPPER_DUST = registerItem("copper_dust"); + public static final DeferredItem IRON_DUST = registerItem("iron_dust"); + public static final DeferredItem GOLD_DUST = registerItem("gold_dust"); + + public static final DeferredItem TIN_NUGGET = registerItem("tin_nugget"); + + public static final DeferredItem TIN_INGOT = registerItem("tin_ingot"); + + public static final DeferredItem TIN_PLATE = registerItem("tin_plate"); + public static final DeferredItem COPPER_PLATE = registerItem("copper_plate"); + public static final DeferredItem IRON_PLATE = registerItem("iron_plate"); + public static final DeferredItem GOLD_PLATE = registerItem("gold_plate"); + + public static final DeferredItem STEEL_INGOT = registerItem("steel_ingot"); + + public static final DeferredItem REDSTONE_ALLOY_INGOT = registerItem("redstone_alloy_ingot"); + + public static final DeferredItem ADVANCED_ALLOY_INGOT = registerItem("advanced_alloy_ingot"); + + public static final DeferredItem ADVANCED_ALLOY_PLATE = registerItem("advanced_alloy_plate"); + + public static final DeferredItem IRON_GEAR = registerItem("iron_gear"); + + public static final DeferredItem IRON_ROD = registerItem("iron_rod"); + + public static final DeferredItem TIN_WIRE = registerItem("tin_wire"); + public static final DeferredItem COPPER_WIRE = registerItem("copper_wire"); + public static final DeferredItem GOLD_WIRE = registerItem("gold_wire"); + + public static final DeferredItem SAWDUST = registerItem("sawdust"); + + public static final DeferredItem CHARCOAL_DUST = registerItem("charcoal_dust"); + + public static final DeferredItem BASIC_FERTILIZER = registerItem("basic_fertilizer"); + public static final DeferredItem GOOD_FERTILIZER = registerItem("good_fertilizer"); + public static final DeferredItem ADVANCED_FERTILIZER = registerItem("advanced_fertilizer"); + + public static final DeferredItem RAW_GEAR_PRESS_MOLD = registerItem("raw_gear_press_mold"); + public static final DeferredItem RAW_ROD_PRESS_MOLD = registerItem("raw_rod_press_mold"); + public static final DeferredItem RAW_WIRE_PRESS_MOLD = registerItem("raw_wire_press_mold"); + + public static final DeferredItem GEAR_PRESS_MOLD = registerItem("gear_press_mold", + new Item.Properties().durability(2000)); + public static final DeferredItem ROD_PRESS_MOLD = registerItem("rod_press_mold", + new Item.Properties().durability(2000)); + public static final DeferredItem WIRE_PRESS_MOLD = registerItem("wire_press_mold", + new Item.Properties().durability(2000)); + + public static final DeferredItem BASIC_SOLAR_CELL = registerItem("basic_solar_cell"); + public static final DeferredItem ADVANCED_SOLAR_CELL = registerItem("advanced_solar_cell"); + public static final DeferredItem REINFORCED_ADVANCED_SOLAR_CELL = registerItem("reinforced_advanced_solar_cell"); + + public static final DeferredItem BASIC_CIRCUIT = registerItem("basic_circuit"); + public static final DeferredItem ADVANCED_CIRCUIT = registerItem("advanced_circuit"); + public static final DeferredItem PROCESSING_UNIT = registerItem("processing_unit"); + + public static final DeferredItem TELEPORTER_MATRIX = registerItem("teleporter_matrix", TeleporterMatrixItem::new); + public static final DeferredItem TELEPORTER_PROCESSING_UNIT = registerItem("teleporter_processing_unit"); + + public static final DeferredItem BASIC_UPGRADE_MODULE = registerItem("basic_upgrade_module"); + public static final DeferredItem ADVANCED_UPGRADE_MODULE = registerItem("advanced_upgrade_module"); + public static final DeferredItem REINFORCED_ADVANCED_UPGRADE_MODULE = registerItem("reinforced_advanced_upgrade_module"); + + public static final DeferredItem SPEED_UPGRADE_MODULE_1 = registerItem("speed_upgrade_module_1", + props -> new SpeedUpgradeModuleItem(props, 1)); + public static final DeferredItem SPEED_UPGRADE_MODULE_2 = registerItem("speed_upgrade_module_2", + props -> new SpeedUpgradeModuleItem(props, 2)); + public static final DeferredItem SPEED_UPGRADE_MODULE_3 = registerItem("speed_upgrade_module_3", + props -> new SpeedUpgradeModuleItem(props, 3)); + public static final DeferredItem SPEED_UPGRADE_MODULE_4 = registerItem("speed_upgrade_module_4", + props -> new SpeedUpgradeModuleItem(props, 4)); + public static final DeferredItem SPEED_UPGRADE_MODULE_5 = registerItem("speed_upgrade_module_5", + props -> new SpeedUpgradeModuleItem(props, 5)); + + public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_1 = registerItem("energy_efficiency_upgrade_module_1", + props -> new EnergyEfficiencyUpgradeModuleItem(props, 1)); + public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_2 = registerItem("energy_efficiency_upgrade_module_2", + props -> new EnergyEfficiencyUpgradeModuleItem(props, 2)); + public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_3 = registerItem("energy_efficiency_upgrade_module_3", + props -> new EnergyEfficiencyUpgradeModuleItem(props, 3)); + public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_4 = registerItem("energy_efficiency_upgrade_module_4", + props -> new EnergyEfficiencyUpgradeModuleItem(props, 4)); + public static final DeferredItem ENERGY_EFFICIENCY_UPGRADE_MODULE_5 = registerItem("energy_efficiency_upgrade_module_5", + props -> new EnergyEfficiencyUpgradeModuleItem(props, 5)); + + public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_1 = registerItem("energy_capacity_upgrade_module_1", + props -> new EnergyCapacityUpgradeModuleItem(props, 1)); + public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_2 = registerItem("energy_capacity_upgrade_module_2", + props -> new EnergyCapacityUpgradeModuleItem(props, 2)); + public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_3 = registerItem("energy_capacity_upgrade_module_3", + props -> new EnergyCapacityUpgradeModuleItem(props, 3)); + public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_4 = registerItem("energy_capacity_upgrade_module_4", + props -> new EnergyCapacityUpgradeModuleItem(props, 4)); + public static final DeferredItem ENERGY_CAPACITY_UPGRADE_MODULE_5 = registerItem("energy_capacity_upgrade_module_5", + props -> new EnergyCapacityUpgradeModuleItem(props, 5)); + + public static final DeferredItem DURATION_UPGRADE_MODULE_1 = registerItem("duration_upgrade_module_1", + props -> new DurationUpgradeModuleItem(props, 1)); + public static final DeferredItem DURATION_UPGRADE_MODULE_2 = registerItem("duration_upgrade_module_2", + props -> new DurationUpgradeModuleItem(props, 2)); + public static final DeferredItem DURATION_UPGRADE_MODULE_3 = registerItem("duration_upgrade_module_3", + props -> new DurationUpgradeModuleItem(props, 3)); + public static final DeferredItem DURATION_UPGRADE_MODULE_4 = registerItem("duration_upgrade_module_4", + props -> new DurationUpgradeModuleItem(props, 4)); + public static final DeferredItem DURATION_UPGRADE_MODULE_5 = registerItem("duration_upgrade_module_5", + props -> new DurationUpgradeModuleItem(props, 5)); + public static final DeferredItem DURATION_UPGRADE_MODULE_6 = registerItem("duration_upgrade_module_6", + props -> new DurationUpgradeModuleItem(props, 6)); + + public static final DeferredItem RANGE_UPGRADE_MODULE_1 = registerItem("range_upgrade_module_1", + props -> new RangeUpgradeModuleItem(props, 1)); + public static final DeferredItem RANGE_UPGRADE_MODULE_2 = registerItem("range_upgrade_module_2", + props -> new RangeUpgradeModuleItem(props, 2)); + public static final DeferredItem RANGE_UPGRADE_MODULE_3 = registerItem("range_upgrade_module_3", + props -> new RangeUpgradeModuleItem(props, 3)); + + public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_1 = registerItem("extraction_depth_upgrade_module_1", + props -> new ExtractionDepthUpgradeModuleItem(props, 1)); + public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_2 = registerItem("extraction_depth_upgrade_module_2", + props -> new ExtractionDepthUpgradeModuleItem(props, 2)); + public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_3 = registerItem("extraction_depth_upgrade_module_3", + props -> new ExtractionDepthUpgradeModuleItem(props, 3)); + public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_4 = registerItem("extraction_depth_upgrade_module_4", + props -> new ExtractionDepthUpgradeModuleItem(props, 4)); + public static final DeferredItem EXTRACTION_DEPTH_UPGRADE_MODULE_5 = registerItem("extraction_depth_upgrade_module_5", + props -> new ExtractionDepthUpgradeModuleItem(props, 5)); + + public static final DeferredItem BLAST_FURNACE_UPGRADE_MODULE = registerItem("blast_furnace_upgrade_module", + props -> new FurnaceModeUpgradeModuleItem(props, 1)); + public static final DeferredItem SMOKER_UPGRADE_MODULE = registerItem("smoker_upgrade_module", + props -> new FurnaceModeUpgradeModuleItem(props, 2)); + + public static final DeferredItem MOON_LIGHT_UPGRADE_MODULE_1 = registerItem("moon_light_upgrade_module_1", + props -> new MoonLightUpgradeModuleItem(props, 1)); + public static final DeferredItem MOON_LIGHT_UPGRADE_MODULE_2 = registerItem("moon_light_upgrade_module_2", + props -> new MoonLightUpgradeModuleItem(props, 2)); + public static final DeferredItem MOON_LIGHT_UPGRADE_MODULE_3 = registerItem("moon_light_upgrade_module_3", + props -> new MoonLightUpgradeModuleItem(props, 3)); + + public static final DeferredItem ENERGIZED_POWER_BOOK = registerItem("energized_power_book", + EnergizedPowerBookItem::new, new Item.Properties().stacksTo(1)); + + public static final DeferredItem CABLE_INSULATOR = registerItem("cable_insulator", + CableInsulatorItem::new); + + public static final DeferredItem CHARCOAL_FILTER = registerItem("charcoal_filter", + new Item.Properties().durability(200)); + + public static final DeferredItem SAW_BLADE = registerItem("saw_blade"); + + public static final DeferredItem CRYSTAL_MATRIX = registerItem("crystal_matrix"); + + public static final DeferredItem ENERGIZED_CRYSTAL_MATRIX = registerItem("energized_crystal_matrix"); + + public static final DeferredItem INVENTORY_COAL_ENGINE = registerItem("inventory_coal_engine", + InventoryCoalEngineItem::new, new Item.Properties().stacksTo(1)); + + public static final DeferredItem INVENTORY_CHARGER = registerItem("inventory_charger", + InventoryChargerItem::new, new Item.Properties().stacksTo(1)); + + public static final DeferredItem INVENTORY_TELEPORTER = registerItem("inventory_teleporter", + InventoryTeleporterItem::new, new Item.Properties().stacksTo(1)); + + public static final DeferredItem BATTERY_1 = registerItem("battery_1", + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_1)); + public static final DeferredItem BATTERY_2 = registerItem("battery_2", + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_2)); + public static final DeferredItem BATTERY_3 = registerItem("battery_3", + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_3)); + public static final DeferredItem BATTERY_4 = registerItem("battery_4", + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_4)); + public static final DeferredItem BATTERY_5 = registerItem("battery_5", + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_5)); + public static final DeferredItem BATTERY_6 = registerItem("battery_6", + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_6)); + public static final DeferredItem BATTERY_7 = registerItem("battery_7", + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_7)); + public static final DeferredItem BATTERY_8 = registerItem("battery_8", + props -> new BatteryItem(props, BatteryItem.Tier.BATTERY_8)); + public static final DeferredItem CREATIVE_BATTERY = registerItem("creative_battery", + CreativeBatteryItem::new, new Item.Properties().stacksTo(1)); + + public static final DeferredItem ENERGY_ANALYZER = registerItem("energy_analyzer", + EnergyAnalyzerItem::new, new Item.Properties().stacksTo(1)); + + public static final DeferredItem FLUID_ANALYZER = registerItem("fluid_analyzer", + FluidAnalyzerItem::new, new Item.Properties().stacksTo(1)); + + public static final DeferredItem WOODEN_HAMMER = registerItem("wooden_hammer", + props -> new HammerItem(ToolMaterial.WOOD, props)); + public static final DeferredItem STONE_HAMMER = registerItem("stone_hammer", + props -> new HammerItem(ToolMaterial.STONE, props)); + public static final DeferredItem IRON_HAMMER = registerItem("iron_hammer", + props -> new HammerItem(ToolMaterial.IRON, props)); + public static final DeferredItem GOLDEN_HAMMER = registerItem("golden_hammer", + props -> new HammerItem(ToolMaterial.GOLD, props)); + public static final DeferredItem DIAMOND_HAMMER = registerItem("diamond_hammer", + props -> new HammerItem(ToolMaterial.DIAMOND, props)); + public static final DeferredItem NETHERITE_HAMMER = registerItem("netherite_hammer", + props -> new HammerItem(ToolMaterial.NETHERITE, props), new Item.Properties().fireResistant()); + + public static final DeferredItem CUTTER = registerItem("cutter", + props -> new CutterItem(ToolMaterial.IRON, props)); + + public static final DeferredItem WRENCH = registerItem("wrench", + WrenchItem::new, new Item.Properties().stacksTo(1)); + + public static final DeferredItem BATTERY_BOX_MINECART = registerItem("battery_box_minecart", + BatteryBoxMinecartItem::new, new Item.Properties().stacksTo(1)); + public static final DeferredItem ADVANCED_BATTERY_BOX_MINECART = registerItem("advanced_battery_box_minecart", + AdvancedBatteryBoxMinecartItem::new, new Item.Properties().stacksTo(1)); public static void register(IEventBus modEventBus) { ITEMS.register(modEventBus); diff --git a/src/main/java/me/jddev0/ep/item/EnergizedPowerBookItem.java b/src/main/java/me/jddev0/ep/item/EnergizedPowerBookItem.java index cd4db85cc..b75e993ec 100644 --- a/src/main/java/me/jddev0/ep/item/EnergizedPowerBookItem.java +++ b/src/main/java/me/jddev0/ep/item/EnergizedPowerBookItem.java @@ -9,14 +9,13 @@ import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; -import org.jetbrains.annotations.Nullable; import java.util.List; @@ -39,13 +38,13 @@ public void appendHoverText(ItemStack itemStack, TooltipContext context, List use(Level level, Player player, InteractionHand interactionHand) { + public InteractionResult use(Level level, Player player, InteractionHand interactionHand) { ItemStack itemStack = player.getItemInHand(interactionHand); if(level.isClientSide) showBookViewScreen(null); - return InteractionResultHolder.sidedSuccess(itemStack, level.isClientSide()); + return (level.isClientSide()?InteractionResult.SUCCESS:InteractionResult.SUCCESS_SERVER).heldItemTransformedTo(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 5f18d2465..aedca3a01 100644 --- a/src/main/java/me/jddev0/ep/item/EnergyAnalyzerItem.java +++ b/src/main/java/me/jddev0/ep/item/EnergyAnalyzerItem.java @@ -48,8 +48,8 @@ private void useItem(ItemStack itemStack, Player player, List lines) setEnergy(itemStack, getEnergy(itemStack) - ENERGY_CONSUMPTION_PER_USE); for(Component component:lines) - player.sendSystemMessage(component); - player.sendSystemMessage(Component.empty()); + player.displayClientMessage(component, false); + player.displayClientMessage(Component.empty(), false); } private void addOutputTextForEnergyStorage(List components, @Nullable IEnergyStorage 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 9a11a63d9..b8211d791 100644 --- a/src/main/java/me/jddev0/ep/item/FluidAnalyzerItem.java +++ b/src/main/java/me/jddev0/ep/item/FluidAnalyzerItem.java @@ -49,8 +49,8 @@ private void useItem(ItemStack itemStack, Player player, List lines) setEnergy(itemStack, getEnergy(itemStack) - ENERGY_CONSUMPTION_PER_USE); for(Component component:lines) - player.sendSystemMessage(component); - player.sendSystemMessage(Component.empty()); + player.displayClientMessage(component, false); + player.displayClientMessage(Component.empty(), false); } private void addOutputTextForFluidStorage(List components, @Nullable IFluidHandler 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 d8f1e4416..3abd1a49b 100644 --- a/src/main/java/me/jddev0/ep/item/HammerItem.java +++ b/src/main/java/me/jddev0/ep/item/HammerItem.java @@ -1,17 +1,20 @@ package me.jddev0.ep.item; +import me.jddev0.ep.component.EPDataComponentTypes; import net.minecraft.util.RandomSource; +import net.minecraft.util.Unit; import net.minecraft.world.item.*; -public class HammerItem extends TieredItem { +public class HammerItem extends Item { private final RandomSource random = RandomSource.create(); - public HammerItem(Tier tier, Item.Properties props) { - super(tier, props.setNoRepair()); + public HammerItem(ToolMaterial tier, Properties props) { + super(props.component(EPDataComponentTypes.NO_REPAIR, Unit.INSTANCE). + durability(tier.durability()).repairable(tier.repairItems()).enchantable(tier.enchantmentValue())); } @Override - public ItemStack getCraftingRemainingItem(ItemStack itemStack) { + public ItemStack getCraftingRemainder(ItemStack itemStack) { ItemStack copy = itemStack.copy(); //TODO fix for durability enchantment -> Get ServerWorld somehow and use instead of if: // "copy.hurtAndBreak(1, null, null, item -> copy.setCount(0));" @@ -24,9 +27,4 @@ public ItemStack getCraftingRemainingItem(ItemStack itemStack) { return copy; } - - @Override - public boolean hasCraftingRemainingItem(ItemStack itemStack) { - 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 60ac397f9..ab2a147b6 100644 --- a/src/main/java/me/jddev0/ep/item/InventoryChargerItem.java +++ b/src/main/java/me/jddev0/ep/item/InventoryChargerItem.java @@ -39,18 +39,18 @@ public InventoryChargerItem(Properties props) { } @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand interactionHand) { + public InteractionResult use(Level level, Player player, InteractionHand interactionHand) { ItemStack itemStack = player.getItemInHand(interactionHand); if(interactionHand == InteractionHand.OFF_HAND) - return InteractionResultHolder.pass(itemStack); + return InteractionResult.PASS; if(level.isClientSide) - return InteractionResultHolder.success(itemStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemStack); player.openMenu(this); - return InteractionResultHolder.success(itemStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(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 cbb183a3d..7481e4b1a 100644 --- a/src/main/java/me/jddev0/ep/item/InventoryCoalEngineItem.java +++ b/src/main/java/me/jddev0/ep/item/InventoryCoalEngineItem.java @@ -11,7 +11,7 @@ import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -196,7 +196,7 @@ public void inventoryTick(ItemStack itemStack, Level level, Entity entity, int s continue; ItemStack testItemStack = inventory.getItem(i); - int energyProduction = testItemStack.getBurnTime(null); + int energyProduction = testItemStack.getBurnTime(null, level.fuelValues()); if(energyProduction <= 0) continue; @@ -216,8 +216,8 @@ public void inventoryTick(ItemStack itemStack, Level level, Entity entity, int s newItemStack.shrink(1); inventory.setItem(i, newItemStack); - if(testItemStack.hasCraftingRemainingItem()) { - ItemStack craftingRemainingItem = testItemStack.getCraftingRemainingItem(); + if(!testItemStack.getCraftingRemainder().isEmpty()) { + ItemStack craftingRemainingItem = testItemStack.getCraftingRemainder(); if(inventory.add(craftingRemainingItem)) player.drop(craftingRemainingItem, false); @@ -228,15 +228,15 @@ public void inventoryTick(ItemStack itemStack, Level level, Entity entity, int s } @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand interactionHand) { + public InteractionResult use(Level level, Player player, InteractionHand interactionHand) { ItemStack itemStack = player.getItemInHand(interactionHand); if(level.isClientSide) - return InteractionResultHolder.sidedSuccess(itemStack, level.isClientSide()); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemStack); itemStack.set(EPDataComponentTypes.ACTIVE, !isActive(itemStack)); - return InteractionResultHolder.sidedSuccess(itemStack, level.isClientSide()); + return InteractionResult.SUCCESS.heldItemTransformedTo(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 7d27f287c..d0dff8b5a 100644 --- a/src/main/java/me/jddev0/ep/item/InventoryTeleporterItem.java +++ b/src/main/java/me/jddev0/ep/item/InventoryTeleporterItem.java @@ -36,21 +36,21 @@ public InventoryTeleporterItem(Properties props) { } @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand interactionHand) { + public InteractionResult use(Level level, Player player, InteractionHand interactionHand) { ItemStack itemStack = player.getItemInHand(interactionHand); if(interactionHand == InteractionHand.OFF_HAND) - return InteractionResultHolder.pass(itemStack); + return InteractionResult.PASS; if(level.isClientSide || !(player instanceof ServerPlayer serverPlayer)) - return InteractionResultHolder.success(itemStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemStack); if(player.isShiftKeyDown()) player.openMenu(this); else teleportPlayer(itemStack, serverPlayer); - return InteractionResultHolder.success(itemStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(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 f106d649b..1508eaf02 100644 --- a/src/main/java/me/jddev0/ep/item/TeleporterMatrixItem.java +++ b/src/main/java/me/jddev0/ep/item/TeleporterMatrixItem.java @@ -14,7 +14,6 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -100,11 +99,11 @@ public InteractionResult useOn(UseOnContext useOnContext) { } @Override - public InteractionResultHolder use(Level level, Player player, InteractionHand interactionHand) { + public InteractionResult use(Level level, Player player, InteractionHand interactionHand) { ItemStack itemStack = player.getItemInHand(interactionHand); if(level.isClientSide) - return InteractionResultHolder.success(itemStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemStack); if(itemStack.has(EPDataComponentTypes.DIMENSIONAL_POSITION)) itemStack.remove(EPDataComponentTypes.DIMENSIONAL_POSITION); @@ -116,7 +115,7 @@ public InteractionResultHolder use(Level level, Player player, Intera )); } - return InteractionResultHolder.success(itemStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemStack); } @Override @@ -151,7 +150,7 @@ public void appendHoverText(ItemStack itemStack, TooltipContext context, List use(Level level, Player player, InteractionHand interactionHand) { + public InteractionResult use(Level level, Player player, InteractionHand interactionHand) { ItemStack itemStack = player.getItemInHand(interactionHand); if(level.isClientSide) - return InteractionResultHolder.success(itemStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(itemStack); cycleCurrentFace(itemStack, (ServerPlayer)player); - return InteractionResultHolder.success(itemStack); + return InteractionResult.SUCCESS.heldItemTransformedTo(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 f28701dae..4f16ea9f8 100644 --- a/src/main/java/me/jddev0/ep/loading/EnergizedPowerBookReloadListener.java +++ b/src/main/java/me/jddev0/ep/loading/EnergizedPowerBookReloadListener.java @@ -1,7 +1,12 @@ package me.jddev0.ep.loading; 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.screen.EnergizedPowerBookScreen; import net.minecraft.core.HolderLookup; import net.minecraft.core.Registry; @@ -19,18 +24,28 @@ import java.util.stream.Stream; @OnlyIn(Dist.CLIENT) -public class EnergizedPowerBookReloadListener extends SimpleJsonResourceReloadListener { +public class EnergizedPowerBookReloadListener extends SimpleJsonResourceReloadListener { private static final Logger LOGGER = LogUtils.getLogger(); 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 protected void apply(Map elements, ResourceManager resourceManager, ProfilerFiller profilerFiller) { HolderLookup.Provider registries = new HolderLookup.Provider() { @Override - public Stream>> listRegistries() { + public Stream>> listRegistryKeys() { return Stream.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..a52951f8d --- /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.world.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 = "checkInsideBlocks", at = @At("HEAD")) + private List copyQueuedCollisionChecks(List queuedCollisionChecks) { + //Fixes ConcurrentModificationException thrown in "Entity.checkInsideBlocks()" if Teleporter or Inventory Teleporter is used + return new ArrayList<>(queuedCollisionChecks); + } +} diff --git a/src/main/java/me/jddev0/ep/mixin/recipe/RepairItemRecipeMixin.java b/src/main/java/me/jddev0/ep/mixin/recipe/RepairItemRecipeMixin.java new file mode 100644 index 000000000..a473c06f5 --- /dev/null +++ b/src/main/java/me/jddev0/ep/mixin/recipe/RepairItemRecipeMixin.java @@ -0,0 +1,18 @@ +package me.jddev0.ep.mixin.recipe; + +import me.jddev0.ep.component.EPDataComponentTypes; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.RepairItemRecipe; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(RepairItemRecipe.class) +public abstract class RepairItemRecipeMixin { + @Inject(method = "canCombine", at = @At("HEAD"), cancellable = true) + private static void canCombine(ItemStack first, ItemStack second, CallbackInfoReturnable cir) { + if(first.has(EPDataComponentTypes.NO_REPAIR) || second.has(EPDataComponentTypes.NO_REPAIR)) + cir.setReturnValue(false); + } +} diff --git a/src/main/java/me/jddev0/ep/networking/ModMessages.java b/src/main/java/me/jddev0/ep/networking/ModMessages.java index a1ff95e0e..91e4c07ad 100644 --- a/src/main/java/me/jddev0/ep/networking/ModMessages.java +++ b/src/main/java/me/jddev0/ep/networking/ModMessages.java @@ -28,8 +28,8 @@ public static void register(final RegisterPayloadHandlersEvent event) { SyncPressMoldMakerRecipeListS2CPacket::handle); registrar.playToClient(SyncCurrentRecipeS2CPacket.ID, SyncCurrentRecipeS2CPacket.STREAM_CODEC, SyncCurrentRecipeS2CPacket::handle); - registrar.playToClient(SyncFurnaceRecipeTypeS2CPacket.ID, SyncFurnaceRecipeTypeS2CPacket.STREAM_CODEC, - SyncFurnaceRecipeTypeS2CPacket::handle); + registrar.playToClient(SyncIngredientsS2CPacket.ID, SyncIngredientsS2CPacket.STREAM_CODEC, + SyncIngredientsS2CPacket::handle); //Client -> Server registrar.playToServer(PopEnergizedPowerBookFromLecternC2SPacket.ID, PopEnergizedPowerBookFromLecternC2SPacket.STREAM_CODEC, 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 0011e230e..779644baa 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.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 53f28e879..0b33cbb9f 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.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 fadd5a10f..b7f58aa54 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.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 68e2208f4..c1787d785 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/CycleAdvancedAutoCrafterRecipeOutputC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/CycleAdvancedAutoCrafterRecipeOutputC2SPacket.java @@ -8,7 +8,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.inventory.AbstractContainerMenu; 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 357bfd037..ea6fc3271 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/CycleAutoCrafterRecipeOutputC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/CycleAutoCrafterRecipeOutputC2SPacket.java @@ -8,7 +8,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.inventory.AbstractContainerMenu; 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 edee91cfa..c1ef9ae8f 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/EnergySyncS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/EnergySyncS2CPacket.java @@ -6,7 +6,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.network.handling.IPayloadContext; import org.jetbrains.annotations.NotNull; 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 52f01933e..0d55a4120 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/FluidSyncS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/FluidSyncS2CPacket.java @@ -6,7 +6,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.fluids.FluidStack; import net.neoforged.neoforge.network.handling.IPayloadContext; 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 4bb67ab43..5b18f9248 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/ItemStackSyncS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/ItemStackSyncS2CPacket.java @@ -6,7 +6,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.network.handling.IPayloadContext; 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 7e555495d..18e75b80f 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/OpenEnergizedPowerBookS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/OpenEnergizedPowerBookS2CPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.LecternBlockEntity; import net.neoforged.api.distmarker.Dist; 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 3b7cc7454..fdb5b44a1 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/PopEnergizedPowerBookFromLecternC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/PopEnergizedPowerBookFromLecternC2SPacket.java @@ -6,7 +6,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; 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 35c5cbf32..2ddad85ea 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterPatternInputSlotsC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetAdvancedAutoCrafterPatternInputSlotsC2SPacket.java @@ -5,9 +5,11 @@ import me.jddev0.ep.screen.AdvancedAutoCrafterMenu; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; +import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -86,7 +88,7 @@ public static void handle(SetAdvancedAutoCrafterPatternInputSlotsC2SPacket data, for(int i = 0;i < data.itemStacks.size();i++) advancedAutoCrafterMenu.getPatternSlots()[advancedAutoCrafterMenu.getRecipeIndex()].setItem(i, data.itemStacks.get(i)); - advancedAutoCrafterBlockEntity.setRecipeIdForSetRecipe(data.recipeId); + advancedAutoCrafterBlockEntity.setRecipeIdForSetRecipe(ResourceKey.create(Registries.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 109c9cb06..51e6c1504 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.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 dad80fe1b..e332bf62a 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetAutoCrafterPatternInputSlotsC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetAutoCrafterPatternInputSlotsC2SPacket.java @@ -5,9 +5,11 @@ import me.jddev0.ep.screen.AutoCrafterMenu; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; +import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -86,7 +88,7 @@ public static void handle(SetAutoCrafterPatternInputSlotsC2SPacket data, IPayloa for(int i = 0;i < data.itemStacks.size();i++) autoCrafterMenu.getPatternSlots().setItem(i, data.itemStacks.get(i)); - autoCrafterBlockEntity.setRecipeIdForSetRecipe(data.recipeId); + autoCrafterBlockEntity.setRecipeIdForSetRecipe(ResourceKey.create(Registries.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 c34112626..a1f2f028e 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.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 324429e3c..3447fe87e 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetCreativeFluidTankFluidStackC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetCreativeFluidTankFluidStackC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 3aa5df9c9..a0eb932fa 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SetFluidTankFilterC2SPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SetFluidTankFilterC2SPacket.java @@ -7,7 +7,6 @@ import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 999079764..56d843470 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.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 7bcd6bc73..0f16383c1 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.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; 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 2808e089c..ea073b65f 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SyncCurrentRecipeS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SyncCurrentRecipeS2CPacket.java @@ -4,9 +4,11 @@ import me.jddev0.ep.recipe.CurrentRecipePacketUpdate; import net.minecraft.core.BlockPos; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeHolder; @@ -38,11 +40,11 @@ public SyncCurrentRecipeS2CPacket(RegistryFriendlyByteBuf buffer) { pos = buffer.readBlockPos(); ResourceLocation recipeSerializerId = buffer.readResourceLocation(); - recipeSerializer = (RecipeSerializer)BuiltInRegistries.RECIPE_SERIALIZER.get(recipeSerializerId); + recipeSerializer = (RecipeSerializer)BuiltInRegistries.RECIPE_SERIALIZER.getValue(recipeSerializerId); if(recipeSerializer == null) throw new IllegalArgumentException("Recipe Serializer \"" + recipeSerializerId + "\" does not exist!"); - currentRecipe = buffer.readBoolean()?new RecipeHolder<>(buffer.readResourceLocation(), + currentRecipe = buffer.readBoolean()?new RecipeHolder<>(ResourceKey.create(Registries.RECIPE, buffer.readResourceLocation()), recipeSerializer.streamCodec().decode(buffer)):null; } @@ -60,7 +62,7 @@ public void write(RegistryFriendlyByteBuf buffer) { }else { buffer.writeBoolean(true); - buffer.writeResourceLocation(currentRecipe.id()); + buffer.writeResourceLocation(currentRecipe.id().location()); recipeSerializer.streamCodec().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 1a409fa14..000000000 --- a/src/main/java/me/jddev0/ep/networking/packet/SyncFurnaceRecipeTypeS2CPacket.java +++ /dev/null @@ -1,68 +0,0 @@ -package me.jddev0.ep.networking.packet; - -import me.jddev0.ep.api.EPAPI; -import me.jddev0.ep.recipe.FurnaceRecipeTypePacketUpdate; -import net.minecraft.core.BlockPos; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.network.RegistryFriendlyByteBuf; -import net.minecraft.network.codec.StreamCodec; -import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.AbstractCookingRecipe; -import net.minecraft.world.item.crafting.RecipeType; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.neoforged.neoforge.network.handling.IPayloadContext; -import org.jetbrains.annotations.NotNull; - -public final class SyncFurnaceRecipeTypeS2CPacket implements CustomPacketPayload { - public static final Type ID = - new Type<>(EPAPI.id("sync_furnace_recipe_type")); - public static final StreamCodec STREAM_CODEC = - StreamCodec.ofMember(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(RegistryFriendlyByteBuf buffer) { - if(buffer.readBoolean()) { - this.recipeType = (RecipeType)BuiltInRegistries.RECIPE_TYPE. - getOptional(buffer.readResourceLocation()).orElse(RecipeType.SMELTING); - }else { - this.recipeType = RecipeType.SMELTING; - } - - this.pos = buffer.readBlockPos(); - } - - public void write(RegistryFriendlyByteBuf buffer) { - ResourceLocation recipeTypeKey = BuiltInRegistries.RECIPE_TYPE.getKey(recipeType); - if(recipeTypeKey == null) { - buffer.writeBoolean(false); - }else { - buffer.writeBoolean(true); - buffer.writeResourceLocation(recipeTypeKey); - } - buffer.writeBlockPos(pos); - } - - @Override - @NotNull - public Type type() { - return ID; - } - - public static void handle(SyncFurnaceRecipeTypeS2CPacket data, IPayloadContext context) { - context.enqueueWork(() -> { - BlockEntity blockEntity = context.player().level().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..ff65ab463 --- /dev/null +++ b/src/main/java/me/jddev0/ep/networking/packet/SyncIngredientsS2CPacket.java @@ -0,0 +1,71 @@ +package me.jddev0.ep.networking.packet; + +import me.jddev0.ep.api.EPAPI; +import me.jddev0.ep.recipe.IngredientPacketUpdate; +import net.minecraft.core.BlockPos; +import net.minecraft.network.RegistryFriendlyByteBuf; +import net.minecraft.network.codec.StreamCodec; +import net.minecraft.network.protocol.common.custom.CustomPacketPayload; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.neoforged.neoforge.network.handling.IPayloadContext; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public final class SyncIngredientsS2CPacket implements CustomPacketPayload { + public static final Type ID = + new Type<>(EPAPI.id("sync_ingredients")); + public static final StreamCodec STREAM_CODEC = + StreamCodec.ofMember(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(RegistryFriendlyByteBuf 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.CONTENTS_STREAM_CODEC.decode(buffer)); + + this.ingredientList = ingredientList; + } + + public void write(RegistryFriendlyByteBuf buffer) { + buffer.writeBlockPos(pos); + + buffer.writeInt(index); + + buffer.writeInt(ingredientList.size()); + + for(Ingredient ingredient: ingredientList) + Ingredient.CONTENTS_STREAM_CODEC.encode(buffer, ingredient); + } + + @Override + @NotNull + public Type type() { + return ID; + } + + public static void handle(SyncIngredientsS2CPacket data, IPayloadContext context) { + context.enqueueWork(() -> { + BlockEntity blockEntity = context.player().level().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 a141582ed..33a2e9c7f 100644 --- a/src/main/java/me/jddev0/ep/networking/packet/SyncPressMoldMakerRecipeListS2CPacket.java +++ b/src/main/java/me/jddev0/ep/networking/packet/SyncPressMoldMakerRecipeListS2CPacket.java @@ -5,10 +5,11 @@ import me.jddev0.ep.block.entity.PressMoldMakerBlockEntity; import me.jddev0.ep.recipe.PressMoldMakerRecipe; import net.minecraft.core.BlockPos; +import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.network.handling.IPayloadContext; @@ -36,7 +37,7 @@ public SyncPressMoldMakerRecipeListS2CPacket(RegistryFriendlyByteBuf buffer) { pos = buffer.readBlockPos(); int size = buffer.readInt(); - recipeList = IntStream.range(0, size).mapToObj(i -> Pair.of(new RecipeHolder<>(buffer.readResourceLocation(), + recipeList = IntStream.range(0, size).mapToObj(i -> Pair.of(new RecipeHolder<>(ResourceKey.create(Registries.RECIPE, buffer.readResourceLocation()), PressMoldMakerRecipe.Serializer.INSTANCE.streamCodec().decode(buffer)), buffer.readBoolean())). collect(Collectors.toList()); } @@ -46,7 +47,7 @@ public void write(RegistryFriendlyByteBuf buffer) { buffer.writeInt(recipeList.size()); recipeList.forEach(entry -> { - buffer.writeResourceLocation(entry.getFirst().id()); + buffer.writeResourceLocation(entry.getFirst().id().location()); PressMoldMakerRecipe.Serializer.INSTANCE.streamCodec().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 3473cdc9e..466ffa22b 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.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.network.protocol.common.custom.CustomPacketPayload; -import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.level.block.entity.BlockEntity; diff --git a/src/main/java/me/jddev0/ep/paintings/EPPaintingVariants.java b/src/main/java/me/jddev0/ep/paintings/EPPaintingVariants.java index 81b3137c1..5d49d29fb 100644 --- a/src/main/java/me/jddev0/ep/paintings/EPPaintingVariants.java +++ b/src/main/java/me/jddev0/ep/paintings/EPPaintingVariants.java @@ -3,9 +3,12 @@ import me.jddev0.ep.api.EPAPI; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; import net.minecraft.world.entity.decoration.PaintingVariant; +import java.util.Optional; + public final class EPPaintingVariants { private EPPaintingVariants() {} @@ -25,6 +28,8 @@ public static ResourceKey registerKey(String name) { private static void register(BootstrapContext context, ResourceKey key, int width, int height) { - context.register(key, new PaintingVariant(width, height, key.location())); + context.register(key, new PaintingVariant(width, height, key.location(), + Optional.of(Component.translatable("painting.energizedpower." + key.location().getPath() + ".title")), + Optional.of(Component.translatable("painting.energizedpower." + key.location().getPath() + ".author")))); } } \ No newline at end of file diff --git a/src/main/java/me/jddev0/ep/recipe/AlloyFurnaceRecipe.java b/src/main/java/me/jddev0/ep/recipe/AlloyFurnaceRecipe.java index 286f25668..78a826eeb 100644 --- a/src/main/java/me/jddev0/ep/recipe/AlloyFurnaceRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/AlloyFurnaceRecipe.java @@ -3,7 +3,6 @@ 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.core.HolderLookup; @@ -16,9 +15,11 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; +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; @@ -120,33 +121,44 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return ItemStack.EMPTY; + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.ALLOY_FURNACE_CATEGORY.get(); } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.ALLOY_FURNACE_ITEM.get()); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack) || (secondaryOutput != null && + ItemStack.isSameItemSameComponents(secondaryOutput.output(), itemStack)); } public static final class Type implements RecipeType { @@ -163,11 +175,11 @@ private Serializer() {} public static final ResourceLocation 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; }), ExtraCodecs.POSITIVE_INT.fieldOf("ticks").forGetter((recipe) -> { return recipe.ticks; @@ -192,7 +204,7 @@ private static AlloyFurnaceRecipe read(RegistryFriendlyByteBuf 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(); @@ -206,7 +218,7 @@ private static AlloyFurnaceRecipe read(RegistryFriendlyByteBuf buffer) { private static void write(RegistryFriendlyByteBuf 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 0dbfc8650..49e6f8762 100644 --- a/src/main/java/me/jddev0/ep/recipe/AssemblingMachineRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/AssemblingMachineRecipe.java @@ -3,7 +3,6 @@ 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.core.HolderLookup; @@ -14,7 +13,10 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -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; @@ -79,33 +81,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.ASSEMBLING_MACHINE_CATEGORY.get(); } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.ASSEMBLING_MACHINE_ITEM.get()); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack); } public static final class Type implements RecipeType { @@ -122,9 +134,9 @@ private Serializer() {} public static final ResourceLocation 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); }); @@ -146,7 +158,7 @@ private static AssemblingMachineRecipe read(RegistryFriendlyByteBuf 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_STREAM_CODEC.decode(buffer); @@ -156,7 +168,7 @@ private static AssemblingMachineRecipe read(RegistryFriendlyByteBuf buffer) { private static void write(RegistryFriendlyByteBuf 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_STREAM_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 e1e383a98..c12bb2e04 100644 --- a/src/main/java/me/jddev0/ep/recipe/ChargerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/ChargerRecipe.java @@ -3,10 +3,8 @@ 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.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; @@ -15,7 +13,9 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -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; @@ -52,40 +52,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.CHARGER_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.CHARGER_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack); } public static final class Type implements RecipeType { @@ -102,9 +105,9 @@ private Serializer() {} public static final ResourceLocation 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.CODEC_NONEMPTY.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), ExtraCodecs.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 26d500f6f..d7d7fa227 100644 --- a/src/main/java/me/jddev0/ep/recipe/CompressorRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/CompressorRecipe.java @@ -3,47 +3,40 @@ 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.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -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 getOutput() { return output; } - public Ingredient getInput() { + public IngredientWithCount getInput() { return input; } - public int getInputCount() { - return inputCount; - } - @Override public boolean matches(RecipeInput container, Level level) { if(level.isClientSide) return false; - return input.test(container.getItem(0)) && container.getItem(0).getCount() >= inputCount; + return input.input().test(container.getItem(0)) && container.getItem(0).getCount() >= input.count(); } @Override @@ -52,40 +45,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.COMPRESSOR_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.COMPRESSOR_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack); } public static final class Type implements RecipeType { @@ -102,12 +98,10 @@ private Serializer() {} public static final ResourceLocation 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.CODEC_NONEMPTY.fieldOf("ingredient").forGetter((recipe) -> { + }), IngredientWithCount.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; - }), ExtraCodecs.POSITIVE_INT.optionalFieldOf("inputCount", 1).forGetter((recipe) -> { - return recipe.inputCount; })).apply(instance, CompressorRecipe::new); }); @@ -125,16 +119,14 @@ public StreamCodec streamCodec() { } private static CompressorRecipe read(RegistryFriendlyByteBuf buffer) { - Ingredient input = Ingredient.CONTENTS_STREAM_CODEC.decode(buffer); - int inputCount = buffer.readInt(); + IngredientWithCount input = IngredientWithCount.STREAM_CODEC.decode(buffer); ItemStack output = ItemStack.OPTIONAL_STREAM_CODEC.decode(buffer); - return new CompressorRecipe(output, input, inputCount); + return new CompressorRecipe(output, input); } private static void write(RegistryFriendlyByteBuf buffer, CompressorRecipe recipe) { - Ingredient.CONTENTS_STREAM_CODEC.encode(buffer, recipe.input); - buffer.writeInt(recipe.inputCount); + IngredientWithCount.STREAM_CODEC.encode(buffer, recipe.input); ItemStack.OPTIONAL_STREAM_CODEC.encode(buffer, recipe.output); } } diff --git a/src/main/java/me/jddev0/ep/recipe/CrusherRecipe.java b/src/main/java/me/jddev0/ep/recipe/CrusherRecipe.java index 8e2f83f42..47e4fca3a 100644 --- a/src/main/java/me/jddev0/ep/recipe/CrusherRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/CrusherRecipe.java @@ -3,10 +3,8 @@ 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.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; @@ -14,7 +12,9 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -public class CrusherRecipe implements Recipe { +import java.util.List; + +public class CrusherRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final Ingredient input; @@ -45,40 +45,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.CRUSHER_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.CRUSHER_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack); } public static final class Type implements RecipeType { @@ -95,9 +98,9 @@ private Serializer() {} public static final ResourceLocation 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.CODEC_NONEMPTY.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 1a69ead46..ebb1e4b1a 100644 --- a/src/main/java/me/jddev0/ep/recipe/CrystalGrowthChamberRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/CrystalGrowthChamberRecipe.java @@ -3,7 +3,6 @@ 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.core.HolderLookup; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; @@ -14,16 +13,16 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -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; } @@ -31,14 +30,10 @@ public OutputItemStackWithPercentages getOutput() { return output; } - public Ingredient getInput() { + public IngredientWithCount getInput() { return input; } - public int getInputCount() { - return inputCount; - } - public int getTicks() { return ticks; } @@ -62,7 +57,7 @@ public boolean matches(RecipeInput container, Level level) { if(level.isClientSide) return false; - return input.test(container.getItem(0)) && container.getItem(0).getCount() >= inputCount; + return input.input().test(container.getItem(0)) && container.getItem(0).getCount() >= input.count(); } @Override @@ -71,33 +66,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return ItemStack.EMPTY; + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.CRYSTAL_GROWTH_CHAMBER_CATEGORY.get(); } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.CRYSTAL_GROWTH_CHAMBER_ITEM.get()); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output.output(), itemStack); } public static final class Type implements RecipeType { @@ -114,12 +119,10 @@ private Serializer() {} public static final ResourceLocation 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.CODEC_NONEMPTY.fieldOf("ingredient").forGetter((recipe) -> { + }), IngredientWithCount.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; - }), ExtraCodecs.POSITIVE_INT.optionalFieldOf("inputCount", 1).forGetter((recipe) -> { - return recipe.inputCount; }), ExtraCodecs.POSITIVE_INT.fieldOf("ticks").forGetter((recipe) -> { return recipe.ticks; })).apply(instance, CrystalGrowthChamberRecipe::new); @@ -139,18 +142,16 @@ public StreamCodec streamCo } private static CrystalGrowthChamberRecipe read(RegistryFriendlyByteBuf buffer) { - Ingredient input = Ingredient.CONTENTS_STREAM_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(RegistryFriendlyByteBuf buffer, CrystalGrowthChamberRecipe recipe) { - Ingredient.CONTENTS_STREAM_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 ef38a9a82..7c10333e7 100644 --- a/src/main/java/me/jddev0/ep/recipe/EPRecipes.java +++ b/src/main/java/me/jddev0/ep/recipe/EPRecipes.java @@ -2,105 +2,125 @@ import me.jddev0.ep.api.EPAPI; import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.RecipeBookCategory; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.item.crafting.RecipeType; import net.neoforged.bus.api.IEventBus; import net.neoforged.neoforge.registries.DeferredRegister; -import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; import java.util.function.Supplier; public final class EPRecipes { private EPRecipes() {} + public static final DeferredRegister CATEGORIES = DeferredRegister.create(BuiltInRegistries.RECIPE_BOOK_CATEGORY, EPAPI.MOD_ID); public static final DeferredRegister> SERIALIZERS = DeferredRegister.create(BuiltInRegistries.RECIPE_SERIALIZER, EPAPI.MOD_ID); public static final DeferredRegister> TYPES = DeferredRegister.create(BuiltInRegistries.RECIPE_TYPE, EPAPI.MOD_ID); + public static final Supplier ENERGIZER_CATEGORY = createRecipeCategory("energizer"); public static final Supplier> ENERGIZER_SERIALIZER = SERIALIZERS.register("energizer", () -> EnergizerRecipe.Serializer.INSTANCE); public static final Supplier> ENERGIZER_TYPE = TYPES.register("type", () -> EnergizerRecipe.Type.INSTANCE); + public static final Supplier CHARGER_CATEGORY = createRecipeCategory("charger"); public static final Supplier> CHARGER_SERIALIZER = SERIALIZERS.register("charger", () -> ChargerRecipe.Serializer.INSTANCE); public static final Supplier> CHARGER_TYPE = TYPES.register("charger", () -> ChargerRecipe.Type.INSTANCE); + public static final Supplier CRUSHER_CATEGORY = createRecipeCategory("crusher"); public static final Supplier> CRUSHER_SERIALIZER = SERIALIZERS.register("crusher", () -> CrusherRecipe.Serializer.INSTANCE); public static final Supplier> CRUSHER_TYPE = TYPES.register("crusher", () -> CrusherRecipe.Type.INSTANCE); + public static final Supplier SAWMILL_CATEGORY = createRecipeCategory("sawmill"); public static final Supplier> PULVERIZER_SERIALIZER = SERIALIZERS.register("pulverizer", () -> PulverizerRecipe.Serializer.INSTANCE); public static final Supplier> PULVERIZER_TYPE = TYPES.register("pulverizer", () -> PulverizerRecipe.Type.INSTANCE); + public static final Supplier COMPRESSOR_CATEGORY = createRecipeCategory("compressor"); public static final Supplier> SAWMILL_SERIALIZER = SERIALIZERS.register("sawmill", () -> SawmillRecipe.Serializer.INSTANCE); public static final Supplier> SAWMILL_TYPE = TYPES.register("sawmill", () -> SawmillRecipe.Type.INSTANCE); + public static final Supplier PULVERIZER_CATEGORY = createRecipeCategory("pulverizer"); public static final Supplier> COMPRESSOR_SERIALIZER = SERIALIZERS.register("compressor", () -> CompressorRecipe.Serializer.INSTANCE); public static final Supplier> COMPRESSOR_TYPE = TYPES.register("compressor", () -> CompressorRecipe.Type.INSTANCE); + public static final Supplier PLANT_GROWTH_CHAMBER_CATEGORY = createRecipeCategory("plant_growth_chamber"); public static final Supplier> PLANT_GROWTH_CHAMBER_SERIALIZER = SERIALIZERS. register("plant_growth_chamber", () -> PlantGrowthChamberRecipe.Serializer.INSTANCE); public static final Supplier> PLANT_GROWTH_CHAMBER_TYPE = TYPES. register("plant_growth_chamber", () -> PlantGrowthChamberRecipe.Type.INSTANCE); + public static final Supplier PLANT_GROWTH_CHAMBER_FERTILIZER_CATEGORY = createRecipeCategory("plant_growth_chamber_fertilizer"); public static final Supplier> PLANT_GROWTH_CHAMBER_FERTILIZER_SERIALIZER = SERIALIZERS. register("plant_growth_chamber_fertilizer", () -> PlantGrowthChamberFertilizerRecipe.Serializer.INSTANCE); public static final Supplier> PLANT_GROWTH_CHAMBER_FERTILIZER_TYPE = TYPES. register("plant_growth_chamber_fertilizer", () -> PlantGrowthChamberFertilizerRecipe.Type.INSTANCE); + public static final Supplier HEAT_GENERATOR_CATEGORY = createRecipeCategory("heat_generator"); public static final Supplier> HEAT_GENERATOR_SERIALIZER = SERIALIZERS. register("heat_generator", () -> HeatGeneratorRecipe.Serializer.INSTANCE); public static final Supplier> HEAT_GENERATOR_TYPE = TYPES. register("heat_generator", () -> HeatGeneratorRecipe.Type.INSTANCE); + public static final Supplier THERMAL_GENERATOR_CATEGORY = createRecipeCategory("thermal_generator"); public static final Supplier> THERMAL_GENERATOR_SERIALIZER = SERIALIZERS. register("thermal_generator", () -> ThermalGeneratorRecipe.Serializer.INSTANCE); public static final Supplier> THERMAL_GENERATOR_TYPE = TYPES. register("thermal_generator", () -> ThermalGeneratorRecipe.Type.INSTANCE); + public static final Supplier PRESS_MOLD_MAKER_CATEGORY = createRecipeCategory("press_mold_maker"); public static final Supplier> PRESS_MOLD_MAKER_SERIALIZER = SERIALIZERS. register("press_mold_maker", () -> PressMoldMakerRecipe.Serializer.INSTANCE); public static final Supplier> PRESS_MOLD_MAKER_TYPE = TYPES. register("press_mold_maker", () -> PressMoldMakerRecipe.Type.INSTANCE); + public static final Supplier METAL_PRESS_CATEGORY = createRecipeCategory("metal_press"); public static final Supplier> METAL_PRESS_SERIALIZER = SERIALIZERS. register("metal_press", () -> MetalPressRecipe.Serializer.INSTANCE); public static final Supplier> METAL_PRESS_TYPE = TYPES. register("metal_press", () -> MetalPressRecipe.Type.INSTANCE); + public static final Supplier ASSEMBLING_MACHINE_CATEGORY = createRecipeCategory("assembling_machine"); public static final Supplier> ASSEMBLING_MACHINE_SERIALIZER = SERIALIZERS. register("assembling_machine", () -> AssemblingMachineRecipe.Serializer.INSTANCE); public static final Supplier> ASSEMBLING_MACHINE_TYPE = TYPES. register("assembling_machine", () -> AssemblingMachineRecipe.Type.INSTANCE); + public static final Supplier STONE_SOLIDIFIER_CATEGORY = createRecipeCategory("stone_solidifier"); public static final Supplier> STONE_SOLIDIFIER_SERIALIZER = SERIALIZERS. register("stone_solidifier", () -> StoneSolidifierRecipe.Serializer.INSTANCE); public static final Supplier> STONE_SOLIDIFIER_TYPE = TYPES. register("stone_solidifier", () -> StoneSolidifierRecipe.Type.INSTANCE); + public static final Supplier FILTRATION_PLANT_CATEGORY = createRecipeCategory("filtration_plant"); public static final Supplier> FILTRATION_PLANT_SERIALIZER = SERIALIZERS. register("filtration_plant", () -> FiltrationPlantRecipe.Serializer.INSTANCE); public static final Supplier> FILTRATION_PLANT_TYPE = TYPES. register("filtration_plant", () -> FiltrationPlantRecipe.Type.INSTANCE); + public static final Supplier CRYSTAL_GROWTH_CHAMBER_CATEGORY = createRecipeCategory("crystal_growth_chamber"); public static final Supplier> CRYSTAL_GROWTH_CHAMBER_SERIALIZER = SERIALIZERS. register("crystal_growth_chamber", () -> CrystalGrowthChamberRecipe.Serializer.INSTANCE); public static final Supplier> CRYSTAL_GROWTH_CHAMBER_TYPE = TYPES. register("crystal_growth_chamber", () -> CrystalGrowthChamberRecipe.Type.INSTANCE); + public static final Supplier FLUID_TRANSPOSER_CATEGORY = createRecipeCategory("fluid_transposer"); public static final Supplier> FLUID_TRANSPOSER_SERIALIZER = SERIALIZERS. register("fluid_transposer", () -> FluidTransposerRecipe.Serializer.INSTANCE); public static final Supplier> FLUID_TRANSPOSER_TYPE = TYPES. register("fluid_transposer", () -> FluidTransposerRecipe.Type.INSTANCE); + public static final Supplier ALLOY_FURNACE_CATEGORY = createRecipeCategory("alloy_furnace"); public static final Supplier> ALLOY_FURNACE_SERIALIZER = SERIALIZERS. register("alloy_furnace", () -> AlloyFurnaceRecipe.Serializer.INSTANCE); public static final Supplier> ALLOY_FURNACE_TYPE = TYPES. @@ -108,9 +128,14 @@ private EPRecipes() {} public static final Supplier> TELEPORTER_MATRIX_SETTINGS_COPY_SERIALIZER = SERIALIZERS.register("teleporter_matrix_settings_copy", - () -> new SimpleCraftingRecipeSerializer<>(TeleporterMatrixSettingsCopyRecipe::new)); + () -> new CustomRecipe.Serializer<>(TeleporterMatrixSettingsCopyRecipe::new)); + + private static Supplier createRecipeCategory(String name) { + return CATEGORIES.register(name, RecipeBookCategory::new); + } public static void register(IEventBus modEventBus) { + CATEGORIES.register(modEventBus); SERIALIZERS.register(modEventBus); TYPES.register(modEventBus); } 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..39b1a44e0 --- /dev/null +++ b/src/main/java/me/jddev0/ep/recipe/EnergizedPowerBaseRecipe.java @@ -0,0 +1,16 @@ +package me.jddev0.ep.recipe; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.Recipe; +import net.minecraft.world.item.crafting.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 a143f002a..46d5f7c9a 100644 --- a/src/main/java/me/jddev0/ep/recipe/EnergizerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/EnergizerRecipe.java @@ -3,10 +3,8 @@ 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.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; @@ -15,7 +13,9 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -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; @@ -52,39 +52,42 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.ENERGIZER_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.ENERGIZER_ITEM.get()); + public List getIngredients() { + return List.of(input); } @Override - public boolean isSpecial() { - return true; + public boolean isIngredient(ItemStack itemStack) { + return input.test(itemStack); } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public boolean isResult(ItemStack itemStack) { + return ItemStack.isSameItemSameComponents(output, itemStack); } @Override - public RecipeType getType() { + public RecipeType> getType() { return Type.INSTANCE; } @@ -102,9 +105,9 @@ private Serializer() {} public static final ResourceLocation 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.CODEC_NONEMPTY.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), ExtraCodecs.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 f74667659..cd5c25054 100644 --- a/src/main/java/me/jddev0/ep/recipe/FiltrationPlantRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/FiltrationPlantRecipe.java @@ -3,22 +3,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.core.HolderLookup; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.RandomSource; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeInput; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; +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 ResourceLocation icon; @@ -77,33 +74,44 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return ItemStack.EMPTY; + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.FILTRATION_PLANT_CATEGORY.get(); } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.FILTRATION_PLANT.get()); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output.output(), itemStack) || (secondaryOutput != null && + ItemStack.isSameItemSameComponents(secondaryOutput.output(), itemStack)); } public static final class Type implements RecipeType { @@ -120,9 +128,9 @@ private Serializer() {} public static final ResourceLocation 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); }), ResourceLocation.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 6205c8af5..5f488559d 100644 --- a/src/main/java/me/jddev0/ep/recipe/FluidTransposerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/FluidTransposerRecipe.java @@ -3,11 +3,9 @@ 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 net.minecraft.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; @@ -16,7 +14,9 @@ import net.minecraft.world.level.Level; import net.neoforged.neoforge.fluids.FluidStack; -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; @@ -59,40 +59,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.FLUID_TRANSPOSER_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.FLUID_TRANSPOSER_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack); } public static final class Type implements RecipeType { @@ -111,9 +114,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.CODEC_NONEMPTY.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), FluidStack.CODEC.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 83b04f5e5..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.world.item.crafting.AbstractCookingRecipe; -import net.minecraft.world.item.crafting.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 1ef56e795..1fd4ca919 100644 --- a/src/main/java/me/jddev0/ep/recipe/HeatGeneratorRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/HeatGeneratorRecipe.java @@ -5,7 +5,6 @@ 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.core.HolderLookup; import net.minecraft.core.registries.BuiltInRegistries; @@ -17,7 +16,9 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.material.Fluid; -public class HeatGeneratorRecipe implements Recipe { +import java.util.List; + +public class HeatGeneratorRecipe implements EnergizedPowerBaseRecipe { private final Fluid[] input; private final int energyProduction; @@ -45,33 +46,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return ItemStack.EMPTY; + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.HEAT_GENERATOR_CATEGORY.get(); } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.HEAT_GENERATOR_ITEM.get()); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isSpecial() { - 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 { @@ -89,7 +100,7 @@ private Serializer() {} private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { return instance.group(Codec.either(new ArrayCodec<>(BuiltInRegistries.FLUID.byNameCodec(), Fluid[]::new), - BuiltInRegistries.FLUID.byNameCodec()).fieldOf("input").forGetter((recipe) -> { + BuiltInRegistries.FLUID.byNameCodec()).fieldOf("ingredient").forGetter((recipe) -> { return recipe.input.length == 1?Either.right(recipe.input[0]):Either.left(recipe.input); }), Codec.INT.fieldOf("energy").forGetter((recipe) -> { return recipe.energyProduction; @@ -118,7 +129,7 @@ private static HeatGeneratorRecipe read(RegistryFriendlyByteBuf buffer) { int fluidCount = buffer.readInt(); Fluid[] input = new Fluid[fluidCount]; for(int i = 0;i < fluidCount;i++) - input[i] = BuiltInRegistries.FLUID.get(buffer.readResourceLocation()); + input[i] = BuiltInRegistries.FLUID.getValue(buffer.readResourceLocation()); int energyProduction = buffer.readInt(); 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..5345a032e --- /dev/null +++ b/src/main/java/me/jddev0/ep/recipe/IngredientPacketUpdate.java @@ -0,0 +1,12 @@ +package me.jddev0.ep.recipe; + +import net.minecraft.world.item.crafting.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 ccfab2534..22eb86a8e 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.CODEC_NONEMPTY.fieldOf("input").forGetter((input) -> { - return input.input; - }), ExtraCodecs.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.CODEC.fieldOf("input").forGetter((input) -> { + return instance.group(Ingredient.CODEC.fieldOf("ingredient").forGetter((input) -> { return input.input; - }), Codec.INT.optionalFieldOf("count", 1).forGetter((input) -> { + }), ExtraCodecs.POSITIVE_INT.optionalFieldOf("count", 1).forGetter((input) -> { return input.count; })).apply(instance, IngredientWithCount::new); }); - public static final StreamCodec OPTIONAL_STREAM_CODEC = new StreamCodec<>() { + public static final StreamCodec STREAM_CODEC = new StreamCodec<>() { @Override @NotNull public IngredientWithCount decode(@NotNull RegistryFriendlyByteBuf buffer) { int count = buffer.readInt(); if(count <= 0) - return IngredientWithCount.EMPTY; + throw new DecoderException("Empty IngredientWithCount not allowed"); Ingredient input = Ingredient.CONTENTS_STREAM_CODEC.decode(buffer); return new IngredientWithCount(input, count); @@ -50,32 +36,11 @@ public IngredientWithCount decode(@NotNull RegistryFriendlyByteBuf buffer) { @Override public void encode(@NotNull RegistryFriendlyByteBuf buffer, IngredientWithCount ingredient) { - if(ingredient.isEmpty()) { - buffer.writeInt(0); - }else { - buffer.writeInt(ingredient.count); - Ingredient.CONTENTS_STREAM_CODEC.encode(buffer, ingredient.input); - } - } - }; - - public static final StreamCodec STREAM_CODEC = new StreamCodec<>() { - @Override - @NotNull - public IngredientWithCount decode(@NotNull RegistryFriendlyByteBuf 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 RegistryFriendlyByteBuf 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.CONTENTS_STREAM_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 f43ff4da1..790e1b0d4 100644 --- a/src/main/java/me/jddev0/ep/recipe/MetalPressRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/MetalPressRecipe.java @@ -3,28 +3,26 @@ 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.core.HolderLookup; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -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() { @@ -35,21 +33,17 @@ public ItemStack getPressMold() { return pressMold; } - public Ingredient getInput() { + public IngredientWithCount getInput() { return input; } - public int getInputCount() { - return inputCount; - } - @Override public boolean matches(RecipeInput container, Level level) { if(level.isClientSide) return false; - return input.test(container.getItem(0)) && container.getItem(0).getCount() >= inputCount && - ItemStack.isSameItem(container.getItem(1), pressMold); + return input.input().test(container.getItem(0)) && container.getItem(0).getCount() >= input.count() && + ItemStack.isSameItem(pressMold, container.getItem(1)); } @Override @@ -58,33 +52,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.METAL_PRESS_CATEGORY.get(); + } + + @Override + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.METAL_PRESS_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack); } public static final class Type implements RecipeType { @@ -101,14 +105,12 @@ private Serializer() {} public static final ResourceLocation 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.CODEC_NONEMPTY.fieldOf("ingredient").forGetter((recipe) -> { + }), IngredientWithCount.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; - }), ExtraCodecs.POSITIVE_INT.optionalFieldOf("inputCount", 1).forGetter((recipe) -> { - return recipe.inputCount; })).apply(instance, MetalPressRecipe::new); }); @@ -126,17 +128,15 @@ public StreamCodec streamCodec() { } private static MetalPressRecipe read(RegistryFriendlyByteBuf buffer) { - Ingredient input = Ingredient.CONTENTS_STREAM_CODEC.decode(buffer); - int inputCount = buffer.readInt(); + IngredientWithCount input = IngredientWithCount.STREAM_CODEC.decode(buffer); ItemStack pressMold = ItemStack.OPTIONAL_STREAM_CODEC.decode(buffer); ItemStack output = ItemStack.OPTIONAL_STREAM_CODEC.decode(buffer); - return new MetalPressRecipe(output, pressMold, input, inputCount); + return new MetalPressRecipe(output, pressMold, input); } private static void write(RegistryFriendlyByteBuf buffer, MetalPressRecipe recipe) { - Ingredient.CONTENTS_STREAM_CODEC.encode(buffer, recipe.input); - buffer.writeInt(recipe.inputCount); + IngredientWithCount.STREAM_CODEC.encode(buffer, recipe.input); ItemStack.OPTIONAL_STREAM_CODEC.encode(buffer, recipe.pressMold); ItemStack.OPTIONAL_STREAM_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 560184dc0..c96aba5da 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 06885de6b..a1c2ee5ab 100644 --- a/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberFertilizerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberFertilizerRecipe.java @@ -4,9 +4,7 @@ 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.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; @@ -14,7 +12,9 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -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; @@ -51,40 +51,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return ItemStack.EMPTY; + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.PLANT_GROWTH_CHAMBER_FERTILIZER_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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 { @@ -101,7 +104,7 @@ private Serializer() {} public static final ResourceLocation ID = EPAPI.id("plant_growth_chamber_fertilizer"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(Ingredient.CODEC_NONEMPTY.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 8289f4590..c1a64d1b3 100644 --- a/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/PlantGrowthChamberRecipe.java @@ -3,10 +3,8 @@ 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.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; @@ -16,7 +14,10 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -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; @@ -79,40 +80,44 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return ItemStack.EMPTY; + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.PLANT_GROWTH_CHAMBER_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.PLANT_GROWTH_CHAMBER_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack)); } public static final class Type implements RecipeType { @@ -129,9 +134,10 @@ private Serializer() {} public static final ResourceLocation ID = EPAPI.id("plant_growth_chamber"); private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { - return instance.group(new ArrayCodec<>(OutputItemStackWithPercentages.CODEC_NONEMPTY, OutputItemStackWithPercentages[]::new).fieldOf("outputs").forGetter((recipe) -> { + return instance.group(new ArrayCodec<>(OutputItemStackWithPercentages.CODEC_NONEMPTY, OutputItemStackWithPercentages[]::new). + fieldOf("results").forGetter((recipe) -> { return recipe.outputs; - }), Ingredient.CODEC_NONEMPTY.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), ExtraCodecs.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 2b79ecf92..d4ee9928e 100644 --- a/src/main/java/me/jddev0/ep/recipe/PressMoldMakerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/PressMoldMakerRecipe.java @@ -3,7 +3,6 @@ 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.core.HolderLookup; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -12,13 +11,12 @@ import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeInput; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -public class PressMoldMakerRecipe implements Recipe { +import java.util.List; + +public class PressMoldMakerRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final int clayCount; @@ -50,33 +48,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.PRESS_MOLD_MAKER_CATEGORY.get(); } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.PRESS_MOLD_MAKER_ITEM.get()); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isSpecial() { - return true; + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public RecipeSerializer getSerializer() { - return Serializer.INSTANCE; + public List getIngredients() { + return List.of(Ingredient.of(Items.CLAY_BALL)); } @Override - public RecipeType getType() { - return Type.INSTANCE; + public boolean isIngredient(ItemStack itemStack) { + return itemStack.is(Items.CLAY_BALL); + } + + @Override + public boolean isResult(ItemStack itemStack) { + return ItemStack.isSameItemSameComponents(output, itemStack); } public static final class Type implements RecipeType { @@ -93,7 +101,7 @@ private Serializer() {} public static final ResourceLocation 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; }), ExtraCodecs.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 fe7a2520b..ad78bffd6 100644 --- a/src/main/java/me/jddev0/ep/recipe/PulverizerRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/PulverizerRecipe.java @@ -7,10 +7,8 @@ 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.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; @@ -23,7 +21,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; @@ -87,40 +85,44 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return ItemStack.EMPTY; + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.PULVERIZER_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.PULVERIZER_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output.output(), itemStack) || (secondaryOutput != null && + ItemStack.isSameItemSameComponents(secondaryOutput.output(), itemStack)); } public static final class Type implements RecipeType { @@ -137,14 +139,14 @@ private Serializer() {} public static final ResourceLocation 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.CODEC_NONEMPTY.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])), @@ -244,7 +246,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 5b980fbe5..bfa85e0f7 100644 --- a/src/main/java/me/jddev0/ep/recipe/SawmillRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/SawmillRecipe.java @@ -3,11 +3,9 @@ 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.core.HolderLookup; -import net.minecraft.core.NonNullList; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; @@ -16,9 +14,10 @@ import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; +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 +58,44 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.SAWMILL_CATEGORY.get(); } @Override - public NonNullList getIngredients() { - NonNullList ingredients = NonNullList.createWithCapacity(1); - ingredients.add(0, input); - return ingredients; + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.SAWMILL_ITEM.get()); + public RecipeType> getType() { + return Type.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack) || (secondaryOutput != null && + ItemStack.isSameItemSameComponents(secondaryOutput, itemStack)); } public static final class Type implements RecipeType { @@ -109,9 +112,9 @@ private Serializer() {} public static final ResourceLocation 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.CODEC_NONEMPTY.fieldOf("ingredient").forGetter((recipe) -> { + }), Ingredient.CODEC.fieldOf("ingredient").forGetter((recipe) -> { return recipe.input; }), ExtraCodecs.NON_NEGATIVE_INT.optionalFieldOf("sawdustAmount").forGetter((recipe) -> { if(recipe.secondaryOutput.isEmpty()) @@ -119,7 +122,7 @@ private Serializer() {} return ItemStack.isSameItemSameComponents(recipe.secondaryOutput, new ItemStack(EPItems.SAWDUST.get()))? 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(); @@ -128,7 +131,7 @@ private Serializer() {} })).apply(instance, (output, ingredient, sawdustAmount, secondaryOutput) -> { return secondaryOutput.map(o -> new SawmillRecipe(output, o, ingredient)). orElseGet(() -> sawdustAmount.map(a -> new SawmillRecipe(output, ingredient, a)). - orElseThrow(() -> new IllegalArgumentException("Either \"sawdustAmount\" or \"secondaryOutput\" must be present"))); + orElseThrow(() -> new IllegalArgumentException("Either \"sawdustAmount\" or \"secondaryResult\" must be present"))); }); }); diff --git a/src/main/java/me/jddev0/ep/recipe/StoneSolidifierRecipe.java b/src/main/java/me/jddev0/ep/recipe/StoneSolidifierRecipe.java index 2ffb0b926..2a831803f 100644 --- a/src/main/java/me/jddev0/ep/recipe/StoneSolidifierRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/StoneSolidifierRecipe.java @@ -3,7 +3,6 @@ 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.core.HolderLookup; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -11,13 +10,12 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.util.ExtraCodecs; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeInput; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; -public class StoneSolidifierRecipe implements Recipe { +import java.util.List; + +public class StoneSolidifierRecipe implements EnergizedPowerBaseRecipe { private final ItemStack output; private final int waterAmount; private final int lavaAmount; @@ -51,33 +49,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return output.copy(); + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.STONE_SOLIDIFIER_CATEGORY.get(); } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.STONE_SOLIDIFIER.get()); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isSpecial() { - 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.isSameItemSameComponents(output, itemStack); } public static final class Type implements RecipeType { @@ -94,7 +102,7 @@ private Serializer() {} public static final ResourceLocation 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; }), ExtraCodecs.POSITIVE_INT.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 a06f40ec8..ab61bb7b1 100644 --- a/src/main/java/me/jddev0/ep/recipe/TeleporterMatrixSettingsCopyRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/TeleporterMatrixSettingsCopyRecipe.java @@ -5,10 +5,7 @@ import net.minecraft.core.HolderLookup; import net.minecraft.core.NonNullList; import net.minecraft.world.item.*; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CraftingInput; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; public class TeleporterMatrixSettingsCopyRecipe extends CustomRecipe { @@ -75,11 +72,6 @@ public ItemStack assemble(CraftingInput container, HolderLookup.Provider registr ItemStack.EMPTY; } - @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return new ItemStack(EPItems.TELEPORTER_MATRIX.get(), 2); - } - @Override public NonNullList getRemainingItems(CraftingInput container) { NonNullList remainders = NonNullList.withSize(container.size(), ItemStack.EMPTY); @@ -87,8 +79,8 @@ public NonNullList getRemainingItems(CraftingInput container) { for(int i = 0; i < remainders.size(); ++i) { ItemStack itemstack = container.getItem(i); if(!itemstack.isEmpty()) { - if(itemstack.hasCraftingRemainingItem()) { - remainders.set(i, itemstack.getCraftingRemainingItem()); + if(!itemstack.getCraftingRemainder().isEmpty()) { + remainders.set(i, itemstack.getCraftingRemainder()); }else if(itemstack.is(EPItems.TELEPORTER_MATRIX.get()) && TeleporterMatrixItem.isLinked(itemstack)) { remainders.set(i, itemstack.copyWithCount(1)); } @@ -99,17 +91,7 @@ public NonNullList getRemainingItems(CraftingInput container) { } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPItems.TELEPORTER_MATRIX.get()); - } - - @Override - public RecipeSerializer getSerializer() { + public RecipeSerializer getSerializer() { return EPRecipes.TELEPORTER_MATRIX_SETTINGS_COPY_SERIALIZER.get(); } - - @Override - public boolean canCraftInDimensions(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 92a2964eb..5f3183eb2 100644 --- a/src/main/java/me/jddev0/ep/recipe/ThermalGeneratorRecipe.java +++ b/src/main/java/me/jddev0/ep/recipe/ThermalGeneratorRecipe.java @@ -5,7 +5,6 @@ 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.core.HolderLookup; import net.minecraft.core.registries.BuiltInRegistries; @@ -13,14 +12,13 @@ import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeInput; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.RecipeType; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; import net.minecraft.world.level.material.Fluid; -public class ThermalGeneratorRecipe implements Recipe { +import java.util.List; + +public class ThermalGeneratorRecipe implements EnergizedPowerBaseRecipe { private final Fluid[] input; private final int energyProduction; @@ -48,33 +46,43 @@ public ItemStack assemble(RecipeInput container, HolderLookup.Provider registrie } @Override - public boolean canCraftInDimensions(int width, int height) { + public PlacementInfo placementInfo() { + return PlacementInfo.NOT_PLACEABLE; + } + + @Override + public boolean isSpecial() { return true; } @Override - public ItemStack getResultItem(HolderLookup.Provider registries) { - return ItemStack.EMPTY; + public RecipeBookCategory recipeBookCategory() { + return EPRecipes.THERMAL_GENERATOR_CATEGORY.get(); } @Override - public ItemStack getToastSymbol() { - return new ItemStack(EPBlocks.THERMAL_GENERATOR_ITEM.get()); + public RecipeSerializer> getSerializer() { + return Serializer.INSTANCE; } @Override - public boolean isSpecial() { - 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 +100,7 @@ private Serializer() {} private final MapCodec CODEC = RecordCodecBuilder.mapCodec((instance) -> { return instance.group(Codec.either(new ArrayCodec<>(BuiltInRegistries.FLUID.byNameCodec(), Fluid[]::new), - BuiltInRegistries.FLUID.byNameCodec()).fieldOf("input").forGetter((recipe) -> { + BuiltInRegistries.FLUID.byNameCodec()).fieldOf("ingredient").forGetter((recipe) -> { return recipe.input.length == 1?Either.right(recipe.input[0]):Either.left(recipe.input); }), Codec.INT.fieldOf("energy").forGetter((recipe) -> { return recipe.energyProduction; @@ -121,7 +129,7 @@ private static ThermalGeneratorRecipe read(RegistryFriendlyByteBuf buffer) { int fluidCount = buffer.readInt(); Fluid[] input = new Fluid[fluidCount]; for(int i = 0;i < fluidCount;i++) - input[i] = BuiltInRegistries.FLUID.get(buffer.readResourceLocation()); + input[i] = BuiltInRegistries.FLUID.getValue(buffer.readResourceLocation()); int energyProduction = buffer.readInt(); diff --git a/src/main/java/me/jddev0/ep/registry/tags/CommonBlockTags.java b/src/main/java/me/jddev0/ep/registry/tags/CommonBlockTags.java index 1688efa00..bfddcd9b5 100644 --- a/src/main/java/me/jddev0/ep/registry/tags/CommonBlockTags.java +++ b/src/main/java/me/jddev0/ep/registry/tags/CommonBlockTags.java @@ -3,7 +3,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; public final class CommonBlockTags { 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 60057be7c..549212fd6 100644 --- a/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerBiomeTags.java +++ b/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerBiomeTags.java @@ -2,7 +2,6 @@ import me.jddev0.ep.api.EPAPI; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.level.biome.Biome; 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 9d31354f6..04a9f0bb7 100644 --- a/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerItemTags.java +++ b/src/main/java/me/jddev0/ep/registry/tags/EnergizedPowerItemTags.java @@ -2,7 +2,6 @@ import me.jddev0.ep.api.EPAPI; import net.minecraft.core.registries.Registries; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterScreen.java index 0215a4420..2fd07e059 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedAutoCrafterScreen.java @@ -5,8 +5,8 @@ import me.jddev0.ep.networking.packet.*; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -74,27 +74,27 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 89, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 89, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17, 256, 256); } private void renderCheckboxes(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { if(menu.isIgnoreNBT()) { //Ignore NBT checkbox - guiGraphics.blit(TEXTURE, x + 158, y + 16, 176, 70, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 158, y + 16, 176, 70, 11, 11, 256, 256); } if(menu.isSecondaryExtractMode()) { //Extract mode checkbox [2] - guiGraphics.blit(TEXTURE, x + 158, y + 38, 187, 81, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 158, y + 38, 187, 81, 11, 11, 256, 256); }else { //Extract mode checkbox [1] - guiGraphics.blit(TEXTURE, x + 158, y + 38, 176, 81, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 158, y + 38, 176, 81, 11, 11, 256, 256); } - guiGraphics.blit(TEXTURE, x + 96, y + 16, 176 + 11 * menu.getRecipeIndex(), 81, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 96, y + 16, 176 + 11 * menu.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 5d339516d..a14cc62c2 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedChargerMenu.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedChargerMenu.java @@ -1,7 +1,7 @@ package me.jddev0.ep.screen; 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.ItemCapabilityMenuHelper; import me.jddev0.ep.inventory.UpgradeModuleSlot; import me.jddev0.ep.inventory.upgrade.UpgradeModuleInventory; @@ -20,7 +20,7 @@ import net.minecraft.world.level.block.entity.BlockEntity; import net.neoforged.neoforge.items.SlotItemHandler; -public class AdvancedChargerMenu extends UpgradableEnergyStorageMenu +public class AdvancedChargerMenu extends UpgradableEnergyStorageMenu implements IEnergyStorageConsumerIndicatorBarMenu, IConfigurableMenu { private final ContainerData data; diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedChargerScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedChargerScreen.java index 604fca5dc..fdf5b6fd2 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedChargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedChargerScreen.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedCrusherScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedCrusherScreen.java index b9a3cf886..25cd55cf1 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedCrusherScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedCrusherScreen.java @@ -4,8 +4,8 @@ import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import me.jddev0.ep.util.FluidUtils; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -40,12 +40,12 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y, int tank) { - guiGraphics.blit(TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52, 256, 256); } private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 90, y + 34, 176, 106, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 90, y + 34, 176, 106, menu.getScaledProgressArrowSize(), 17, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceScreen.java index 1d9f5019c..a1e6e73a7 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedPoweredFurnaceScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -32,6 +32,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrows(GuiGraphics guiGraphics, int x, int y) { for(int i = 0;i < 3;i++) if(menu.isCraftingActive(i)) - guiGraphics.blit(TEXTURE, x + 45 + 54 * i, y + 35, 176, 53, 12, menu.getScaledProgressArrowSize(i)); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 45 + 54 * i, y + 35, 176, 53, 12, menu.getScaledProgressArrowSize(i), 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerScreen.java b/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerScreen.java index 8d29f764c..98acedd14 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedPulverizerScreen.java @@ -4,8 +4,8 @@ import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import me.jddev0.ep.util.FluidUtils; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -40,12 +40,12 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(int tank, GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52, 256, 256); } private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 90, y + 34, 176, 106, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 90, y + 34, 176, 106, menu.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 846f20c80..1669fc077 100644 --- a/src/main/java/me/jddev0/ep/screen/AdvancedUnchargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AdvancedUnchargerScreen.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/me/jddev0/ep/screen/AlloyFurnaceScreen.java b/src/main/java/me/jddev0/ep/screen/AlloyFurnaceScreen.java index a4461912a..5569971eb 100644 --- a/src/main/java/me/jddev0/ep/screen/AlloyFurnaceScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AlloyFurnaceScreen.java @@ -4,7 +4,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.CoreShaders; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -23,12 +24,12 @@ public AlloyFurnaceScreen(AlloyFurnaceMenu menu, Inventory inventory, Component @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); renderProgressFlame(guiGraphics, x, y); renderProgressArrow(guiGraphics, x, y); @@ -37,13 +38,13 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, private void renderProgressFlame(GuiGraphics guiGraphics, int x, int y) { if(menu.isBurningFuel()) { int pos = menu.getScaledProgressFlameSize(); - guiGraphics.blit(TEXTURE, x + 36, y + 37 + 14 - pos, 176, 14 - pos, 14, pos); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 36, y + 37 + 14 - pos, 176, 14 - pos, 14, pos, 256, 256); } } private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 79, y + 34, 176, 14, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 79, y + 34, 176, 14, menu.getScaledProgressArrowSize(), 17, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/AssemblingMachineScreen.java b/src/main/java/me/jddev0/ep/screen/AssemblingMachineScreen.java index e92c94bd3..02998c3c9 100644 --- a/src/main/java/me/jddev0/ep/screen/AssemblingMachineScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AssemblingMachineScreen.java @@ -3,6 +3,7 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -36,6 +37,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 100, y + 36, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 100, y + 36, 176, 53, menu.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/AutoCrafterScreen.java b/src/main/java/me/jddev0/ep/screen/AutoCrafterScreen.java index b6f917353..49249848e 100644 --- a/src/main/java/me/jddev0/ep/screen/AutoCrafterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AutoCrafterScreen.java @@ -6,8 +6,8 @@ import me.jddev0.ep.networking.packet.SetCheckboxC2SPacket; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -69,24 +69,24 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 89, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 89, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17, 256, 256); } private void renderCheckboxes(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { if(menu.isIgnoreNBT()) { //Ignore NBT checkbox - guiGraphics.blit(TEXTURE, x + 158, y + 16, 176, 70, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 158, y + 16, 176, 70, 11, 11, 256, 256); } if(menu.isSecondaryExtractMode()) { //Extract mode checkbox [2] - guiGraphics.blit(TEXTURE, x + 158, y + 38, 187, 81, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 158, y + 38, 187, 81, 11, 11, 256, 256); }else { //Extract mode checkbox [1] - guiGraphics.blit(TEXTURE, x + 158, y + 38, 176, 81, 11, 11); + guiGraphics.blit(RenderType::guiTextured, 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 24544f570..ca576e034 100644 --- a/src/main/java/me/jddev0/ep/screen/AutoPressMoldMakerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AutoPressMoldMakerScreen.java @@ -5,8 +5,8 @@ import me.jddev0.ep.screen.base.SelectableRecipeMachineContainerScreen; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -41,7 +41,7 @@ protected void renderCurrentRecipeTooltip(GuiGraphics guiGraphics, int mouseX, i components.add(Component.translatable("tooltip.energizedpower.count_with_item.txt", output.getCount(), output.getHoverName())); components.add(Component.translatable("tooltip.energizedpower.press_mold_maker.btn.recipes", currentRecipe.value().getClayCount(), - Component.translatable(Items.CLAY_BALL.getDescriptionId())).withStyle(ChatFormatting.ITALIC)); + Items.CLAY_BALL.getName()).withStyle(ChatFormatting.ITALIC)); guiGraphics.renderTooltip(font, components, Optional.empty(), mouseX, mouseY); } @@ -59,7 +59,7 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 84, y + 43, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 84, y + 43, 176, 53, menu.getScaledProgressArrowSize(), 17, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/AutoStonecutterScreen.java b/src/main/java/me/jddev0/ep/screen/AutoStonecutterScreen.java index edccd0681..2e20ba075 100644 --- a/src/main/java/me/jddev0/ep/screen/AutoStonecutterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/AutoStonecutterScreen.java @@ -4,12 +4,13 @@ import me.jddev0.ep.screen.base.SelectableRecipeMachineContainerScreen; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeHolder; import net.minecraft.world.item.crafting.StonecutterRecipe; +import net.minecraft.world.item.crafting.display.SlotDisplayContext; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -29,12 +30,12 @@ public AutoStonecutterScreen(AutoStonecutterMenu menu, Inventory inventory, Comp @Override protected ItemStack getRecipeIcon(RecipeHolder currentRecipe) { - return currentRecipe.value().getResultItem(menu.getBlockEntity().getLevel().registryAccess()); + return currentRecipe.value().display().get(0).result().resolveForFirstStack(SlotDisplayContext.fromLevel(menu.getBlockEntity().getLevel())); } @Override protected void renderCurrentRecipeTooltip(GuiGraphics guiGraphics, int mouseX, int mouseY, RecipeHolder currentRecipe) { - ItemStack output = currentRecipe.value().getResultItem(menu.getBlockEntity().getLevel().registryAccess()); + ItemStack output = currentRecipe.value().display().get(0).result().resolveForFirstStack(SlotDisplayContext.fromLevel(menu.getBlockEntity().getLevel())); if(!output.isEmpty()) { List components = new ArrayList<>(2); components.add(Component.translatable("tooltip.energizedpower.count_with_item.txt", output.getCount(), @@ -58,7 +59,7 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 84, y + 43, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 84, y + 43, 176, 53, menu.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 e69e6c53f..dc812b690 100644 --- a/src/main/java/me/jddev0/ep/screen/BlockPlacerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/BlockPlacerScreen.java @@ -5,8 +5,8 @@ import me.jddev0.ep.networking.packet.SetCheckboxC2SPacket; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -56,7 +56,7 @@ private void renderCheckboxes(GuiGraphics guiGraphics, int x, int y, int mouseX, if(menu.isInverseRotation()) { //Inverse rotation checkbox - guiGraphics.blit(TEXTURE, x + 158, y + 16, 176, 53, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 158, y + 16, 176, 53, 11, 11, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/ChargerScreen.java b/src/main/java/me/jddev0/ep/screen/ChargerScreen.java index fcd5e3dcc..1879462f1 100644 --- a/src/main/java/me/jddev0/ep/screen/ChargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ChargerScreen.java @@ -3,12 +3,10 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; - @OnlyIn(Dist.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 2fcb1fa31..d00b2c371 100644 --- a/src/main/java/me/jddev0/ep/screen/ChargingStationScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ChargingStationScreen.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.UpgradableEnergyStorageContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/me/jddev0/ep/screen/CoalEngineScreen.java b/src/main/java/me/jddev0/ep/screen/CoalEngineScreen.java index 9d3b48386..64e2e8063 100644 --- a/src/main/java/me/jddev0/ep/screen/CoalEngineScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CoalEngineScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -32,7 +32,7 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressFlame(GuiGraphics guiGraphics, int x, int y) { if(menu.isProducingActive()) { int pos = menu.getScaledProgressFlameSize(); - guiGraphics.blit(TEXTURE, x + 81, y + 28 + pos, 176, 53 + pos, 14, 14 - pos); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 81, y + 28 + pos, 176, 53 + pos, 14, 14 - pos, 256, 256); } } } diff --git a/src/main/java/me/jddev0/ep/screen/CompressorScreen.java b/src/main/java/me/jddev0/ep/screen/CompressorScreen.java index e29b9db6f..6379b3d1b 100644 --- a/src/main/java/me/jddev0/ep/screen/CompressorScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CompressorScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 79, y + 30, 176, 53, menu.getScaledProgressArrowSize(), 25); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 79, y + 30, 176, 53, menu.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 b457a13c5..b77414b47 100644 --- a/src/main/java/me/jddev0/ep/screen/CreativeBatteryBoxScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CreativeBatteryBoxScreen.java @@ -6,7 +6,9 @@ import me.jddev0.ep.networking.packet.SetCheckboxC2SPacket; import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.CoreShaders; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -54,12 +56,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); renderCheckboxes(guiGraphics, x, y, mouseX, mouseY); renderCheckboxLabels(guiGraphics, x, y, mouseX, mouseY); @@ -69,13 +71,13 @@ private void renderCheckboxes(GuiGraphics guiGraphics, int x, int y, int mouseX, if(menu.isEnergyProduction()) { //Energy Production checkbox - guiGraphics.blit(TEXTURE, x + 10, y + 28, 176, 0, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 10, y + 28, 176, 0, 11, 11, 256, 256); } if(menu.isEnergyConsumption()) { //Energy Consumption checkbox - guiGraphics.blit(TEXTURE, x + 10, y + 46, 176, 0, 11, 11); + guiGraphics.blit(RenderType::guiTextured, 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 034e9482a..d3eec0e59 100644 --- a/src/main/java/me/jddev0/ep/screen/CreativeFluidTankScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CreativeFluidTankScreen.java @@ -7,7 +7,9 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.CoreShaders; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -63,19 +65,19 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); renderFluidMeterContent(guiGraphics, menu.getFluid(0), menu.getTankCapacity(0), x + 48, y + 17, 80, 52); renderFluidMeterOverlay(guiGraphics, x, y); } private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + 48, y + 17, 176, 0, 80, 52); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 48, y + 17, 176, 0, 80, 52, 256, 256); } @Override diff --git a/src/main/java/me/jddev0/ep/screen/CrusherScreen.java b/src/main/java/me/jddev0/ep/screen/CrusherScreen.java index a03210987..8dde28dc9 100644 --- a/src/main/java/me/jddev0/ep/screen/CrusherScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CrusherScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 80, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 80, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberScreen.java b/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberScreen.java index d277d1061..5870745d3 100644 --- a/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberScreen.java +++ b/src/main/java/me/jddev0/ep/screen/CrystalGrowthChamberScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 80, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 80, y + 34, 176, 53, menu.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 78ace2423..1f1475261 100644 --- a/src/main/java/me/jddev0/ep/screen/DrainScreen.java +++ b/src/main/java/me/jddev0/ep/screen/DrainScreen.java @@ -5,7 +5,9 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import me.jddev0.ep.util.FluidUtils; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.CoreShaders; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -28,19 +30,19 @@ public DrainScreen(DrainMenu menu, Inventory inventory, Component component) { @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); renderFluidMeterContent(guiGraphics, menu.getFluid(), menu.getTankCapacity(), x + 80, y + 17, 16, 52); renderFluidMeterOverlay(guiGraphics, x, y); } private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + 80, y + 17, 176, 0, 16, 52); + guiGraphics.blit(RenderType::guiTextured, 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 8da168656..4cb633ce8 100644 --- a/src/main/java/me/jddev0/ep/screen/EnergizedPowerBookScreen.java +++ b/src/main/java/me/jddev0/ep/screen/EnergizedPowerBookScreen.java @@ -13,9 +13,7 @@ import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.PageButton; -import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.TextureManager; @@ -305,7 +303,7 @@ public boolean handleComponentClicked(Style style) { @Override public void renderBackground(GuiGraphics guiGraphics, int mouseX, int mouseY, float delta) { super.renderBackground(guiGraphics, mouseX, mouseY, delta); - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); if(formattedPages == null) @@ -313,11 +311,11 @@ public void renderBackground(GuiGraphics guiGraphics, int mouseX, int mouseY, fl int startX = (width - 226) / 2; if(currentPage == 0) { - guiGraphics.blit(FRONT_COVER, startX, 2, 0, 0, 226, 230); + guiGraphics.blit(RenderType::guiTextured, FRONT_COVER, startX, 2, 0, 0, 226, 230, 256, 256); }else if(currentPage == getPageCount() - 1) { - guiGraphics.blit(BACK_COVER, startX, 2, 0, 0, 226, 230); + guiGraphics.blit(RenderType::guiTextured, BACK_COVER, startX, 2, 0, 0, 226, 230, 256, 256); }else { - guiGraphics.blit(TEXTURE, startX, 2, 0, 0, 226, 230); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, startX, 2, 0, 0, 226, 230, 256, 256); } if(!isCurrentPageCached) { @@ -430,7 +428,7 @@ private void renderImageCentered(GuiGraphics guiGraphics, ResourceLocation image y = (int)((230 - 256 * scaleFactor) * .5f) + 2; guiGraphics.pose().scale(scaleFactor, scaleFactor, 1.f); - guiGraphics.blit(image, (int)((width / scaleFactor - 256) * .5f), (int)(y / scaleFactor), 0, 0, 256, 256); + guiGraphics.blit(RenderType::guiTextured, image, (int)((width / scaleFactor - 256) * .5f), (int)(y / scaleFactor), 0, 0, 256, 256, 256, 256); guiGraphics.pose().scale(1/scaleFactor, 1/scaleFactor, 1.f); } @@ -438,7 +436,7 @@ private void renderBlockCentered(GuiGraphics guiGraphics, ResourceLocation block if(y == -1) //Centered y = (int)((230 - 64) * .5f) + 2; - Block block = BuiltInRegistries.BLOCK.get(blockResourceLocation); + Block block = BuiltInRegistries.BLOCK.getValue(blockResourceLocation); ItemStack itemStack = new ItemStack(block); ItemRenderer itemRenderer = minecraft.getItemRenderer(); diff --git a/src/main/java/me/jddev0/ep/screen/EnergizerScreen.java b/src/main/java/me/jddev0/ep/screen/EnergizerScreen.java index ae3e271b8..5c790e8a3 100644 --- a/src/main/java/me/jddev0/ep/screen/EnergizerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/EnergizerScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -32,12 +32,12 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 89, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 89, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17, 256, 256); } private void renderActiveOverlay(GuiGraphics guiGraphics, int x, int y) { if(menu.isCrafting()) { - guiGraphics.blit(TEXTURE, x + 31, y + 18, 176, 70, 50, 50); + guiGraphics.blit(RenderType::guiTextured, 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 477b37d42..13d14dc51 100644 --- a/src/main/java/me/jddev0/ep/screen/FiltrationPlantScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FiltrationPlantScreen.java @@ -6,6 +6,7 @@ import me.jddev0.ep.util.FluidUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -37,7 +38,7 @@ public FiltrationPlantScreen(FiltrationPlantMenu menu, Inventory inventory, Comp @Override protected ItemStack getRecipeIcon(RecipeHolder currentRecipe) { ResourceLocation icon = currentRecipe.value().getIcon(); - return new ItemStack(BuiltInRegistries.ITEM.get(icon)); + return new ItemStack(BuiltInRegistries.ITEM.getValue(icon)); } @Override @@ -87,13 +88,13 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(int tank, GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52, 256, 256); } private void renderProgressArrows(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) { for(int i = 0;i < 2;i++) { - guiGraphics.blit(TEXTURE, x + 67, y + 34 + 27*i, 176, 106, menu.getScaledProgressArrowSize(), 9); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 67, y + 34 + 27*i, 176, 106, menu.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 fe0748f45..41cc076d7 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidDrainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidDrainerScreen.java @@ -4,8 +4,8 @@ import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import me.jddev0.ep.util.FluidUtils; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -35,7 +35,7 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + 152, y + 17, 176, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, 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 c00ad9775..78a859d60 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidFillerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidFillerScreen.java @@ -4,8 +4,8 @@ import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import me.jddev0.ep.util.FluidUtils; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -35,7 +35,7 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + 152, y + 17, 176, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, 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 cc5b9f0a5..05f9ed2e2 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidPumpScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidPumpScreen.java @@ -6,9 +6,9 @@ import me.jddev0.ep.util.FluidUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.level.material.FluidState; import net.neoforged.api.distmarker.Dist; @@ -49,7 +49,7 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + 206, y + 17, 230, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 206, y + 17, 230, 53, 16, 52, 256, 256); } private void renderInfoText(GuiGraphics guiGraphics, 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 573b87d7a..b8c846f42 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidTankScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidTankScreen.java @@ -9,7 +9,8 @@ import me.jddev0.ep.util.FluidUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.CoreShaders; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -71,12 +72,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); for(int i = 0;i < 2;i++) { if(i == 0) @@ -92,16 +93,16 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y, int tank) { if(tank == 0) - guiGraphics.blit(TEXTURE, x + 80, y + 17, 176, 0, 16, 52); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 80, y + 17, 176, 0, 16, 52, 256, 256); else if(tank == 1) - guiGraphics.blit(TEXTURE, x + 152, y + 35, 176, 64, 16, 16); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 152, y + 35, 176, 64, 16, 16, 256, 256); } private void renderCheckboxes(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { if(menu.isIgnoreNBT()) { //Ignore NBT checkbox - guiGraphics.blit(TEXTURE, x + 158, y + 16, 176, 53, 11, 11); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 158, y + 16, 176, 53, 11, 11, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/FluidTransposerScreen.java b/src/main/java/me/jddev0/ep/screen/FluidTransposerScreen.java index c7517aa2f..4f01eab38 100644 --- a/src/main/java/me/jddev0/ep/screen/FluidTransposerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/FluidTransposerScreen.java @@ -7,8 +7,8 @@ import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import me.jddev0.ep.util.FluidUtils; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -62,12 +62,12 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + 152, y + 17, 176, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 152, y + 17, 176, 53, 16, 52, 256, 256); } private void renderButtons(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { if(isHovering(114, 47, 20, 20, mouseX, mouseY)) - guiGraphics.blit(TEXTURE, x + 114, y + 47, 176, 135, 20, 20); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 114, y + 47, 176, 135, 20, 20, 256, 256); ItemStack output = new ItemStack(menu.getMode() == FluidTransposerBlockEntity.Mode.EMPTYING?Items.BUCKET:Items.WATER_BUCKET); guiGraphics.pose().pushPose(); @@ -81,14 +81,14 @@ private void renderButtons(GuiGraphics guiGraphics, int x, int y, int mouseX, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { int arrowPosY = menu.getMode() == FluidTransposerBlockEntity.Mode.EMPTYING?106:120; - guiGraphics.blit(TEXTURE, x + 114, y + 19, 176, arrowPosY, 20, 14); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 114, y + 19, 176, arrowPosY, 20, 14, 256, 256); if(menu.isCraftingActive()) { if(menu.getMode() == FluidTransposerBlockEntity.Mode.EMPTYING) - guiGraphics.blit(TEXTURE, x + 114, y + 19, 196, arrowPosY, menu.getScaledProgressArrowSize(), 14); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 114, y + 19, 196, arrowPosY, menu.getScaledProgressArrowSize(), 14, 256, 256); else - guiGraphics.blit(TEXTURE, x + 134 - menu.getScaledProgressArrowSize(), y + 19, - 216 - menu.getScaledProgressArrowSize(), arrowPosY, menu.getScaledProgressArrowSize(), 14); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 134 - menu.getScaledProgressArrowSize(), y + 19, + 216 - menu.getScaledProgressArrowSize(), arrowPosY, menu.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 7249df2ca..b6aafe42b 100644 --- a/src/main/java/me/jddev0/ep/screen/HeatGeneratorScreen.java +++ b/src/main/java/me/jddev0/ep/screen/HeatGeneratorScreen.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.UpgradableEnergyStorageContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/me/jddev0/ep/screen/InductionSmelterScreen.java b/src/main/java/me/jddev0/ep/screen/InductionSmelterScreen.java index d58967cd4..85a146a6d 100644 --- a/src/main/java/me/jddev0/ep/screen/InductionSmelterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/InductionSmelterScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 104, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 104, y + 34, 176, 53, menu.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 4b24ff987..e61fcd3eb 100644 --- a/src/main/java/me/jddev0/ep/screen/InventoryChargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/InventoryChargerScreen.java @@ -5,7 +5,8 @@ import me.jddev0.ep.item.InventoryChargerItem; import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.CoreShaders; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -24,12 +25,12 @@ public InventoryChargerScreen(InventoryChargerMenu menu, Inventory inventory, Co @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 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 ec1623f24..c4ec5041b 100644 --- a/src/main/java/me/jddev0/ep/screen/InventoryTeleporterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/InventoryTeleporterScreen.java @@ -4,7 +4,9 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.CoreShaders; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -23,12 +25,12 @@ public InventoryTeleporterScreen(InventoryTeleporterMenu menu, Inventory invento @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 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 70c11a676..a4f15e675 100644 --- a/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltLoaderScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltLoaderScreen.java @@ -4,7 +4,9 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.CoreShaders; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -23,12 +25,12 @@ public ItemConveyorBeltLoaderScreen(ItemConveyorBeltLoaderMenu menu, Inventory i @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 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 c5027c4af..2973c64ac 100644 --- a/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltSorterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ItemConveyorBeltSorterScreen.java @@ -6,7 +6,8 @@ import me.jddev0.ep.networking.packet.SetCheckboxC2SPacket; import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.CoreShaders; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -56,12 +57,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); renderOutputBeltConnectionState(guiGraphics, x, y, mouseX, mouseY); renderCheckboxes(guiGraphics, x, y, mouseX, mouseY); @@ -70,20 +71,20 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, private void renderOutputBeltConnectionState(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { for(int i = 0;i < 3;i++) if(menu.isOutputBeltConnected(i)) - guiGraphics.blit(TEXTURE, x + 10, y + 18 + i * 18, 176, i * 14, 30, 14); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 10, y + 18 + i * 18, 176, i * 14, 30, 14, 256, 256); } private void renderCheckboxes(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { for(int i = 0;i < 3;i++) { if(menu.isWhitelist(i)) { //Whitelist checkbox [3x] - guiGraphics.blit(TEXTURE, x + 136, y + 19 + i * 18, 176, 42, 13, 13); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 136, y + 19 + i * 18, 176, 42, 13, 13, 256, 256); } if(menu.isIgnoreNBT(i)) { //Ignore NBT checkbox [3x] - guiGraphics.blit(TEXTURE, x + 153, y + 19 + i * 18, 176, 55, 13, 13); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 153, y + 19 + i * 18, 176, 55, 13, 13, 256, 256); } } } diff --git a/src/main/java/me/jddev0/ep/screen/MetalPressScreen.java b/src/main/java/me/jddev0/ep/screen/MetalPressScreen.java index 387101dc8..00167d273 100644 --- a/src/main/java/me/jddev0/ep/screen/MetalPressScreen.java +++ b/src/main/java/me/jddev0/ep/screen/MetalPressScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 80, y + 41, 176, 53, menu.getScaledProgressArrowSize(), 10); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 80, y + 41, 176, 53, menu.getScaledProgressArrowSize(), 10, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberScreen.java b/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberScreen.java index 931d85822..6ddc8eb39 100644 --- a/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberScreen.java +++ b/src/main/java/me/jddev0/ep/screen/PlantGrowthChamberScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 94, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 94, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/PoweredFurnaceScreen.java b/src/main/java/me/jddev0/ep/screen/PoweredFurnaceScreen.java index ff7fecabe..84b4c07d2 100644 --- a/src/main/java/me/jddev0/ep/screen/PoweredFurnaceScreen.java +++ b/src/main/java/me/jddev0/ep/screen/PoweredFurnaceScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 80, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 80, y + 34, 176, 53, menu.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 0c641d7bf..eff0679ab 100644 --- a/src/main/java/me/jddev0/ep/screen/PressMoldMakerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/PressMoldMakerScreen.java @@ -8,7 +8,8 @@ import me.jddev0.ep.screen.base.EnergizedPowerBaseContainerScreen; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.CoreShaders; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -47,7 +48,7 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { if(index < menu.getRecipeList().size() && menu.getRecipeList().get(index).getSecond()) { ModMessages.sendToServer(new CraftPressMoldMakerRecipeC2SPacket(menu.getBlockEntity().getBlockPos(), - menu.getRecipeList().get(index).getFirst().id())); + menu.getRecipeList().get(index).getFirst().id().location())); clicked = true; } } @@ -79,12 +80,12 @@ public boolean mouseClicked(double mouseX, double mouseY, int mouseButton) { @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); renderButtons(guiGraphics, x, y, mouseX, mouseY); } @@ -98,9 +99,9 @@ private void renderButtons(GuiGraphics guiGraphics, int x, int y, int mouseX, in if(menu.getRecipeList().get(i).getSecond()) { if(isHovering(btnX, btnY, 20, 20, mouseX, mouseY)) { - guiGraphics.blit(TEXTURE, x + btnX, y + btnY, 176, 20, 20, 20); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + btnX, y + btnY, 176, 20, 20, 20, 256, 256); }else { - guiGraphics.blit(TEXTURE, x + btnX, y + btnY, 176, 0, 20, 20); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + btnX, y + btnY, 176, 0, 20, 20, 256, 256); } } @@ -118,18 +119,18 @@ private void renderButtons(GuiGraphics guiGraphics, int x, int y, int mouseX, in //Up button if(scrollIndexOffset > 0) { if(isHovering(155, 19, 11, 12, mouseX, mouseY)) { - guiGraphics.blit(TEXTURE, x + 155, y + 19, 187, 40, 11, 12); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 155, y + 19, 187, 40, 11, 12, 256, 256); }else { - guiGraphics.blit(TEXTURE, x + 155, y + 19, 176, 40, 11, 12); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 155, y + 19, 176, 40, 11, 12, 256, 256); } } //Down button if(scrollIndexOffset + 8 < menu.getRecipeList().size()) { if(isHovering(155, 55, 11, 12, mouseX, mouseY)) { - guiGraphics.blit(TEXTURE, x + 155, y + 55, 187, 52, 11, 12); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 155, y + 55, 187, 52, 11, 12, 256, 256); }else { - guiGraphics.blit(TEXTURE, x + 155, y + 55, 176, 52, 11, 12); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 155, y + 55, 176, 52, 11, 12, 256, 256); } } } diff --git a/src/main/java/me/jddev0/ep/screen/PulverizerScreen.java b/src/main/java/me/jddev0/ep/screen/PulverizerScreen.java index 9ced710f8..748be58a0 100644 --- a/src/main/java/me/jddev0/ep/screen/PulverizerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/PulverizerScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 68, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 68, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17, 256, 256); } } diff --git a/src/main/java/me/jddev0/ep/screen/SawmillScreen.java b/src/main/java/me/jddev0/ep/screen/SawmillScreen.java index 86d838b0d..15c2f0b55 100644 --- a/src/main/java/me/jddev0/ep/screen/SawmillScreen.java +++ b/src/main/java/me/jddev0/ep/screen/SawmillScreen.java @@ -3,8 +3,8 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -31,6 +31,6 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in private void renderProgressArrow(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) - guiGraphics.blit(TEXTURE, x + 68, y + 34, 176, 53, menu.getScaledProgressArrowSize(), 17); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 68, y + 34, 176, 53, menu.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 534ee7496..83ee3d4d8 100644 --- a/src/main/java/me/jddev0/ep/screen/SolarPanelScreen.java +++ b/src/main/java/me/jddev0/ep/screen/SolarPanelScreen.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.UpgradableEnergyStorageContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/me/jddev0/ep/screen/StoneSolidifierScreen.java b/src/main/java/me/jddev0/ep/screen/StoneSolidifierScreen.java index 9afa121c5..14cd89862 100644 --- a/src/main/java/me/jddev0/ep/screen/StoneSolidifierScreen.java +++ b/src/main/java/me/jddev0/ep/screen/StoneSolidifierScreen.java @@ -5,8 +5,8 @@ import me.jddev0.ep.screen.base.SelectableRecipeMachineContainerScreen; import me.jddev0.ep.util.FluidUtils; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.RecipeHolder; @@ -64,14 +64,14 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(int tank, GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + (tank == 0?44:152), y + 17, 176, 53, 16, 52, 256, 256); } private void renderProgressArrows(GuiGraphics guiGraphics, int x, int y) { if(menu.isCraftingActive()) { - guiGraphics.blit(TEXTURE, x + 69, y + 45, 176, 106, menu.getScaledProgressArrowSize(), 14); - guiGraphics.blit(TEXTURE, x + 143 - menu.getScaledProgressArrowSize(), y + 45, - 196 - menu.getScaledProgressArrowSize(), 120, menu.getScaledProgressArrowSize(), 14); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 69, y + 45, 176, 106, menu.getScaledProgressArrowSize(), 14, 256, 256); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 143 - menu.getScaledProgressArrowSize(), y + 45, + 196 - menu.getScaledProgressArrowSize(), 120, menu.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 6378ad21a..a42656f1c 100644 --- a/src/main/java/me/jddev0/ep/screen/TeleporterScreen.java +++ b/src/main/java/me/jddev0/ep/screen/TeleporterScreen.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.EnergyStorageContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/me/jddev0/ep/screen/ThermalGeneratorScreen.java b/src/main/java/me/jddev0/ep/screen/ThermalGeneratorScreen.java index 360e9abef..c752fcd2e 100644 --- a/src/main/java/me/jddev0/ep/screen/ThermalGeneratorScreen.java +++ b/src/main/java/me/jddev0/ep/screen/ThermalGeneratorScreen.java @@ -4,8 +4,8 @@ import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import me.jddev0.ep.util.FluidUtils; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -36,7 +36,7 @@ protected void renderBgNormalView(GuiGraphics guiGraphics, float partialTick, in } private void renderFluidMeterOverlay(GuiGraphics guiGraphics, int x, int y) { - guiGraphics.blit(TEXTURE, x + 80, y + 17, 176, 53, 16, 52); + guiGraphics.blit(RenderType::guiTextured, 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 6db7e21bc..9b6778569 100644 --- a/src/main/java/me/jddev0/ep/screen/TimeControllerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/TimeControllerScreen.java @@ -7,9 +7,9 @@ import me.jddev0.ep.screen.base.EnergyStorageContainerScreen; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; @@ -74,19 +74,19 @@ private void renderButtons(GuiGraphics guiGraphics, int x, int y, int mouseX, in if(isHovering(34, 34, 18, 18, mouseX, mouseY)) { //Day button - guiGraphics.blit(TEXTURE, x + 34, y + 34, 176, 52, 18, 18); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 34, y + 34, 176, 52, 18, 18, 256, 256); }else if(isHovering(70, 34, 18, 18, mouseX, mouseY)) { //Noon button - guiGraphics.blit(TEXTURE, x + 70, y + 34, 176, 70, 18, 18); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 70, y + 34, 176, 70, 18, 18, 256, 256); }else if(isHovering(106, 34, 18, 18, mouseX, mouseY)) { //Night button - guiGraphics.blit(TEXTURE, x + 106, y + 34, 176, 88, 18, 18); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 106, y + 34, 176, 88, 18, 18, 256, 256); }else if(isHovering(142, 34, 18, 18, mouseX, mouseY)) { //Midnight button - guiGraphics.blit(TEXTURE, x + 142, y + 34, 176, 106, 18, 18); + guiGraphics.blit(RenderType::guiTextured, 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 f0c4fecd1..511a0e2a3 100644 --- a/src/main/java/me/jddev0/ep/screen/UnchargerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/UnchargerScreen.java @@ -3,7 +3,6 @@ import me.jddev0.ep.api.EPAPI; import me.jddev0.ep.screen.base.ConfigurableUpgradableEnergyStorageContainerScreen; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; diff --git a/src/main/java/me/jddev0/ep/screen/WeatherControllerScreen.java b/src/main/java/me/jddev0/ep/screen/WeatherControllerScreen.java index b24a225f0..a807156b8 100644 --- a/src/main/java/me/jddev0/ep/screen/WeatherControllerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/WeatherControllerScreen.java @@ -6,8 +6,8 @@ import me.jddev0.ep.screen.base.UpgradableEnergyStorageContainerScreen; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; @@ -68,23 +68,23 @@ private void renderButtons(GuiGraphics guiGraphics, int x, int y, int mouseX, in //Weather clear button if(isHovering(52, 34, 18, 18, mouseX, mouseY)) { - guiGraphics.blit(TEXTURE, x + 52, y + 34, 176, 52, 18, 18); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 52, y + 34, 176, 52, 18, 18, 256, 256); }else if(selectedWeatherType == 0) { - guiGraphics.blit(TEXTURE, x + 52, y + 34, 194, 52, 18, 18); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 52, y + 34, 194, 52, 18, 18, 256, 256); } //Weather rain button if(isHovering(88, 34, 18, 18, mouseX, mouseY)) { - guiGraphics.blit(TEXTURE, x + 88, y + 34, 176, 70, 18, 18); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 88, y + 34, 176, 70, 18, 18, 256, 256); }else if(selectedWeatherType == 1) { - guiGraphics.blit(TEXTURE, x + 88, y + 34, 194, 70, 18, 18); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 88, y + 34, 194, 70, 18, 18, 256, 256); } //Weather thunder button if(isHovering(124, 34, 18, 18, mouseX, mouseY)) { - guiGraphics.blit(TEXTURE, x + 124, y + 34, 176, 88, 18, 18); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + 124, y + 34, 176, 88, 18, 18, 256, 256); }else if(selectedWeatherType == 2) { - guiGraphics.blit(TEXTURE, x + 124, y + 34, 194, 88, 18, 18); + guiGraphics.blit(RenderType::guiTextured, 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 ffa3651ba..dc859b1d8 100644 --- a/src/main/java/me/jddev0/ep/screen/base/ConfigurableUpgradableEnergyStorageContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/ConfigurableUpgradableEnergyStorageContainerScreen.java @@ -6,6 +6,7 @@ import me.jddev0.ep.networking.packet.ChangeComparatorModeC2SPacket; import me.jddev0.ep.networking.packet.ChangeRedstoneModeC2SPacket; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -65,18 +66,18 @@ protected void renderConfiguration(GuiGraphics guiGraphics, int x, int y, int mo int ordinal = redstoneMode.ordinal(); if(isHovering(-22, 26, 20, 20, mouseX, mouseY)) { - guiGraphics.blit(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 26, 20 * ordinal, 20, 20, 20); + guiGraphics.blit(RenderType::guiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 26, 20 * ordinal, 20, 20, 20, 256, 256); }else { - guiGraphics.blit(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 26, 20 * ordinal, 0, 20, 20); + guiGraphics.blit(RenderType::guiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 26, 20 * ordinal, 0, 20, 20, 256, 256); } ComparatorMode comparatorMode = menu.getComparatorMode(); ordinal = comparatorMode.ordinal(); if(isHovering(-22, 50, 20, 20, mouseX, mouseY)) { - guiGraphics.blit(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 50, 20 * ordinal, 60, 20, 20); + guiGraphics.blit(RenderType::guiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 50, 20 * ordinal, 60, 20, 20, 256, 256); }else { - guiGraphics.blit(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 50, 20 * ordinal, 40, 20, 20); + guiGraphics.blit(RenderType::guiTextured, 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 1b17719e2..c628070c6 100644 --- a/src/main/java/me/jddev0/ep/screen/base/EnergizedPowerBaseContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/EnergizedPowerBaseContainerScreen.java @@ -5,7 +5,8 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.CoreShaders; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -59,32 +60,32 @@ private void renderFluidStack(GuiGraphics guiGraphics, FluidStack fluidStack, in RenderSystem.setShaderTexture(0, InventoryMenu.BLOCK_ATLAS); - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.setShaderColor((fluidColorTint >> 16 & 0xFF) / 255.f, - (fluidColorTint >> 8 & 0xFF) / 255.f, (fluidColorTint & 0xFF) / 255.f, - (fluidColorTint >> 24 & 0xFF) / 255.f); + RenderSystem.setShader(CoreShaders.POSITION_TEX); Matrix4f mat = guiGraphics.pose().last().pose(); 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.getU0(); - float u1 = stillFluidSprite.getU1(); - float v0 = stillFluidSprite.getV0(); - float v1 = stillFluidSprite.getV1(); - u1 = u1 - ((16 - width) / 16.f * (u1 - u0)); - v0 = v0 - ((16 - height) / 16.f * (v0 - v1)); - - Tesselator tesselator = Tesselator.getInstance(); - BufferBuilder bufferBuilder = tesselator.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX); - bufferBuilder.addVertex(mat, xOffset, yOffset, 0).setUv(u0, v1); - bufferBuilder.addVertex(mat, xOffset + width, yOffset, 0).setUv(u1, v1); - bufferBuilder.addVertex(mat, xOffset + width, yOffset - height, 0).setUv(u1, v0); - bufferBuilder.addVertex(mat, xOffset, yOffset - height, 0).setUv(u0, v0); - BufferUploader.drawWithShader(bufferBuilder.buildOrThrow()); + int finalXOffset = xOffset; + int finalYOffset = yOffset; + + guiGraphics.drawSpecial(vertexConsumers -> { + int width = Math.min(w - finalXOffset, 16); + int height = Math.min(finalYOffset - fluidMeterPos, 16); + + float u0 = stillFluidSprite.getU0(); + float u1 = stillFluidSprite.getU1(); + float v0 = stillFluidSprite.getV0(); + float v1 = stillFluidSprite.getV1(); + u1 = u1 - ((16 - width) / 16.f * (u1 - u0)); + v0 = v0 - ((16 - height) / 16.f * (v0 - v1)); + + VertexConsumer bufferBuilder = vertexConsumers.getBuffer(RenderType.guiTextured(stillFluidSprite.atlasLocation())); + bufferBuilder.addVertex(mat, finalXOffset, finalYOffset, 0).setColor(fluidColorTint).setUv(u0, v1); + bufferBuilder.addVertex(mat, finalXOffset + width, finalYOffset, 0).setColor(fluidColorTint).setUv(u1, v1); + bufferBuilder.addVertex(mat, finalXOffset + width, finalYOffset - height, 0).setColor(fluidColorTint).setUv(u1, v0); + bufferBuilder.addVertex(mat, finalXOffset, finalYOffset - height, 0).setColor(fluidColorTint).setUv(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 a3a27bd71..0e4350de4 100644 --- a/src/main/java/me/jddev0/ep/screen/base/EnergyStorageContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/EnergyStorageContainerScreen.java @@ -5,7 +5,8 @@ import me.jddev0.ep.util.EnergyUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.CoreShaders; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -58,13 +59,13 @@ public EnergyStorageContainerScreen(T menu, Inventory inventory, Component title @Override protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, int mouseY) { - RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShader(CoreShaders.POSITION_TEX); RenderSystem.setShaderColor(1.f, 1.f, 1.f, 1.f); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; if(!menu.isInUpgradeModuleView()) { - guiGraphics.blit(TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); renderEnergyMeter(guiGraphics, x, y); renderEnergyIndicatorBar(guiGraphics, x, y); } @@ -72,15 +73,15 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTick, int mouseX, protected void renderEnergyMeter(GuiGraphics guiGraphics, int x, int y) { int pos = menu.getScaledEnergyMeterPos(energyMeterHeight); - guiGraphics.blit(TEXTURE, x + energyMeterX, y + energyMeterY + energyMeterHeight - pos, energyMeterU, - energyMeterV + energyMeterHeight - pos, energyMeterWidth, pos); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + energyMeterX, y + energyMeterY + energyMeterHeight - pos, energyMeterU, + energyMeterV + energyMeterHeight - pos, energyMeterWidth, pos, 256, 256); } protected void renderEnergyIndicatorBar(GuiGraphics guiGraphics, int x, int y) { int pos = menu.getScaledEnergyIndicatorBarPos(energyMeterHeight); if(pos > 0) - guiGraphics.blit(TEXTURE, x + energyMeterX, y + energyMeterY + energyMeterHeight - pos, energyMeterU, - energyMeterV + energyMeterHeight, energyMeterWidth, 1); + guiGraphics.blit(RenderType::guiTextured, 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 c1e064bfc..d567401be 100644 --- a/src/main/java/me/jddev0/ep/screen/base/SelectableRecipeMachineContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/SelectableRecipeMachineContainerScreen.java @@ -3,6 +3,7 @@ import me.jddev0.ep.networking.ModMessages; import me.jddev0.ep.networking.packet.ChangeCurrentRecipeIndexC2SPacket; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; @@ -107,14 +108,14 @@ private void renderCurrentRecipeOutput(GuiGraphics guiGraphics, int x, int y) { private void renderButtons(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { //Down button if(isHovering(recipeSelectorPosX - 13, recipeSelectorPosY + 2, 11, 12, mouseX, mouseY)) { - guiGraphics.blit(TEXTURE, x + recipeSelectorPosX - 13, y + recipeSelectorPosY + 2, - recipeSelectorTexturePosX, recipeSelectorTexturePosY, 11, 12); + guiGraphics.blit(RenderType::guiTextured, TEXTURE, x + recipeSelectorPosX - 13, y + recipeSelectorPosY + 2, + recipeSelectorTexturePosX, recipeSelectorTexturePosY, 11, 12, 256, 256); } //Up button if(isHovering(recipeSelectorPosX + 18, recipeSelectorPosY + 2, 11, 12, mouseX, mouseY)) { - guiGraphics.blit(TEXTURE, x + recipeSelectorPosX + 18, y + recipeSelectorPosY + 2, - recipeSelectorTexturePosX + 11, recipeSelectorTexturePosY, 11, 12); + guiGraphics.blit(RenderType::guiTextured, 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 6f9d8a60e..396deebc8 100644 --- a/src/main/java/me/jddev0/ep/screen/base/UpgradableEnergyStorageContainerScreen.java +++ b/src/main/java/me/jddev0/ep/screen/base/UpgradableEnergyStorageContainerScreen.java @@ -2,6 +2,7 @@ import me.jddev0.ep.api.EPAPI; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.RenderType; import net.minecraft.client.resources.sounds.SimpleSoundInstance; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -94,7 +95,7 @@ protected final void renderBg(GuiGraphics guiGraphics, float partialTick, int mo int y = (height - imageHeight) / 2; if(menu.isInUpgradeModuleView()) { - guiGraphics.blit(UPGRADE_VIEW_TEXTURE, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(RenderType::guiTextured, UPGRADE_VIEW_TEXTURE, x, y, 0, 0, imageWidth, imageHeight, 256, 256); }else { renderBgNormalView(guiGraphics, partialTick, mouseX, mouseY); } @@ -105,11 +106,11 @@ protected final void renderBg(GuiGraphics guiGraphics, float partialTick, int mo protected void renderConfiguration(GuiGraphics guiGraphics, int x, int y, int mouseX, int mouseY) { //Upgrade view if(isHovering(-22, 2, 20, 20, mouseX, mouseY)) { - guiGraphics.blit(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 40, 80, 20, 20); + guiGraphics.blit(RenderType::guiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 40, 80, 20, 20, 256, 256); }else if(menu.isInUpgradeModuleView()) { - guiGraphics.blit(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 20, 80, 20, 20); + guiGraphics.blit(RenderType::guiTextured, CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 20, 80, 20, 20, 256, 256); }else { - guiGraphics.blit(CONFIGURATION_ICONS_TEXTURE, x - 22, y + 2, 0, 80, 20, 20); + guiGraphics.blit(RenderType::guiTextured, 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 9204a2407..49f0ceb4c 100644 --- a/src/main/java/me/jddev0/ep/util/RecipeUtils.java +++ b/src/main/java/me/jddev0/ep/util/RecipeUtils.java @@ -1,34 +1,61 @@ package me.jddev0.ep.util; +import me.jddev0.ep.recipe.EnergizedPowerBaseRecipe; +import net.minecraft.server.level.ServerLevel; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.Recipe; -import net.minecraft.world.item.crafting.RecipeHolder; -import net.minecraft.world.item.crafting.RecipeInput; -import net.minecraft.world.item.crafting.RecipeType; -import net.minecraft.world.level.Level; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.item.crafting.display.RecipeDisplay; +import net.minecraft.world.item.crafting.display.SlotDisplayContext; +import java.util.Collection; import java.util.List; public final class RecipeUtils { private RecipeUtils() {} - public static > boolean isIngredientOfAny(Level level, RecipeType recipeType, ItemStack itemStack) { - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); + public static > Collection> getAllRecipesFor(ServerLevel level, RecipeType recipeType) { + return level.recipeAccess().recipes.byType(recipeType); + } + + public static > boolean isIngredientOfAny(ServerLevel level, RecipeType recipeType, ItemStack itemStack) { + Collection> recipes = getAllRecipesFor(level, recipeType); - return recipes.stream().map(RecipeHolder::value).map(Recipe::getIngredients). - anyMatch(ingredients -> ingredients.stream().anyMatch(ingredient -> ingredient.test(itemStack))); + return recipes.stream().map(RecipeHolder::value).anyMatch(recipe -> { + if(recipe instanceof EnergizedPowerBaseRecipe epRecipe) + return epRecipe.isIngredient(itemStack); + + return recipe.placementInfo().ingredients().stream(). + anyMatch(ingredient -> ingredient.test(itemStack)); + }); } - public static > boolean isResultOfAny(Level level, RecipeType recipeType, ItemStack itemStack) { - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); + public static boolean isIngredientOfAny(List ingredientList, ItemStack itemStack) { + return ingredientList.stream().anyMatch(ingredient -> ingredient.test(itemStack)); + } - return recipes.stream().map(RecipeHolder::value).map(recipe -> recipe.getResultItem(level.registryAccess())).anyMatch(stack -> ItemStack.isSameItemSameComponents(stack, itemStack)); + public static > List getIngredientsOf(ServerLevel level, RecipeType recipeType) { + Collection> recipes = getAllRecipesFor(level, recipeType); + + return recipes.stream().map(RecipeHolder::value).flatMap(recipe -> { + if(recipe instanceof EnergizedPowerBaseRecipe epRecipe) + return epRecipe.getIngredients().stream(); + + return recipe.placementInfo().ingredients().stream(); + }).toList(); } - public static > boolean isRemainderOfAny(Level level, RecipeType recipeType, C container, ItemStack itemStack) { - List> recipes = level.getRecipeManager().getAllRecipesFor(recipeType); + public static > boolean isResultOfAny(ServerLevel level, RecipeType recipeType, ItemStack itemStack) { + Collection> recipes = getAllRecipesFor(level, recipeType); + + return recipes.stream().map(RecipeHolder::value).anyMatch(recipe -> { + if(recipe instanceof EnergizedPowerBaseRecipe epRecipe) + return epRecipe.isResult(itemStack); - return recipes.stream().map(RecipeHolder::value).map(recipe -> recipe.getRemainingItems(container)). - anyMatch(remainingItems -> remainingItems.stream().anyMatch(item -> ItemStack.isSameItemSameComponents(item, itemStack))); + return recipe.display().stream(). + filter(recipeDisplay -> recipeDisplay.isEnabled(level.enabledFeatures())). + map(RecipeDisplay::result). + flatMap(result -> result.resolveForStacks(SlotDisplayContext.fromLevel(level)).stream()). + anyMatch(stack -> ItemStack.isSameItemSameComponents(stack, itemStack)); + }); } } diff --git a/src/main/java/me/jddev0/ep/world/ModBiomeModifiers.java b/src/main/java/me/jddev0/ep/world/ModBiomeModifiers.java index ff843cd35..6051de1d5 100644 --- a/src/main/java/me/jddev0/ep/world/ModBiomeModifiers.java +++ b/src/main/java/me/jddev0/ep/world/ModBiomeModifiers.java @@ -6,7 +6,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BiomeTags; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.GenerationStep; diff --git a/src/main/java/me/jddev0/ep/world/ModPlacedFeatures.java b/src/main/java/me/jddev0/ep/world/ModPlacedFeatures.java index 1dbbac18c..15b566d64 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.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; diff --git a/src/main/java/me/jddev0/ep/world/ModStructureSets.java b/src/main/java/me/jddev0/ep/world/ModStructureSets.java index db05165db..0354f2590 100644 --- a/src/main/java/me/jddev0/ep/world/ModStructureSets.java +++ b/src/main/java/me/jddev0/ep/world/ModStructureSets.java @@ -5,7 +5,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.levelgen.structure.Structure; import net.minecraft.world.level.levelgen.structure.StructureSet; import net.minecraft.world.level.levelgen.structure.placement.RandomSpreadStructurePlacement; diff --git a/src/main/java/me/jddev0/ep/world/ModStructures.java b/src/main/java/me/jddev0/ep/world/ModStructures.java index a1f323561..ef863b9a0 100644 --- a/src/main/java/me/jddev0/ep/world/ModStructures.java +++ b/src/main/java/me/jddev0/ep/world/ModStructures.java @@ -6,7 +6,6 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraft.world.level.levelgen.Heightmap; diff --git a/src/main/java/me/jddev0/ep/world/village/VillageAddition.java b/src/main/java/me/jddev0/ep/world/village/VillageAddition.java index e30d3af45..ca07cdda1 100644 --- a/src/main/java/me/jddev0/ep/world/village/VillageAddition.java +++ b/src/main/java/me/jddev0/ep/world/village/VillageAddition.java @@ -20,7 +20,7 @@ public class VillageAddition { @SubscribeEvent public static void addVillageHouses(ServerAboutToStartEvent event) { - Registry templatePoolRegistry = event.getServer().registryAccess().registry(Registries.TEMPLATE_POOL).orElseThrow(); + Registry templatePoolRegistry = event.getServer().registryAccess().lookup(Registries.TEMPLATE_POOL).orElseThrow(); //Electrician 1 int weight = ModConfigs.COMMON_ELECTRICIAN_BUILDING_1_PLACEMENT_WEIGHT.getValue(); @@ -33,7 +33,7 @@ public static void addVillageHouses(ServerAboutToStartEvent event) { private static void addVillageHouse(Registry templatePoolRegistry, String villageType, String buildingName, int weight) { - StructureTemplatePool pool = templatePoolRegistry.get(ResourceLocation.parse(String.format("minecraft:village/%s/houses", villageType))); + StructureTemplatePool pool = templatePoolRegistry.getValue(ResourceLocation.parse(String.format("minecraft:village/%s/houses", villageType))); if(pool == null) return; diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 5dbf46c89..e3f79be6d 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,4 +1,6 @@ public net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool templates # templates public-f net.minecraft.world.level.levelgen.structure.pools.StructureTemplatePool rawTemplates # rawTemplates -protected net.minecraft.world.entity.vehicle.VehicleEntity getDropItem()Lnet.minecraft.world.item.Item; # getDropItem \ No newline at end of file +protected net.minecraft.world.entity.vehicle.VehicleEntity getDropItem()Lnet.minecraft.world.item.Item; # getDropItem + +public net.minecraft.world.item.crafting.RecipeManager recipes # recipes diff --git a/src/main/resources/META-INF/neoforge.mods.toml b/src/main/resources/META-INF/neoforge.mods.toml index b542908a0..493b84307 100644 --- a/src/main/resources/META-INF/neoforge.mods.toml +++ b/src/main/resources/META-INF/neoforge.mods.toml @@ -40,6 +40,10 @@ authors="${mod_authors}" #optional # The description text for the mod (multi line!) (#mandatory) description='''${mod_description}''' + +[[mixins]] +config="energizedpower.mixins.json" + # A dependency - use the . to indicate dependency for a specific modid. Dependencies are optional. [[dependencies.${mod_id}]] #optional # the modid of the dependency 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.mixins.json b/src/main/resources/energizedpower.mixins.json new file mode 100644 index 000000000..9f8d1add2 --- /dev/null +++ b/src/main/resources/energizedpower.mixins.json @@ -0,0 +1,12 @@ +{ + "required": true, + "package": "me.jddev0.ep.mixin", + "compatibilityLevel": "JAVA_21", + "mixins": [ + "entity.PlayerTeleporterCrashFixMixin", + "recipe.RepairItemRecipeMixin" + ], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file