From 8addafde45dbea0601cfde74dd58b015a94a7720 Mon Sep 17 00:00:00 2001 From: screret <68943070+screret@users.noreply.github.com> Date: Fri, 15 Sep 2023 20:05:26 +0300 Subject: [PATCH] Cherrypick stuff to 1.20 (#372) * add a KJS block type for renderer blocks. (#353) * add ability to create renderer blocks from KJS, make the simple machines' arrays match the tier indexes * do the same to KJS machine builders * Implementation of Machine Modes (#359) * first attempt at implementing machine modes screret pls help * fix the issue * next attempt for the configurator * latest commit * latest stuff * change activerecipetype to int * final touch + method rename * dev QoL stuffs * final commit * run data * js^3 support added --------- Co-authored-by: screret * shit. these should stack. * Implementation of Gregicality Multiblocks (#369) * gcmb first additions * fix ABS (no textures tho) * slight refactor * blast alloy changes * fix molten fluid texture (it was easy) * more refactoring * first attempt at implementing machine modes screret pls help * fix the issue * next attempt for the configurator * latest commit * latest stuff * change activerecipetype to int * final touch + method rename * dev QoL stuffs * final commit * run data * js^3 support added * final touch * Update GTRecipeTypes.java * Update GTMachines.java * gcmb first additions * slight refactor * fix ABS (no textures tho) * blast alloy changes * fix molten fluid texture (it was easy) * more refactoring * first attempt at implementing machine modes screret pls help * fix the issue * next attempt for the configurator * latest stuff * change activerecipetype to int * final touch + method rename * js^3 support added * dev QoL stuffs * run data * gcmb first additions * slight refactor * fix ABS (no textures tho) * blast alloy changes * fix molten fluid texture (it was easy) * gcmb first additions * fix ABS (no textures tho) * blast alloy changes * fix molten fluid texture (it was easy) * fix some KJS builders having issues in array indexing, rebase to upstream * fix some KJS builders having issues in array indexing, rebase to upstream HOLY SHIT THIS WAS PAINFUL * add the parallel hatch, fix a lot of bugs, rename the casings to make sense, etc. run data. * parallel hatches + missing multis * finalized * requested fixes * datagen * more requested changes + datagen * Update common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java --------- Co-authored-by: screret <68943070+screret@users.noreply.github.com> * it didnt build lol --------- Co-authored-by: Rundas <38040866+Rundas01@users.noreply.github.com> --- .../com/gregtechceu/gtceu/api/GTValues.java | 2 + ...lassBlock.java => RendererGlassBlock.java} | 6 +- .../gtceu/api/capability/IParallelHatch.java | 10 + .../data/chemical/fluid/FluidTypeMolten.java | 11 + .../api/data/chemical/fluid/FluidTypes.java | 3 + .../api/data/chemical/material/Material.java | 10 + .../chemical/material/info/MaterialFlags.java | 17 + .../properties/AlloyBlastProperty.java | 56 ++ .../material/properties/PropertyKey.java | 2 + .../gtceu/api/machine/MachineDefinition.java | 13 +- .../api/machine/SimpleGeneratorMachine.java | 2 +- .../api/machine/SimpleTieredMachine.java | 2 +- .../api/machine/WorkableTieredMachine.java | 13 +- .../MachineModeFancyConfigurator.java | 108 +++ .../api/machine/feature/IFancyUIMachine.java | 5 + .../machine/feature/IRecipeLogicMachine.java | 5 + .../api/machine/multiblock/PartAbility.java | 1 + .../WorkableElectricMultiblockMachine.java | 6 +- .../multiblock/WorkableMultiblockMachine.java | 12 +- .../api/machine/steam/SimpleSteamMachine.java | 2 +- .../machine/steam/SteamWorkableMachine.java | 13 +- .../gtceu/api/machine/trait/RecipeLogic.java | 5 +- .../gtceu/api/pattern/Predicates.java | 52 +- .../registry/registrate/MachineBuilder.java | 27 +- .../registrate/MultiblockMachineBuilder.java | 9 +- .../gtceu/common/data/GCyMBlocks.java | 90 +++ .../gtceu/common/data/GCyMMachines.java | 732 ++++++++++++++++++ .../gtceu/common/data/GCyMRecipeTypes.java | 48 ++ .../gtceu/common/data/GTBlocks.java | 51 +- .../gtceu/common/data/GTCompassSections.java | 2 +- .../gtceu/common/data/GTCreateMachines.java | 9 +- .../gtceu/common/data/GTCreativeModeTabs.java | 4 +- .../gtceu/common/data/GTFluids.java | 50 +- .../gtceu/common/data/GTItems.java | 23 - .../gtceu/common/data/GTMachines.java | 87 ++- .../gtceu/common/data/GTMaterials.java | 61 ++ .../gtceu/common/data/GTRecipeModifiers.java | 22 + .../gtceu/common/data/GTRecipeTypes.java | 5 +- .../gtceu/common/data/GTRecipes.java | 3 + .../common/data/GTSyncedFieldAccessors.java | 3 + .../data/materials/ElementMaterials.java | 2 +- .../data/materials/FirstDegreeMaterials.java | 6 +- .../common/data/materials/GCyMMaterials.java | 111 +++ .../common/machine/electric/MinerMachine.java | 2 +- .../multiblock/electric/CleanroomMachine.java | 2 +- .../electric/ProcessingArrayMachine.java | 19 +- .../part/ParallelHatchPartMachine.java | 81 ++ .../gtceu/config/ConfigHolder.java | 4 + .../gregtechceu/gtceu/core/MixinHelpers.java | 1 + .../gtceu/core/mixins/ModelManagerMixin.java | 1 + .../gtceu/data/lang/BlockLang.java | 8 +- .../gtceu/data/lang/LangHandler.java | 21 +- .../data/recipe/misc/AssemblyLineLoader.java | 6 +- .../gtceu/data/recipe/misc/GCyMRecipes.java | 313 ++++++++ .../data/recipe/misc/MachineRecipeLoader.java | 17 +- .../recipe/misc/MetaTileEntityLoader.java | 95 +-- .../MetaTileEntityMachineRecipeLoader.java | 75 +- .../alloyblast/AlloyBlastRecipeProducer.java | 183 +++++ .../CustomAlloyBlastRecipeProducer.java | 43 + .../emi/recipe/GTRecipeTypeEmiCategory.java | 8 +- .../jei/recipe/GTRecipeTypeCategory.java | 8 +- .../integration/kjs/GregTechKubeJSPlugin.java | 5 + .../{ => block}/CoilBlockBuilder.java | 33 +- .../builders/block/RendererBlockBuilder.java | 63 ++ .../block/RendererGlassBlockBuilder.java | 25 + .../machine/CustomMultiblockBuilder.java | 50 +- .../machine/CustomTieredMachineBuilder.java | 7 +- .../builders/machine/GeneratorBuilder.java | 7 +- .../machine/KineticMachineBuilder.java | 7 +- .../machine/MachineFunctionPresets.java | 47 +- .../machine/SimpleMachineBuilder.java | 7 +- .../recipe/GTRecipeTypeDisplayCategory.java | 8 +- .../gtceu/syncdata/GTRecipeTypeAccessor.java | 37 + .../com/gregtechceu/gtceu/utils/GTUtil.java | 18 + .../item/material_sets/lignite/raw_ore.json | 6 - .../block/casings/gcym/atomic_casing.png | Bin 0 -> 6659 bytes .../block/casings/gcym/blank_casing.png | Bin 0 -> 6059 bytes .../casings/gcym/corrosion_proof_casing.png | Bin 0 -> 6754 bytes .../gcym/high_temperature_smelting_casing.png | Bin 0 -> 6812 bytes .../casings/gcym/industrial_steam_casing.png | Bin 0 -> 7044 bytes .../gcym/large_scale_assembling_casing.png | Bin 0 -> 707 bytes .../gcym/laser_safe_engraving_casing.png | Bin 0 -> 6868 bytes .../casings/gcym/nonconducting_casing.png | Bin 0 -> 6604 bytes .../gcym/reaction_safe_mixing_casing.png | Bin 0 -> 6949 bytes .../casings/gcym/secure_maceration_casing.png | Bin 0 -> 6853 bytes .../gcym/shock_proof_cutting_casing.png | Bin 0 -> 6948 bytes .../block/casings/gcym/sifter_casing.png | Bin 0 -> 6928 bytes .../casings/gcym/stress_proof_casing.png | Bin 0 -> 563 bytes .../casings/gcym/vibration_safe_casing.png | Bin 0 -> 6930 bytes .../block/casings/gcym/watertight_casing.png | Bin 0 -> 6836 bytes .../block/casings/slicing_blades/bottom.png | Bin 0 -> 374 bytes .../block/casings/slicing_blades/side.png | Bin 0 -> 374 bytes .../block/casings/slicing_blades/top.png | Bin 0 -> 219 bytes .../gtceu/textures/block/crushing_wheels.png | Bin 0 -> 392 bytes .../textures/block/electrolytic_cell.png | Bin 0 -> 5415 bytes .../fluids/fluid.molten.autogenerated.png | Bin 0 -> 6098 bytes .../fluid.molten.autogenerated.png.mcmeta | 45 ++ .../assets/gtceu/textures/block/heat_vent.png | Bin 0 -> 5586 bytes .../parallel_hatch_mk1/overlay_front.png | Bin 0 -> 1077 bytes .../overlay_front.png.mcmeta | 5 + .../overlay_front_active.png | Bin 0 -> 889 bytes .../overlay_front_active.png.mcmeta | 5 + .../overlay_front_active_emissive.png | Bin 0 -> 6158 bytes .../overlay_front_active_emissive.png.mcmeta | 5 + .../overlay_front_emissive.png | Bin 0 -> 5571 bytes .../overlay_front_emissive.png.mcmeta | 5 + .../parallel_hatch_mk2/overlay_front.png | Bin 0 -> 990 bytes .../overlay_front.png.mcmeta | 5 + .../overlay_front_active.png | Bin 0 -> 849 bytes .../overlay_front_active.png.mcmeta | 5 + .../overlay_front_active_emissive.png | Bin 0 -> 6121 bytes .../overlay_front_active_emissive.png.mcmeta | 5 + .../overlay_front_emissive.png | Bin 0 -> 5645 bytes .../overlay_front_emissive.png.mcmeta | 5 + .../parallel_hatch_mk3/overlay_front.png | Bin 0 -> 1061 bytes .../overlay_front.png.mcmeta | 5 + .../overlay_front_active.png | Bin 0 -> 889 bytes .../overlay_front_active.png.mcmeta | 5 + .../overlay_front_active_emissive.png | Bin 0 -> 6176 bytes .../overlay_front_active_emissive.png.mcmeta | 5 + .../overlay_front_emissive.png | Bin 0 -> 5561 bytes .../overlay_front_emissive.png.mcmeta | 5 + .../parallel_hatch_mk4/overlay_front.png | Bin 0 -> 1020 bytes .../overlay_front.png.mcmeta | 5 + .../overlay_front_active.png | Bin 0 -> 866 bytes .../overlay_front_active.png.mcmeta | 5 + .../overlay_front_active_emissive.png | Bin 0 -> 7020 bytes .../overlay_front_active_emissive.png.mcmeta | 5 + .../overlay_front_emissive.png | Bin 0 -> 6943 bytes .../overlay_front_emissive.png.mcmeta | 5 + .../molybdenum_disilicide_coil_block.png | Bin 0 -> 1265 bytes .../blast_alloy_smelter/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_arc_smelter/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_assembler/overlay_front.png | Bin 0 -> 5718 bytes .../large_assembler/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_assembler/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_autoclave/overlay_front.png | Bin 0 -> 5718 bytes .../large_autoclave/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_autoclave/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_brewer/overlay_front.png | Bin 0 -> 5718 bytes .../large_brewer/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../large_brewer/overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_brewer/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_centrifuge/overlay_front.png | Bin 0 -> 5718 bytes .../large_centrifuge/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_centrifuge/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../large_chemical_bath/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../large_circuit_assembler/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_cutter/overlay_front.png | Bin 0 -> 5718 bytes .../large_cutter/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../large_cutter/overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_cutter/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_distillery/overlay_front.png | Bin 0 -> 5718 bytes .../large_distillery/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_distillery/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_electrolyzer/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../large_engraving_laser/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_extractor/overlay_front.png | Bin 0 -> 5718 bytes .../large_extractor/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_extractor/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_extruder/overlay_front.png | Bin 0 -> 5718 bytes .../large_extruder/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../large_extruder/overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_extruder/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../large_maceration_tower/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../large_material_press/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_mixer/overlay_front.png | Bin 0 -> 5718 bytes .../gcym/large_mixer/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../large_mixer/overlay_front_emissive.png | Bin 0 -> 219 bytes .../gcym/large_mixer/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_packer/overlay_front.png | Bin 0 -> 5718 bytes .../large_packer/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../large_packer/overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_packer/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../large_sifting_funnel/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_solidifier/overlay_front.png | Bin 0 -> 5718 bytes .../large_solidifier/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_solidifier/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_wire_factory/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/large_wiremill/overlay_front.png | Bin 0 -> 5718 bytes .../large_wiremill/overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../large_wiremill/overlay_front_emissive.png | Bin 0 -> 219 bytes .../large_wiremill/overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gcym/mega_blast_furnace/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../mega_vacuum_freezer/overlay_front.png | Bin 0 -> 5718 bytes .../overlay_front_active.png | Bin 0 -> 10058 bytes .../overlay_front_active.png.mcmeta | 10 + .../overlay_front_active_emissive.png | Bin 0 -> 312 bytes .../overlay_front_active_emissive.png.mcmeta | 10 + .../overlay_front_emissive.png | Bin 0 -> 219 bytes .../overlay_front_paused.png | Bin 0 -> 571 bytes .../overlay_front_paused_emissive.png | Bin 0 -> 569 bytes .../gtceu/textures/block/slicing_blades.png | Bin 0 -> 219 bytes .../gtceu/blockstates/crushing_wheels.json | 7 + .../gtceu/blockstates/electrolytic_cell.json | 7 + .../assets/gtceu/blockstates/heat_vent.json | 7 + .../molybdenum_disilicide_coil_block.json | 7 + .../gtceu/compass/nodes/hv/large_packer.json | 15 + .../compass/nodes/iv/alloy_blast_smelter.json | 15 + .../gtceu/compass/nodes/iv/assembly_line.json | 2 +- .../compass/nodes/iv/iv_processing_array.json | 2 +- .../compass/nodes/iv/large_arc_smelter.json | 15 + .../compass/nodes/iv/large_assembler.json | 15 + .../compass/nodes/iv/large_autoclave.json | 15 + .../gtceu/compass/nodes/iv/large_brewer.json | 15 + .../compass/nodes/iv/large_centrifuge.json | 15 + .../compass/nodes/iv/large_chemical_bath.json | 15 + .../nodes/iv/large_circuit_assembler.json | 15 + .../gtceu/compass/nodes/iv/large_cutter.json | 15 + .../compass/nodes/iv/large_distillery.json | 15 + .../compass/nodes/iv/large_electrolyzer.json | 15 + .../compass/nodes/iv/large_electromagnet.json | 15 + .../nodes/iv/large_engraving_laser.json | 15 + .../compass/nodes/iv/large_extractor.json | 15 + .../compass/nodes/iv/large_extruder.json | 15 + .../nodes/iv/large_maceration_tower.json | 15 + .../nodes/iv/large_material_press.json | 15 + .../gtceu/compass/nodes/iv/large_mixer.json | 15 + .../nodes/iv/large_sifting_funnel.json | 15 + .../compass/nodes/iv/large_solidifier.json | 15 + .../compass/nodes/iv/large_wiremill.json | 15 + .../nodes/iv/luv_processing_array.json | 2 +- .../compass/nodes/luv/luv_fusion_reactor.json | 2 +- .../compass/nodes/luv/mega_blast_furnace.json | 15 + .../nodes/luv/mega_vacuum_freezer.json | 15 + .../compass/nodes/luv/uv_fusion_reactor.json | 4 +- .../compass/nodes/luv/zpm_fusion_reactor.json | 2 +- .../nodes/multiblock/alloy_blast_smelter.json | 15 + .../nodes/multiblock/assembly_line.json | 2 +- .../compass/nodes/multiblock/cleanroom.json | 4 +- .../compass/nodes/multiblock/coke_oven.json | 2 +- .../compass/nodes/multiblock/cracker.json | 2 +- .../nodes/multiblock/distillation_tower.json | 2 +- .../multiblock/electric_blast_furnace.json | 2 +- .../multiblock/ev_fluid_drilling_rig.json | 4 +- .../nodes/multiblock/ev_large_miner.json | 2 +- .../multiblock/hv_fluid_drilling_rig.json | 4 +- .../multiblock/implosion_compressor.json | 2 +- .../nodes/multiblock/iv_large_miner.json | 2 +- .../nodes/multiblock/iv_processing_array.json | 4 +- .../nodes/multiblock/large_arc_smelter.json | 15 + .../nodes/multiblock/large_assembler.json | 15 + .../nodes/multiblock/large_autoclave.json | 15 + .../nodes/multiblock/large_boiler.json | 2 +- .../nodes/multiblock/large_brewer.json | 15 + .../nodes/multiblock/large_centrifuge.json | 15 + .../nodes/multiblock/large_chemical_bath.json | 15 + .../multiblock/large_chemical_reactor.json | 2 +- .../multiblock/large_circuit_assembler.json | 15 + .../nodes/multiblock/large_combustion.json | 4 +- .../nodes/multiblock/large_cutter.json | 15 + .../nodes/multiblock/large_distillery.json | 15 + .../nodes/multiblock/large_electrolyzer.json | 15 + .../nodes/multiblock/large_electromagnet.json | 15 + .../multiblock/large_engraving_laser.json | 15 + .../nodes/multiblock/large_extractor.json | 15 + .../nodes/multiblock/large_extruder.json | 15 + .../multiblock/large_maceration_tower.json | 15 + .../multiblock/large_material_press.json | 15 + .../compass/nodes/multiblock/large_mixer.json | 15 + .../nodes/multiblock/large_packer.json | 15 + .../multiblock/large_sifting_funnel.json | 15 + .../nodes/multiblock/large_solidifier.json | 15 + .../nodes/multiblock/large_turbine.json | 4 +- .../nodes/multiblock/large_wiremill.json | 15 + .../nodes/multiblock/luv_fusion_reactor.json | 2 +- .../nodes/multiblock/luv_large_miner.json | 2 +- .../multiblock/luv_processing_array.json | 2 +- .../nodes/multiblock/mega_blast_furnace.json | 15 + .../nodes/multiblock/mega_vacuum_freezer.json | 15 + .../nodes/multiblock/multi_smelter.json | 2 +- .../multiblock/mv_fluid_drilling_rig.json | 4 +- .../multiblock/primitive_blast_furnace.json | 2 +- .../nodes/multiblock/primitive_pump.json | 4 +- .../nodes/multiblock/pyrolyse_oven.json | 4 +- .../nodes/multiblock/steam_grinder.json | 4 +- .../compass/nodes/multiblock/steam_oven.json | 2 +- .../nodes/multiblock/uv_fusion_reactor.json | 2 +- .../nodes/multiblock/vacuum_freezer.json | 2 +- .../nodes/multiblock/zpm_fusion_reactor.json | 2 +- .../compass/nodes/parts/parallel_hatch.json | 18 + .../resources/assets/gtceu/lang/en_ud.json | 123 ++- .../resources/assets/gtceu/lang/en_us.json | 123 ++- .../gtceu/models/block/crushing_wheels.json | 6 + .../gtceu/models/block/electrolytic_cell.json | 6 + .../assets/gtceu/models/block/heat_vent.json | 6 + .../molybdenum_disilicide_coil_block.json | 6 + .../gtceu/models/item/crushing_wheels.json | 3 + .../gtceu/models/item/electrolytic_cell.json | 3 + .../assets/gtceu/models/item/heat_vent.json | 3 + .../molybdenum_disilicide_coil_block.json | 3 + .../fabric/tags/blocks/mineable/wrench.json | 18 + .../loot_tables/blocks/atomic_casing.json | 20 + .../blocks/corrosion_proof_casing.json | 20 + .../loot_tables/blocks/crushing_wheels.json | 20 + .../loot_tables/blocks/electrolytic_cell.json | 20 + .../gtceu/loot_tables/blocks/heat_vent.json | 20 + .../high_temperature_smelting_casing.json | 20 + .../blocks/industrial_steam_casing.json | 20 + .../blocks/large_scale_assembler_casing.json | 20 + .../blocks/laser_safe_engraving_casing.json | 20 + .../molybdenum_disilicide_coil_block.json | 20 + .../blocks/nonconducting_casing.json | 20 + .../blocks/reaction_safe_mixing_casing.json | 20 + .../blocks/secure_maceration_casing.json | 20 + .../blocks/shock_proof_cutting_casing.json | 20 + .../loot_tables/blocks/slicing_blades.json | 20 + .../blocks/stress_proof_casing.json | 20 + .../blocks/vibration_safe_casing.json | 20 + .../loot_tables/blocks/watertight_casing.json | 20 + .../tags/blocks/mineable/pickaxe.json | 18 + .../gtceu/core/fabric/MixinHelpersImpl.java | 1 + .../gtceu/blockstates/crushing_wheels.json | 7 + .../gtceu/blockstates/electrolytic_cell.json | 7 + .../assets/gtceu/blockstates/heat_vent.json | 7 + .../molybdenum_disilicide_coil_block.json | 7 + .../gtceu/compass/nodes/hv/large_packer.json | 15 + .../compass/nodes/iv/alloy_blast_smelter.json | 15 + .../gtceu/compass/nodes/iv/assembly_line.json | 2 +- .../compass/nodes/iv/iv_processing_array.json | 2 +- .../compass/nodes/iv/large_arc_smelter.json | 15 + .../compass/nodes/iv/large_assembler.json | 15 + .../compass/nodes/iv/large_autoclave.json | 15 + .../gtceu/compass/nodes/iv/large_brewer.json | 15 + .../compass/nodes/iv/large_centrifuge.json | 15 + .../compass/nodes/iv/large_chemical_bath.json | 15 + .../nodes/iv/large_circuit_assembler.json | 15 + .../gtceu/compass/nodes/iv/large_cutter.json | 15 + .../compass/nodes/iv/large_distillery.json | 15 + .../compass/nodes/iv/large_electrolyzer.json | 15 + .../compass/nodes/iv/large_electromagnet.json | 15 + .../nodes/iv/large_engraving_laser.json | 15 + .../compass/nodes/iv/large_extractor.json | 15 + .../compass/nodes/iv/large_extruder.json | 15 + .../nodes/iv/large_maceration_tower.json | 15 + .../nodes/iv/large_material_press.json | 15 + .../gtceu/compass/nodes/iv/large_mixer.json | 15 + .../nodes/iv/large_sifting_funnel.json | 15 + .../compass/nodes/iv/large_solidifier.json | 15 + .../compass/nodes/iv/large_wiremill.json | 15 + .../nodes/iv/luv_processing_array.json | 2 +- .../compass/nodes/luv/luv_fusion_reactor.json | 2 +- .../compass/nodes/luv/mega_blast_furnace.json | 15 + .../nodes/luv/mega_vacuum_freezer.json | 15 + .../compass/nodes/luv/uv_fusion_reactor.json | 4 +- .../compass/nodes/luv/zpm_fusion_reactor.json | 2 +- .../nodes/multiblock/alloy_blast_smelter.json | 15 + .../nodes/multiblock/assembly_line.json | 2 +- .../compass/nodes/multiblock/cleanroom.json | 4 +- .../compass/nodes/multiblock/coke_oven.json | 2 +- .../compass/nodes/multiblock/cracker.json | 2 +- .../nodes/multiblock/distillation_tower.json | 2 +- .../multiblock/electric_blast_furnace.json | 2 +- .../multiblock/ev_fluid_drilling_rig.json | 4 +- .../nodes/multiblock/ev_large_miner.json | 2 +- .../multiblock/hv_fluid_drilling_rig.json | 4 +- .../multiblock/implosion_compressor.json | 2 +- .../nodes/multiblock/iv_large_miner.json | 2 +- .../nodes/multiblock/iv_processing_array.json | 4 +- .../nodes/multiblock/large_arc_smelter.json | 15 + .../nodes/multiblock/large_assembler.json | 15 + .../nodes/multiblock/large_autoclave.json | 15 + .../nodes/multiblock/large_boiler.json | 2 +- .../nodes/multiblock/large_brewer.json | 15 + .../nodes/multiblock/large_centrifuge.json | 15 + .../nodes/multiblock/large_chemical_bath.json | 15 + .../multiblock/large_chemical_reactor.json | 2 +- .../multiblock/large_circuit_assembler.json | 15 + .../nodes/multiblock/large_combustion.json | 4 +- .../nodes/multiblock/large_cutter.json | 15 + .../nodes/multiblock/large_distillery.json | 15 + .../nodes/multiblock/large_electrolyzer.json | 15 + .../nodes/multiblock/large_electromagnet.json | 15 + .../multiblock/large_engraving_laser.json | 15 + .../nodes/multiblock/large_extractor.json | 15 + .../nodes/multiblock/large_extruder.json | 15 + .../multiblock/large_maceration_tower.json | 15 + .../multiblock/large_material_press.json | 15 + .../compass/nodes/multiblock/large_mixer.json | 15 + .../nodes/multiblock/large_packer.json | 15 + .../multiblock/large_sifting_funnel.json | 15 + .../nodes/multiblock/large_solidifier.json | 15 + .../nodes/multiblock/large_turbine.json | 4 +- .../nodes/multiblock/large_wiremill.json | 15 + .../nodes/multiblock/luv_fusion_reactor.json | 2 +- .../nodes/multiblock/luv_large_miner.json | 2 +- .../multiblock/luv_processing_array.json | 2 +- .../nodes/multiblock/mega_blast_furnace.json | 15 + .../nodes/multiblock/mega_vacuum_freezer.json | 15 + .../nodes/multiblock/multi_smelter.json | 2 +- .../multiblock/mv_fluid_drilling_rig.json | 4 +- .../multiblock/primitive_blast_furnace.json | 2 +- .../nodes/multiblock/primitive_pump.json | 4 +- .../nodes/multiblock/pyrolyse_oven.json | 4 +- .../nodes/multiblock/steam_grinder.json | 4 +- .../compass/nodes/multiblock/steam_oven.json | 2 +- .../nodes/multiblock/uv_fusion_reactor.json | 2 +- .../nodes/multiblock/vacuum_freezer.json | 2 +- .../nodes/multiblock/zpm_fusion_reactor.json | 2 +- .../compass/nodes/parts/parallel_hatch.json | 18 + .../resources/assets/gtceu/lang/en_ud.json | 123 ++- .../resources/assets/gtceu/lang/en_us.json | 123 ++- .../gtceu/models/block/crushing_wheels.json | 6 + .../gtceu/models/block/electrolytic_cell.json | 6 + .../assets/gtceu/models/block/heat_vent.json | 6 + .../molybdenum_disilicide_coil_block.json | 6 + .../gtceu/models/item/crushing_wheels.json | 3 + .../gtceu/models/item/electrolytic_cell.json | 3 + .../assets/gtceu/models/item/heat_vent.json | 3 + .../molybdenum_disilicide_coil_block.json | 3 + .../forge/tags/blocks/mineable/wrench.json | 18 + .../loot_tables/blocks/atomic_casing.json | 20 + .../blocks/corrosion_proof_casing.json | 20 + .../loot_tables/blocks/crushing_wheels.json | 20 + .../loot_tables/blocks/electrolytic_cell.json | 20 + .../gtceu/loot_tables/blocks/heat_vent.json | 20 + .../high_temperature_smelting_casing.json | 20 + .../blocks/industrial_steam_casing.json | 20 + .../blocks/large_scale_assembler_casing.json | 20 + .../blocks/laser_safe_engraving_casing.json | 20 + .../molybdenum_disilicide_coil_block.json | 20 + .../blocks/nonconducting_casing.json | 20 + .../blocks/reaction_safe_mixing_casing.json | 20 + .../blocks/secure_maceration_casing.json | 20 + .../blocks/shock_proof_cutting_casing.json | 20 + .../loot_tables/blocks/slicing_blades.json | 20 + .../blocks/stress_proof_casing.json | 20 + .../blocks/vibration_safe_casing.json | 20 + .../loot_tables/blocks/watertight_casing.json | 20 + .../tags/blocks/mineable/pickaxe.json | 18 + .../gtceu/core/forge/MixinHelpersImpl.java | 2 + 562 files changed, 6178 insertions(+), 410 deletions(-) rename common/src/main/java/com/gregtechceu/gtceu/api/block/{RenderGlassBlock.java => RendererGlassBlock.java} (88%) create mode 100644 common/src/main/java/com/gregtechceu/gtceu/api/capability/IParallelHatch.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/fluid/FluidTypeMolten.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/AlloyBlastProperty.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMBlocks.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMRecipeTypes.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/common/data/materials/GCyMMaterials.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCyMRecipes.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/alloyblast/AlloyBlastRecipeProducer.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/alloyblast/CustomAlloyBlastRecipeProducer.java rename common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/{ => block}/CoilBlockBuilder.java (72%) create mode 100644 common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/RendererBlockBuilder.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/RendererGlassBlockBuilder.java create mode 100644 common/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java delete mode 100644 common/src/main/resources/assets/gtceu/models/item/material_sets/lignite/raw_ore.json create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/atomic_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/blank_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/corrosion_proof_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/high_temperature_smelting_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/industrial_steam_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/large_scale_assembling_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/laser_safe_engraving_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/nonconducting_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/reaction_safe_mixing_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/secure_maceration_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/shock_proof_cutting_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/sifter_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/stress_proof_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/vibration_safe_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/gcym/watertight_casing.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/bottom.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/side.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/top.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/crushing_wheels.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/electrolytic_cell.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/fluids/fluid.molten.autogenerated.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/fluids/fluid.molten.autogenerated.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/heat_vent.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/molybdenum_disilicide_coil_block.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png.mcmeta create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive.png create mode 100644 common/src/main/resources/assets/gtceu/textures/block/slicing_blades.png create mode 100644 fabric/src/generated/resources/assets/gtceu/blockstates/crushing_wheels.json create mode 100644 fabric/src/generated/resources/assets/gtceu/blockstates/electrolytic_cell.json create mode 100644 fabric/src/generated/resources/assets/gtceu/blockstates/heat_vent.json create mode 100644 fabric/src/generated/resources/assets/gtceu/blockstates/molybdenum_disilicide_coil_block.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/hv/large_packer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/alloy_blast_smelter.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_arc_smelter.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_assembler.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_autoclave.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_brewer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_centrifuge.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_chemical_bath.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_circuit_assembler.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_cutter.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_distillery.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_electrolyzer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_electromagnet.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_engraving_laser.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_extractor.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_extruder.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_maceration_tower.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_material_press.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_mixer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_sifting_funnel.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_solidifier.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/iv/large_wiremill.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/luv/mega_blast_furnace.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/luv/mega_vacuum_freezer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/alloy_blast_smelter.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_arc_smelter.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_assembler.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_autoclave.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_brewer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_centrifuge.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_chemical_bath.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_circuit_assembler.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_cutter.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_distillery.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_electrolyzer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_electromagnet.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_engraving_laser.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_extractor.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_extruder.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_maceration_tower.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_material_press.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_mixer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_packer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_sifting_funnel.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_solidifier.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_wiremill.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/mega_blast_furnace.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/multiblock/mega_vacuum_freezer.json create mode 100644 fabric/src/generated/resources/assets/gtceu/compass/nodes/parts/parallel_hatch.json create mode 100644 fabric/src/generated/resources/assets/gtceu/models/block/crushing_wheels.json create mode 100644 fabric/src/generated/resources/assets/gtceu/models/block/electrolytic_cell.json create mode 100644 fabric/src/generated/resources/assets/gtceu/models/block/heat_vent.json create mode 100644 fabric/src/generated/resources/assets/gtceu/models/block/molybdenum_disilicide_coil_block.json create mode 100644 fabric/src/generated/resources/assets/gtceu/models/item/crushing_wheels.json create mode 100644 fabric/src/generated/resources/assets/gtceu/models/item/electrolytic_cell.json create mode 100644 fabric/src/generated/resources/assets/gtceu/models/item/heat_vent.json create mode 100644 fabric/src/generated/resources/assets/gtceu/models/item/molybdenum_disilicide_coil_block.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/atomic_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/corrosion_proof_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/crushing_wheels.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/electrolytic_cell.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/heat_vent.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/high_temperature_smelting_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/industrial_steam_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/large_scale_assembler_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/laser_safe_engraving_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/molybdenum_disilicide_coil_block.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/nonconducting_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/reaction_safe_mixing_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/secure_maceration_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/shock_proof_cutting_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/slicing_blades.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/stress_proof_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/vibration_safe_casing.json create mode 100644 fabric/src/generated/resources/data/gtceu/loot_tables/blocks/watertight_casing.json create mode 100644 forge/src/generated/resources/assets/gtceu/blockstates/crushing_wheels.json create mode 100644 forge/src/generated/resources/assets/gtceu/blockstates/electrolytic_cell.json create mode 100644 forge/src/generated/resources/assets/gtceu/blockstates/heat_vent.json create mode 100644 forge/src/generated/resources/assets/gtceu/blockstates/molybdenum_disilicide_coil_block.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/hv/large_packer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/alloy_blast_smelter.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_arc_smelter.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_assembler.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_autoclave.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_brewer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_centrifuge.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_chemical_bath.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_circuit_assembler.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_cutter.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_distillery.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_electrolyzer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_electromagnet.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_engraving_laser.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_extractor.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_extruder.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_maceration_tower.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_material_press.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_mixer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_sifting_funnel.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_solidifier.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/iv/large_wiremill.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/luv/mega_blast_furnace.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/luv/mega_vacuum_freezer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/alloy_blast_smelter.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_arc_smelter.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_assembler.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_autoclave.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_brewer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_centrifuge.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_chemical_bath.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_circuit_assembler.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_cutter.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_distillery.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_electrolyzer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_electromagnet.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_engraving_laser.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_extractor.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_extruder.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_maceration_tower.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_material_press.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_mixer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_packer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_sifting_funnel.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_solidifier.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/large_wiremill.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/mega_blast_furnace.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/multiblock/mega_vacuum_freezer.json create mode 100644 forge/src/generated/resources/assets/gtceu/compass/nodes/parts/parallel_hatch.json create mode 100644 forge/src/generated/resources/assets/gtceu/models/block/crushing_wheels.json create mode 100644 forge/src/generated/resources/assets/gtceu/models/block/electrolytic_cell.json create mode 100644 forge/src/generated/resources/assets/gtceu/models/block/heat_vent.json create mode 100644 forge/src/generated/resources/assets/gtceu/models/block/molybdenum_disilicide_coil_block.json create mode 100644 forge/src/generated/resources/assets/gtceu/models/item/crushing_wheels.json create mode 100644 forge/src/generated/resources/assets/gtceu/models/item/electrolytic_cell.json create mode 100644 forge/src/generated/resources/assets/gtceu/models/item/heat_vent.json create mode 100644 forge/src/generated/resources/assets/gtceu/models/item/molybdenum_disilicide_coil_block.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/atomic_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/corrosion_proof_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/crushing_wheels.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/electrolytic_cell.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/heat_vent.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/high_temperature_smelting_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/industrial_steam_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/large_scale_assembler_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/laser_safe_engraving_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/molybdenum_disilicide_coil_block.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/nonconducting_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/reaction_safe_mixing_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/secure_maceration_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/shock_proof_cutting_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/slicing_blades.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/stress_proof_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/vibration_safe_casing.json create mode 100644 forge/src/generated/resources/data/gtceu/loot_tables/blocks/watertight_casing.json diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/GTValues.java b/common/src/main/java/com/gregtechceu/gtceu/api/GTValues.java index 84188ec8e0..da0a77dd68 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/GTValues.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/GTValues.java @@ -80,6 +80,8 @@ public class GTValues { public static final int OpV = 13; public static final int MAX = 14; + public static final int TIER_COUNT = 15; + public static final String MODID_TOP = "theoneprobe", MODID_JEI = "jei", diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/block/RenderGlassBlock.java b/common/src/main/java/com/gregtechceu/gtceu/api/block/RendererGlassBlock.java similarity index 88% rename from common/src/main/java/com/gregtechceu/gtceu/api/block/RenderGlassBlock.java rename to common/src/main/java/com/gregtechceu/gtceu/api/block/RendererGlassBlock.java index d4a9c159df..62077bd9d9 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/block/RenderGlassBlock.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/block/RendererGlassBlock.java @@ -12,10 +12,10 @@ /** * @author KilaBash * @date 2023/7/13 - * @implNote RenderGlassBlock + * @implNote RendererGlassBlock */ -public class RenderGlassBlock extends RendererBlock{ - public RenderGlassBlock(Properties properties, IRenderer renderer) { +public class RendererGlassBlock extends RendererBlock { + public RendererGlassBlock(Properties properties, IRenderer renderer) { super(properties, renderer); } diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/capability/IParallelHatch.java b/common/src/main/java/com/gregtechceu/gtceu/api/capability/IParallelHatch.java new file mode 100644 index 0000000000..4e5ecc8e3b --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/api/capability/IParallelHatch.java @@ -0,0 +1,10 @@ +package com.gregtechceu.gtceu.api.capability; + +public interface IParallelHatch { + + /** + * + * @return the current maximum amount of parallelization provided + */ + int getCurrentParallel(); +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/fluid/FluidTypeMolten.java b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/fluid/FluidTypeMolten.java new file mode 100644 index 0000000000..6cde54a5f4 --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/fluid/FluidTypeMolten.java @@ -0,0 +1,11 @@ +package com.gregtechceu.gtceu.api.data.chemical.fluid; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class FluidTypeMolten extends FluidTypeLiquid { + + public FluidTypeMolten(@Nonnull String name, @Nullable String prefix, @Nullable String suffix, @Nonnull String localization) { + super(name, prefix, suffix, localization); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/fluid/FluidTypes.java b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/fluid/FluidTypes.java index 0ce3493908..607dd0c9e8 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/fluid/FluidTypes.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/fluid/FluidTypes.java @@ -9,4 +9,7 @@ public class FluidTypes { public static final FluidType GAS = new FluidTypeGas("gas", null, null, "gtceu.fluid.generic"); public static final FluidType PLASMA = new FluidTypePlasma("plasma", "plasma", null, "gtceu.fluid.plasma"); + + public static final FluidType MOLTEN = new FluidTypeMolten("molten", "molten", null, "gtceu.fluid.molten"); + } diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java index 2679c740a0..ee89700a5c 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/Material.java @@ -200,6 +200,16 @@ public FluidStack getFluid(long amount) { return FluidStack.create(getFluid(), amount); } + public Fluid getHotFluid() { + AlloyBlastProperty prop = properties.getProperty(PropertyKey.ALLOY_BLAST); + return prop == null ? null : prop.getFluid(); + } + + public FluidStack getHotFluid(long amount) { + AlloyBlastProperty prop = properties.getProperty(PropertyKey.ALLOY_BLAST); + return prop == null ? null : FluidStack.create(prop.getFluid(), amount); + } + public Item getBucket() { Fluid fluid = getFluid(); return fluid.getBucket(); diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialFlags.java b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialFlags.java index 7b0ba40215..33b3fc9499 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialFlags.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/info/MaterialFlags.java @@ -174,6 +174,23 @@ public String toString() { .requireProps(PropertyKey.DUST) .build(); + + // GCyM + /** + * Use to disable alloy blast recipes from generating + */ + public static final MaterialFlag DISABLE_ALLOY_BLAST = new MaterialFlag.Builder("disable_alloy_blast") + .requireProps(PropertyKey.BLAST, PropertyKey.FLUID) + .build(); + + /** + * Use to disable everything related to alloy blasting + */ + public static final MaterialFlag DISABLE_ALLOY_PROPERTY = new MaterialFlag.Builder("disable_alloy_property") + .requireProps(PropertyKey.BLAST, PropertyKey.FLUID) + .requireFlags(DISABLE_ALLOY_BLAST) + .build(); + ///////////////// // FLUID // ///////////////// diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/AlloyBlastProperty.java b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/AlloyBlastProperty.java new file mode 100644 index 0000000000..f2e7a29e8b --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/AlloyBlastProperty.java @@ -0,0 +1,56 @@ +package com.gregtechceu.gtceu.api.data.chemical.material.properties; + +import com.google.common.base.Preconditions; +import com.gregtechceu.gtceu.data.recipe.misc.alloyblast.AlloyBlastRecipeProducer; +import lombok.Getter; +import lombok.Setter; +import net.minecraft.world.level.material.Fluid; + +import javax.annotation.Nonnull; +import java.util.function.Supplier; + +public class AlloyBlastProperty implements IMaterialProperty { + + /** + * Internal material fluid field + */ + private Supplier fluidSupplier; + private int temperature; + + @Getter + @Setter + @Nonnull + private AlloyBlastRecipeProducer recipeProducer = AlloyBlastRecipeProducer.DEFAULT_PRODUCER; + + public AlloyBlastProperty(int temperature) { + this.temperature = temperature; + } + + @Override + public void verifyProperty(MaterialProperties materialProperties) { + materialProperties.ensureSet(PropertyKey.BLAST); + materialProperties.ensureSet(PropertyKey.FLUID); + this.temperature = materialProperties.getProperty(PropertyKey.BLAST).getBlastTemperature(); + } + + /** + * internal usage only + */ + public void setFluid(@Nonnull Supplier materialFluid) { + Preconditions.checkNotNull(materialFluid); + this.fluidSupplier = materialFluid; + } + + public Fluid getFluid() { + return fluidSupplier.get(); + } + + public void setTemperature(int fluidTemperature) { + Preconditions.checkArgument(fluidTemperature > 0, "Invalid temperature"); + this.temperature = fluidTemperature; + } + + public int getTemperature() { + return temperature; + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java index 049b7752ec..5a081e4c81 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/data/chemical/material/properties/PropertyKey.java @@ -3,6 +3,7 @@ public class PropertyKey> { public static final PropertyKey BLAST = new PropertyKey<>("blast", BlastProperty.class); + public static final PropertyKey ALLOY_BLAST = new PropertyKey<>("blast_alloy", AlloyBlastProperty.class); public static final PropertyKey DUST = new PropertyKey<>("dust", DustProperty.class); public static final PropertyKey FLUID_PIPE = new PropertyKey<>("fluid_pipe", FluidPipeProperties.class); public static final PropertyKey FLUID = new PropertyKey<>("fluid", FluidProperty.class); @@ -17,6 +18,7 @@ public class PropertyKey> { public static final PropertyKey WIRE = new PropertyKey<>("wire", WireProperties.class); public static final PropertyKey WOOD = new PropertyKey<>("wood", WoodProperty.class); + // Empty property used to allow property-less Materials without removing base type enforcement public static final PropertyKey EMPTY = new PropertyKey<>("empty", EmptyProperty.class); diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java index 7a07bbf5e4..ceb8649a63 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/MachineDefinition.java @@ -61,11 +61,9 @@ public class MachineDefinition implements Supplier { private Supplier> blockEntityTypeSupplier; @Setter private Function machineSupplier; - @Setter - @Nullable - private GTRecipeType recipeType; - @Getter - @Setter + @Getter @Setter @Nullable + private GTRecipeType[] recipeTypes; + @Getter @Setter private int tier; @Setter @Getter private int defaultPaintingColor; @@ -132,11 +130,6 @@ public String getName() { return id.getPath(); } - @Nullable - public GTRecipeType getRecipeType() { - return recipeType; - } - @Override public String toString() { return "[Definition: %s]".formatted(id); diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java index 9346c38d04..d5a2693992 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleGeneratorMachine.java @@ -104,7 +104,7 @@ public boolean dampingWhenWaiting() { return group; }, (template, machine) -> { if (machine instanceof SimpleGeneratorMachine generatorMachine) { - generatorMachine.recipeType.createEditableUITemplate(false, false).setupUI(template, + generatorMachine.getRecipeType().createEditableUITemplate(false, false).setupUI(template, new GTRecipeType.RecipeHolder(generatorMachine.recipeLogic::getProgressPercent, generatorMachine.importItems.storage, generatorMachine.exportItems.storage, diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java index ac46369033..0cef042167 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/SimpleTieredMachine.java @@ -369,7 +369,7 @@ public void attachConfigurators(ConfiguratorPanel configuratorPanel) { return group; }, (template, machine) -> { if (machine instanceof SimpleTieredMachine tieredMachine) { - tieredMachine.recipeType.createEditableUITemplate(false, false).setupUI(template, + tieredMachine.getRecipeType().createEditableUITemplate(false, false).setupUI(template, new GTRecipeType.RecipeHolder(tieredMachine.recipeLogic::getProgressPercent, tieredMachine.importItems.storage, tieredMachine.exportItems.storage, diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java index 018d769f2c..f9bb5d6240 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/WorkableTieredMachine.java @@ -20,6 +20,7 @@ import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; +import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; import java.util.ArrayList; import java.util.EnumMap; @@ -40,7 +41,9 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen @Persisted @DescSynced public final RecipeLogic recipeLogic; @Getter - public final GTRecipeType recipeType; + public final GTRecipeType[] recipeTypes; + @Getter @Setter @Persisted + public int activeRecipeType; @Getter public final Int2LongFunction tankScalingFunction; @Nullable @Getter @Setter @@ -65,7 +68,8 @@ public abstract class WorkableTieredMachine extends TieredEnergyMachine implemen public WorkableTieredMachine(IMachineBlockEntity holder, int tier, Int2LongFunction tankScalingFunction, Object... args) { super(holder, tier, args); this.overclockTier = getMaxOverclockTier(); - this.recipeType = getDefinition().getRecipeType(); + this.recipeTypes = getDefinition().getRecipeTypes(); + this.activeRecipeType = 0; this.tankScalingFunction = tankScalingFunction; this.capabilitiesProxy = Tables.newCustomTable(new EnumMap<>(IO.class), HashMap::new); this.traitSubscriptions = new ArrayList<>(); @@ -195,4 +199,9 @@ public long getOverclockVoltage() { public boolean keepSubscribing() { return false; } + + @Nonnull + public GTRecipeType getRecipeType() { + return recipeTypes[activeRecipeType]; + } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java new file mode 100644 index 0000000000..aae1c38046 --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/fancyconfigurator/MachineModeFancyConfigurator.java @@ -0,0 +1,108 @@ +package com.gregtechceu.gtceu.api.machine.fancyconfigurator; + +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.fancy.IFancyConfigurator; +import com.gregtechceu.gtceu.api.machine.feature.IRecipeLogicMachine; +import com.gregtechceu.gtceu.utils.FormattingUtil; +import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; +import com.lowdragmc.lowdraglib.gui.texture.ResourceTexture; +import com.lowdragmc.lowdraglib.gui.widget.SelectorWidget; +import com.lowdragmc.lowdraglib.gui.widget.Widget; +import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.Component; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.function.BiConsumer; +import java.util.function.Consumer; + +/** + * @author Rundas/Screret + * @implNote MachineModeFancyConfigurator + */ +public class MachineModeFancyConfigurator implements IFancyConfigurator { + protected IRecipeLogicMachine machine; + + public MachineModeFancyConfigurator(IRecipeLogicMachine machine) { + this.machine = machine; + } + + @Override + public String getTitle() { + return "gtceu.gui.machinemode.title"; + } + + @Override + public IGuiTexture getIcon() { + return new ResourceTexture("gtceu:textures/item/lv_robot_arm.png"); + } + + @Override + public void writeInitialData(FriendlyByteBuf buffer) { + buffer.writeVarInt(machine.getActiveRecipeType()); + } + + @Override + public void readInitialData(FriendlyByteBuf buffer) { + machine.setActiveRecipeType(buffer.readVarInt()); + } + + @Override + public void detectAndSendChange(BiConsumer> sender) { + sender.accept(0, buf -> buf.writeVarInt(machine.getActiveRecipeType())); + } + + @Override + public void readUpdateInfo(int id, FriendlyByteBuf buffer) { + if (id == 0) { + machine.setActiveRecipeType(buffer.readVarInt()); + } + } + + @Override + public Widget createConfigurator() { + List recipeTypeNames = Arrays.stream(machine.getRecipeTypes()).map(rt -> Component.translatable(rt.registryName.toLanguageKey()).getString()).toList(); + return new WidgetGroup(0, 0, 140, 20 * recipeTypeNames.size()) { + @Override + public void initWidget() { + super.initWidget(); + setBackground(GuiTextures.BACKGROUND_INVERSE); + addWidget(new SelectorWidget(2, 2, 136, 15, recipeTypeNames, -1).setOnChanged( + rt -> { + machine.setActiveRecipeType(recipeTypeNames.indexOf(rt)); + machine.getRecipeLogic().resetRecipeLogic(); + }).setSupplier(() -> { + var index = recipeTypeNames.indexOf(Component.translatable(machine.getRecipeType().registryName.toLanguageKey()).getString()); + return recipeTypeNames.get(Math.max(index, 0)); + }) + ); + } + + @Override + public void writeInitialData(FriendlyByteBuf buffer) { + buffer.writeVarInt(machine.getActiveRecipeType()); + super.writeInitialData(buffer); + } + + @Override + public void readInitialData(FriendlyByteBuf buffer) { + machine.setActiveRecipeType(buffer.readVarInt()); + super.readInitialData(buffer); + } + + @Override + public void readUpdateInfo(int id, FriendlyByteBuf buffer) { + super.readUpdateInfo(id, buffer); + } + }; + } + + @Override + public List getTooltips() { + List tooltip = new ArrayList<>(); + tooltip.add(Component.literal("Change active Machine Mode")); + return tooltip; + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java index 202c269e19..b0f8b2b973 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IFancyUIMachine.java @@ -3,7 +3,9 @@ import com.gregtechceu.gtceu.api.capability.IControllable; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.gui.fancy.*; +import com.gregtechceu.gtceu.api.machine.WorkableTieredMachine; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.AutoOutputFancyConfigurator; +import com.gregtechceu.gtceu.api.machine.fancyconfigurator.MachineModeFancyConfigurator; import com.gregtechceu.gtceu.api.machine.fancyconfigurator.OverclockFancyConfigurator; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; @@ -104,6 +106,9 @@ default void attachConfigurators(ConfiguratorPanel configuratorPanel) { Component.translatable(pressed ? "behaviour.soft_hammer.enabled" : "behaviour.soft_hammer.disabled") ))); } + if (this instanceof IRecipeLogicMachine rLMachine && rLMachine.getRecipeTypes().length > 1) { + configuratorPanel.attachConfigurators(new MachineModeFancyConfigurator(rLMachine)); + } configuratorPanel.attachConfigurators(self().getCoverContainer()); if (this instanceof IAutoOutputItem || this instanceof IAutoOutputFluid) { configuratorPanel.attachConfigurators(new AutoOutputFancyConfigurator(self())); diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java index 1e3b8b6ec4..cfd0bee7a5 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/feature/IRecipeLogicMachine.java @@ -28,8 +28,13 @@ default int getChanceTier() { * RecipeType held */ @Nonnull + GTRecipeType[] getRecipeTypes(); + @Nonnull GTRecipeType getRecipeType(); + int getActiveRecipeType(); + void setActiveRecipeType(int type); + /** * Called when recipe logic status changed */ diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java index b6541f67fb..ce7a51d36c 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/PartAbility.java @@ -33,6 +33,7 @@ public class PartAbility { public static final PartAbility MUFFLER = new PartAbility("muffler"); public static final PartAbility TANK_VALVE = new PartAbility("tank_valve"); public static final PartAbility PASSTHROUGH_HATCH = new PartAbility("passthrough_hatch"); + public static final PartAbility PARALLEL_HATCH = new PartAbility("parallel_hatch"); /** * tier -> available blocks diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java index b7df7bf54f..c6a2baaa15 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableElectricMultiblockMachine.java @@ -9,12 +9,10 @@ import com.gregtechceu.gtceu.api.gui.fancy.IFancyUIProvider; import com.gregtechceu.gtceu.api.gui.fancy.TooltipsPanel; import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; -import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; -import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; +import com.gregtechceu.gtceu.api.machine.feature.*; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IDisplayUIMachine; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiPart; import com.gregtechceu.gtceu.utils.GTUtil; -import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; import com.lowdragmc.lowdraglib.gui.modular.ModularUI; import com.lowdragmc.lowdraglib.gui.widget.*; import net.minecraft.ChatFormatting; @@ -94,7 +92,7 @@ public void addDisplayText(List textList) { textList.add(Component.translatable(getRecipeType().registryName.toLanguageKey()) .setStyle(Style.EMPTY.withColor(ChatFormatting.AQUA) .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, - Component.translatable("gtceu.multiblock.multiple_recipemaps.tooltip"))))); + Component.translatable("gtceu.gui.machinemode.title"))))); if (!isWorkingEnabled()) { textList.add(Component.translatable("gtceu.multiblock.work_paused")); diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java index 8bcdcce1c1..8c8b758aa4 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/multiblock/WorkableMultiblockMachine.java @@ -29,6 +29,7 @@ import net.minecraft.core.BlockPos; import org.jetbrains.annotations.Nullable; +import javax.annotation.Nonnull; import javax.annotation.ParametersAreNonnullByDefault; import java.util.*; @@ -49,7 +50,9 @@ public abstract class WorkableMultiblockMachine extends MultiblockControllerMach @DescSynced public final RecipeLogic recipeLogic; @Getter - private final GTRecipeType recipeType; + private final GTRecipeType[] recipeTypes; + @Getter @Setter @Persisted + private int activeRecipeType; @Getter protected final Table, List>> capabilitiesProxy; protected final List traitSubscriptions; @@ -60,7 +63,8 @@ public abstract class WorkableMultiblockMachine extends MultiblockControllerMach public WorkableMultiblockMachine(IMachineBlockEntity holder, Object... args) { super(holder); - this.recipeType = getDefinition().getRecipeType(); + this.recipeTypes = getDefinition().getRecipeTypes(); + this.activeRecipeType = 0; this.recipeLogic = createRecipeLogic(args); this.capabilitiesProxy = Tables.newCustomTable(new EnumMap<>(IO.class), HashMap::new); this.traitSubscriptions = new ArrayList<>(); @@ -233,4 +237,8 @@ public void onWaiting() { } } + @Nonnull + public GTRecipeType getRecipeType() { + return recipeTypes[activeRecipeType]; + } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java index 26b795b824..fb6629a153 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SimpleSteamMachine.java @@ -156,7 +156,7 @@ public void afterWorking() { @Override public ModularUI createUI(Player entityPlayer) { - var group = recipeType.createUITemplate(recipeLogic::getProgressPercent, importItems.storage, exportItems.storage, new IFluidStorage[0], new IFluidStorage[0], true, isHighPressure); + var group = getRecipeType().createUITemplate(recipeLogic::getProgressPercent, importItems.storage, exportItems.storage, new IFluidStorage[0], new IFluidStorage[0], true, isHighPressure); Position pos = new Position((Math.max(group.getSize().width + 4 + 8, 176) - 4 - group.getSize().width) / 2 + 4, 32); group.setSelfPosition(pos); return new ModularUI(176, 166, this, entityPlayer) diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java index 539837c766..b91377a659 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/steam/SteamWorkableMachine.java @@ -55,7 +55,9 @@ public abstract class SteamWorkableMachine extends SteamMachine implements IReci @DescSynced public final RecipeLogic recipeLogic; @Getter - public final GTRecipeType recipeType; + public final GTRecipeType[] recipeTypes; + @Getter @Setter + public int activeRecipeType; @Persisted @DescSynced @Getter @RequireRerender protected Direction outputFacing; @Persisted @DescSynced @Getter @Setter @@ -66,7 +68,8 @@ public abstract class SteamWorkableMachine extends SteamMachine implements IReci public SteamWorkableMachine(IMachineBlockEntity holder, boolean isHighPressure, Object... args) { super(holder, isHighPressure, args); - this.recipeType = getDefinition().getRecipeType(); + this.recipeTypes = getDefinition().getRecipeTypes(); + this.activeRecipeType = 0; this.recipeLogic = createRecipeLogic(args); this.capabilitiesProxy = Tables.newCustomTable(new EnumMap<>(IO.class), HashMap::new); this.traitSubscriptions = new ArrayList<>(); @@ -132,6 +135,12 @@ public boolean keepSubscribing() { return false; } + @NotNull + @Override + public GTRecipeType getRecipeType() { + return recipeTypes[activeRecipeType]; + } + ////////////////////////////////////// //******* Rendering ********// ////////////////////////////////////// diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java b/common/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java index 226259d6aa..716dfa6dc2 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/machine/trait/RecipeLogic.java @@ -129,7 +129,10 @@ public double getProgressPercent() { } public boolean needFuel() { - return machine.getRecipeType().isFuelRecipeType(); + if (machine.getRecipeType().isFuelRecipeType()){ + return true; + } + return false; } /** diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java b/common/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java index ad0a530e2f..be4facbfa5 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/pattern/Predicates.java @@ -3,7 +3,6 @@ import com.gregtechceu.gtceu.api.block.ActiveBlock; import com.gregtechceu.gtceu.api.block.ICoilType; import com.gregtechceu.gtceu.api.block.IMachineBlock; -import com.gregtechceu.gtceu.api.blockentity.PipeBlockEntity; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; @@ -81,11 +80,11 @@ public static TraceabilityPredicate ability(PartAbility ability, int... tiers) { return blocks((tiers.length == 0 ? ability.getAllBlocks() : ability.getBlocks(tiers)).toArray(Block[]::new)); } - public static TraceabilityPredicate autoAbilities(GTRecipeType recipeType) { + public static TraceabilityPredicate autoAbilities(GTRecipeType... recipeType) { return autoAbilities(recipeType, true, true, true, true, true, true); } - public static TraceabilityPredicate autoAbilities(GTRecipeType recipeType, + public static TraceabilityPredicate autoAbilities(GTRecipeType[] recipeType, boolean checkEnergyIn, boolean checkEnergyOut, boolean checkItemIn, @@ -95,39 +94,57 @@ public static TraceabilityPredicate autoAbilities(GTRecipeType recipeType, TraceabilityPredicate predicate = new TraceabilityPredicate(); if (checkEnergyIn) { - if (recipeType.getMaxInputs(EURecipeCapability.CAP) > 0) { - predicate = predicate.or(abilities(PartAbility.INPUT_ENERGY).setMaxGlobalLimited(3).setPreviewCount(1)); + for (var type : recipeType) { + if (type.getMaxInputs(EURecipeCapability.CAP) > 0) { + predicate = predicate.or(abilities(PartAbility.INPUT_ENERGY).setMaxGlobalLimited(3).setPreviewCount(1)); + break; + } } } if (checkEnergyOut) { - if (recipeType.getMaxOutputs(EURecipeCapability.CAP) > 0) { - predicate = predicate.or(abilities(PartAbility.OUTPUT_ENERGY).setMaxGlobalLimited(3).setPreviewCount(1)); + for (var type : recipeType) { + if (type.getMaxOutputs(EURecipeCapability.CAP) > 0) { + predicate = predicate.or(abilities(PartAbility.OUTPUT_ENERGY).setMaxGlobalLimited(3).setPreviewCount(1)); + break; + } } } if (checkItemIn) { - if (recipeType.getMaxInputs(ItemRecipeCapability.CAP) > 0) { - predicate = predicate.or(abilities(PartAbility.IMPORT_ITEMS).setPreviewCount(1)); + for (var type : recipeType) { + if (type.getMaxInputs(ItemRecipeCapability.CAP) > 0) { + predicate = predicate.or(abilities(PartAbility.IMPORT_ITEMS).setPreviewCount(1)); + break; + } } } if (checkItemOut) { - if (recipeType.getMaxOutputs(ItemRecipeCapability.CAP) > 0) { - predicate = predicate.or(abilities(PartAbility.EXPORT_ITEMS).setPreviewCount(1)); + for (var type : recipeType) { + if (type.getMaxOutputs(ItemRecipeCapability.CAP) > 0) { + predicate = predicate.or(abilities(PartAbility.EXPORT_ITEMS).setPreviewCount(1)); + break; + } } } if (checkFluidIn) { - if (recipeType.getMaxInputs(FluidRecipeCapability.CAP) > 0) { - predicate = predicate.or(abilities(PartAbility.IMPORT_FLUIDS).setPreviewCount(1)); + for (var type : recipeType) { + if (type.getMaxInputs(FluidRecipeCapability.CAP) > 0) { + predicate = predicate.or(abilities(PartAbility.IMPORT_FLUIDS).setPreviewCount(1)); + break; + } } } if (checkFluidOut) { - if (recipeType.getMaxOutputs(FluidRecipeCapability.CAP) > 0) { - predicate = predicate.or(abilities(PartAbility.EXPORT_FLUIDS).setPreviewCount(1)); + for (var type : recipeType) { + if (type.getMaxOutputs(FluidRecipeCapability.CAP) > 0) { + predicate = predicate.or(abilities(PartAbility.EXPORT_FLUIDS).setPreviewCount(1)); + break; + } } } return predicate; } - public static TraceabilityPredicate autoAbilities(boolean checkMaintenance, boolean checkMuffler) { + public static TraceabilityPredicate autoAbilities(boolean checkMaintenance, boolean checkMuffler, boolean checkParallel) { TraceabilityPredicate predicate = new TraceabilityPredicate(); if (checkMaintenance) { predicate = predicate.or(abilities(PartAbility.MAINTENANCE).setMinGlobalLimited(ConfigHolder.INSTANCE.machines.enableMaintenance ? 1 : 0).setMaxGlobalLimited(1)); @@ -135,6 +152,9 @@ public static TraceabilityPredicate autoAbilities(boolean checkMaintenance, bool if (checkMuffler) { predicate = predicate.or(abilities(PartAbility.MUFFLER).setMinGlobalLimited(1).setMaxGlobalLimited(1)); } + if (checkParallel) { + predicate = predicate.or(abilities(PartAbility.PARALLEL_HATCH).setMaxGlobalLimited(1).setPreviewCount(1)); + } return predicate; } diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java index 856d900a3a..048e7a0211 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MachineBuilder.java @@ -20,6 +20,7 @@ import com.gregtechceu.gtceu.config.ConfigHolder; import com.lowdragmc.lowdraglib.LDLib; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; import com.tterrag.registrate.Registrate; import com.tterrag.registrate.builders.BlockBuilder; import com.tterrag.registrate.builders.ItemBuilder; @@ -45,6 +46,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.function.TriFunction; import javax.annotation.Nullable; @@ -90,8 +92,7 @@ public class MachineBuilder extends Builde private Consumer> itemBuilder; @Setter private NonNullConsumer> onBlockEntityRegister = MetaMachineBlockEntity::onBlockEntityRegister; - @Setter - private GTRecipeType recipeType; + private GTRecipeType[] recipeTypes; @Getter @Setter // getter for KJS private int tier; @Setter @@ -136,6 +137,18 @@ protected MachineBuilder(Registrate registrate, String name, this.definitionFactory = definitionFactory; } + public MachineBuilder recipeType(GTRecipeType type) { + this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); + return this; + } + + public MachineBuilder recipeTypes(GTRecipeType... types) { + for (GTRecipeType type : types){ + this.recipeTypes = ArrayUtils.add(this.recipeTypes, type); + } + return this; + } + public static MachineBuilder create(Registrate registrate, String name, Function definitionFactory, Function metaMachine, @@ -298,7 +311,7 @@ public DEFINITION register() { blockEntityBuilder = blockEntityBuilder.renderer(() -> GTRendererProvider::getOrCreate); } var blockEntity = blockEntityBuilder.register(); - definition.setRecipeType(recipeType); + definition.setRecipeTypes(recipeTypes); definition.setBlockSupplier(block); definition.setItemSupplier(item); definition.setTier(tier); @@ -313,8 +326,12 @@ public DEFINITION register() { if (renderer == null) { renderer = () -> new MachineRenderer(new ResourceLocation(registrate.getModid(), "block/machine/" + name)); } - if (recipeType != null && recipeType.getIconSupplier() == null) { - recipeType.setIconSupplier(definition::asStack); + if (recipeTypes != null) { + for (GTRecipeType type : recipeTypes){ + if (type != null && type.getIconSupplier() == null) { + type.setIconSupplier(definition::asStack); + } + } } if (appearance == null) { appearance = block::getDefaultState; diff --git a/common/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java index eefee768c9..49946f2d21 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java +++ b/common/src/main/java/com/gregtechceu/gtceu/api/registry/registrate/MultiblockMachineBuilder.java @@ -145,8 +145,13 @@ public MultiblockMachineBuilder itemBuilder(Consumer CASING_NONCONDUCTING = createCasingBlock("nonconducting_casing", GTCEu.id("block/casings/gcym/nonconducting_casing")); + public static final BlockEntry CASING_VIBRATION_SAFE = createCasingBlock("vibration_safe_casing", GTCEu.id("block/casings/gcym/vibration_safe_casing")); + public static final BlockEntry CASING_WATERTIGHT = createCasingBlock("watertight_casing", GTCEu.id("block/casings/gcym/watertight_casing")); + public static final BlockEntry CASING_SECURE_MACERATION = createCasingBlock("secure_maceration_casing", GTCEu.id("block/casings/gcym/secure_maceration_casing")); + public static final BlockEntry CASING_HIGH_TEMPERATURE_SMELTING = createCasingBlock("high_temperature_smelting_casing", GTCEu.id("block/casings/gcym/high_temperature_smelting_casing")); + public static final BlockEntry CASING_LASER_SAFE_ENGRAVING = createCasingBlock("laser_safe_engraving_casing", GTCEu.id("block/casings/gcym/laser_safe_engraving_casing")); + public static final BlockEntry CASING_LARGE_SCALE_ASSEMBLING = createCasingBlock("large_scale_assembler_casing", GTCEu.id("block/casings/gcym/large_scale_assembling_casing")); + public static final BlockEntry CASING_SHOCK_PROOF = createCasingBlock("shock_proof_cutting_casing", GTCEu.id("block/casings/gcym/shock_proof_cutting_casing")); + public static final BlockEntry CASING_STRESS_PROOF = createCasingBlock("stress_proof_casing", GTCEu.id("block/casings/gcym/stress_proof_casing")); + public static final BlockEntry CASING_CORROSION_PROOF = createCasingBlock("corrosion_proof_casing", GTCEu.id("block/casings/gcym/corrosion_proof_casing")); + public static final BlockEntry CASING_REACTION_SAFE = createCasingBlock("reaction_safe_mixing_casing", GTCEu.id("block/casings/gcym/reaction_safe_mixing_casing")); + public static final BlockEntry CASING_ATOMIC = createCasingBlock("atomic_casing", GTCEu.id("block/casings/gcym/atomic_casing")); + public static final BlockEntry CASING_INDUSTRIAL_STEAM = createCasingBlock("industrial_steam_casing", GTCEu.id("block/casings/gcym/industrial_steam_casing")); + + public static final BlockEntry SLICING_BLADES = REGISTRATE.block("slicing_blades", p -> (Block) new RendererBlock(p, + Platform.isClient() ? new TextureOverrideRenderer(new ResourceLocation("block/cube_bottom_top"), + Map.of("bottom", GTCEu.id("block/casings/slicing_blades/bottom"), + "top", GTCEu.id("block/casings/slicing_blades/top"), + "side", GTCEu.id("block/casings/slicing_blades/side"))) : null)) + .lang("Slicing Blades") + .initialProperties(() -> Blocks.IRON_BLOCK) + .properties(p -> p.sound(SoundType.METAL).mapColor(MapColor.METAL)) + .addLayer(() -> RenderType::cutoutMipped) + .blockstate(NonNullBiConsumer.noop()) + .tag(GTToolType.WRENCH.harvestTag, BlockTags.MINEABLE_WITH_PICKAXE) + .item(RendererBlockItem::new) + .model(NonNullBiConsumer.noop()) + .build() + .register(); + + public static final BlockEntry MOLYBDENUM_DISILICIDE_COIL_BLOCK = REGISTRATE + .block("molybdenum_disilicide_coil_block", Block::new) + .lang("Molybdenum Disilicide Coil Block") + .initialProperties(() -> Blocks.IRON_BLOCK) + .tag(GTToolType.WRENCH.harvestTag, BlockTags.MINEABLE_WITH_PICKAXE) + .item() + .build() + .register(); + + public static final BlockEntry ELECTROLYTIC_CELL = REGISTRATE + .block("electrolytic_cell", Block::new) + .lang("Electrolytic Cell") + .initialProperties(() -> Blocks.IRON_BLOCK) + .tag(GTToolType.WRENCH.harvestTag, BlockTags.MINEABLE_WITH_PICKAXE) + .simpleItem() + .register(); + + public static final BlockEntry CRUSHING_WHEELS = REGISTRATE + .block("crushing_wheels", Block::new) + .lang("Crushing Wheels") + .initialProperties(() -> Blocks.IRON_BLOCK) + .tag(GTToolType.WRENCH.harvestTag, BlockTags.MINEABLE_WITH_PICKAXE) + .simpleItem() + .register(); + + public static final BlockEntry HEAT_VENT = REGISTRATE + .block("heat_vent", Block::new) + .lang("Heat Vent") + .initialProperties(() -> Blocks.IRON_BLOCK) + .tag(GTToolType.WRENCH.harvestTag, BlockTags.MINEABLE_WITH_PICKAXE) + .simpleItem() + .register(); +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java new file mode 100644 index 0000000000..ce23858b4b --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMMachines.java @@ -0,0 +1,732 @@ +package com.gregtechceu.gtceu.common.data; + +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.data.RotationState; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.api.machine.MachineDefinition; +import com.gregtechceu.gtceu.api.machine.MultiblockMachineDefinition; +import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.PartAbility; +import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine; +import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern; +import com.gregtechceu.gtceu.api.pattern.Predicates; +import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; +import com.gregtechceu.gtceu.common.machine.multiblock.part.ParallelHatchPartMachine; +import net.minecraft.network.chat.Component; + +import static com.gregtechceu.gtceu.api.GTValues.*; +import static com.gregtechceu.gtceu.api.machine.multiblock.PartAbility.*; +import static com.gregtechceu.gtceu.api.pattern.Predicates.*; +import static com.gregtechceu.gtceu.api.pattern.util.RelativeDirection.*; +import static com.gregtechceu.gtceu.api.registry.GTRegistries.REGISTRATE; +import static com.gregtechceu.gtceu.common.data.GCyMBlocks.*; +import static com.gregtechceu.gtceu.common.data.GCyMRecipeTypes.ALLOY_BLAST_RECIPES; +import static com.gregtechceu.gtceu.common.data.GTBlocks.*; +import static com.gregtechceu.gtceu.common.data.GTMachines.registerTieredMachines; +import static com.gregtechceu.gtceu.common.data.GTMaterials.NaquadahAlloy; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; + +/** + * @author Rundas + * @implNote Gregicality Multiblocks + */ +public class GCyMMachines { + public static void init() {} + + public static final MachineDefinition[] PARALLEL_HATCH = registerTieredMachines("parallel_hatch", + ParallelHatchPartMachine::new, + (tier, builder) -> builder + .langValue(switch (tier) { + case 5 -> "Elite"; + case 6 -> "Master"; + case 7 -> "Ultimate"; + case 8 -> "Super"; + default -> "Simple"; // Should never be hit. + } + " Parallel Control Hatch") + .rotationState(RotationState.ALL) + .abilities(PartAbility.PARALLEL_HATCH) + .workableTieredHullRenderer(GTCEu.id("block/machines/parallel_hatch_mk" + (tier - 4))) + .tooltips(Component.translatable("gtceu.parallel_hatch_mk"+tier)) + .compassNode("parallel_hatch") + .register(), + IV, LuV, ZPM, UV); + + public final static MultiblockMachineDefinition LARGE_MACERATION_TOWER = REGISTRATE.multiblock("large_maceration_tower", WorkableElectricMultiblockMachine::new) + .langValue("Large Maceration Tower") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.macerator"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(MACERATOR_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_SECURE_MACERATION) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXX", "XXXXX","XXXXX", "XXXXX") + .aisle("XXXXX", "XGGGX","XGGGX", "X###X") + .aisle("XXXXX", "XGGGX","XGGGX", "X###X") + .aisle("XXXXX", "XGGGX","XGGGX", "X###X") + .aisle("XXXXX", "XXXXX","XXSXX", "XXXXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_SECURE_MACERATION.get()).setMinGlobalLimited(55) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('G', Predicates.blocks(CRUSHING_WHEELS.get())) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/secure_maceration_casing"), + GTCEu.id("block/multiblock/gcym/large_maceration_tower"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_CHEMICAL_BATH = REGISTRATE.multiblock("large_chemical_bath", WorkableElectricMultiblockMachine::new) + .langValue("Large Chemical Bath") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", Component.translatable("gtceu.ore_washer"), Component.translatable("gtceu.chemical_bath"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeTypes(CHEMICAL_BATH_RECIPES, ORE_WASHER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_WATERTIGHT) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXX", "XXXXX", "XXXXX") + .aisle("XXXXX", "XTTTX", "X X") + .aisle("XXXXX", "X X", "X X") + .aisle("XXXXX", "X X", "X X") + .aisle("XXXXX", "X X", "X X") + .aisle("XXXXX", "XTTTX", "X X") + .aisle("XXXXX", "XXSXX", "XXXXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_WATERTIGHT.get()).setMinGlobalLimited(55) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where(' ', Predicates.air()) + .where('T', Predicates.blocks(CASING_TITANIUM_PIPE.get())) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + GTCEu.id("block/multiblock/gcym/large_chemical_bath"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_CENTRIFUGE = REGISTRATE.multiblock("large_centrifuge", WorkableElectricMultiblockMachine::new) + .langValue("Large Centrifugal Unit") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", Component.translatable("gtceu.centrifuge"), Component.translatable("gtceu.thermal_centrifuge"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeTypes(CENTRIFUGE_RECIPES, THERMAL_CENTRIFUGE_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_VIBRATION_SAFE) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("#XXX#","XXXXX","#XXX#") + .aisle("XXXXX","X#P#X","XXXXX") + .aisle("XXXXX","XP#PX","XXXXX") + .aisle("XXXXX","X#P#X","XXXXX") + .aisle("#XXX#","XXSXX","#XXX#") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_VIBRATION_SAFE.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('P', Predicates.blocks(CASING_STEEL_PIPE.get())) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), + GTCEu.id("block/multiblock/gcym/large_centrifuge"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_MIXER = REGISTRATE.multiblock("large_mixer", WorkableElectricMultiblockMachine::new) + .langValue("Large Mixing Vessel") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.mixer"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(MIXER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_VIBRATION_SAFE) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("#XXX#","#XXX#","#XXX#","#XXX#","#XXX#","##F##") + .aisle("XXXXX","X#P#X","X###X","X#P#X","X###X","##F##") + .aisle("XXXXX","XPPPX","X#P#X","XPPPX","X#G#X","FFGFF") + .aisle("XXXXX","X#P#X","X###X","X#P#X","X###X","##F##") + .aisle("#XXX#","#XSX#","#XXX#","#XXX#","#XXX#","##F##") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_VIBRATION_SAFE.get()).setMinGlobalLimited(14) + .or(autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('F', blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.HastelloyX))) + .where('G', blocks(CASING_STAINLESS_STEEL_GEARBOX.get())) + .where('P', blocks(CASING_TITANIUM_PIPE.get())) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), + GTCEu.id("block/multiblock/gcym/large_mixer"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_ELECTROLYZER = REGISTRATE.multiblock("large_electrolyzer", WorkableElectricMultiblockMachine::new) + .langValue("Large Electrolysis Chamber") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.electrolyzer"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(ELECTROLYZER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_NONCONDUCTING) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXX","XXXXX","XXXXX") + .aisle("XXXXX","XCCCX","XCCCX") + .aisle("XXXXX","XCCCX","XCCCX") + .aisle("XXXXX","XXSXX","XXXXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_NONCONDUCTING.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('C', blocks(ELECTROLYTIC_CELL.get())) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/nonconducting_casing"), + GTCEu.id("block/multiblock/gcym/large_electrolyzer"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_ELECTROMAGNET = REGISTRATE.multiblock("large_electromagnet", WorkableElectricMultiblockMachine::new) + .langValue("Large Electromagnet") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", Component.translatable("gtceu.electrolytic_separator"), Component.translatable("gtceu.polarizer"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeTypes(ELECTROMAGNETIC_SEPARATOR_RECIPES, POLARIZER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_NONCONDUCTING) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXX","XXXXX","XXXXX") + .aisle("XCXCX","XCXCX","XCXCX") + .aisle("XCXCX","XCXCX","XCXCX") + .aisle("XXXXX","XXSXX","XXXXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_NONCONDUCTING.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('C', blocks(ELECTROLYTIC_CELL.get())) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/nonconducting_casing"), + GTCEu.id("block/multiblock/gcym/large_electrolyzer"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_PACKER = REGISTRATE.multiblock("large_packer", WorkableElectricMultiblockMachine::new) + .langValue("Large Packaging Machine") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.packer"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(GTRecipeTypes.PACKER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_TUNGSTENSTEEL_ROBUST) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXX","XXX","XXX") + .aisle("XXX","X#X","XXX") + .aisle("XXX","X#X","XXX") + .aisle("XXX","X#X","XXX") + .aisle("XXX","X#X","XXX") + .aisle("XXX","XSX","XXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_TUNGSTENSTEEL_ROBUST.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_robust_tungstensteel"), + GTCEu.id("block/multiblock/gcym/large_packer"), false) + .compassSections(GTCompassSections.TIER[HV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_ASSEMBLER = REGISTRATE.multiblock("large_assembler", WorkableElectricMultiblockMachine::new) + .langValue("Large Assembling Factory") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.assembler"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(ASSEMBLER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) + .pattern(definition -> FactoryBlockPattern.start(FRONT, UP, RIGHT) + .aisle("XXX", "XXX", "XXX") + .aisle("XXX", "CAX", "CCX").setRepeatable(3) + .aisle("XXX", "XXX", "XXX") + .aisle("XXX", "XAX", "#XX") + .aisle("XXX", "S#X", "#XX") + .aisle("XXX", "X#X", "#XX") + .aisle("XXX", "XXX", "XXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_LARGE_SCALE_ASSEMBLING.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('A', Predicates.blocks(CASING_TEMPERED_GLASS.get())) + .where('C', Predicates.blocks(CASING_ASSEMBLY_LINE.get())) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), + GTCEu.id("block/multiblock/gcym/large_assembler"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_CIRCUIT_ASSEMBLER = REGISTRATE.multiblock("large_circuit_assembler", WorkableElectricMultiblockMachine::new) + .langValue("Large Circuit Assembling Facility") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.circuit_assembler"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(CIRCUIT_ASSEMBLER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_LARGE_SCALE_ASSEMBLING) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXXXXXX","XXXXXXXXX","XXXXXXXXX") + .aisle("XXXXXXXXX","XGGGCCCCX","XXXXXXXXX") + .aisle("XXXXXXXXX","XGGGXXSXX","XXXXX###X") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_LARGE_SCALE_ASSEMBLING.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('G', Predicates.blocks(CASING_TEMPERED_GLASS.get())) + .where('C', Predicates.blocks(CASING_ASSEMBLY_LINE.get())) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/large_scale_assembling_casing"), + GTCEu.id("block/multiblock/gcym/large_circuit_assembler"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_ARC_SMELTER = REGISTRATE.multiblock("large_arc_smelter", WorkableElectricMultiblockMachine::new) + .langValue("Large Arc Smelter") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.arc_furnace"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(ARC_FURNACE_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("#XXX#","#XXX#","#XXX#","#XXX#") + .aisle("XXXXX","XC#CX","XC#CX","XXXXX") + .aisle("XXXXX","X###X","X###X","XXXXX") + .aisle("XXXXX","X#C#X","X#C#X","XXXXX") + .aisle("#XXX#","#XSX#","#XXX#","#XXX#") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('C', Predicates.blocks(MOLYBDENUM_DISILICIDE_COIL_BLOCK.get())) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + GTCEu.id("block/multiblock/gcym/large_arc_smelter"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_ENGRAVING_LASER = REGISTRATE.multiblock("large_engraving_laser", WorkableElectricMultiblockMachine::new) + .langValue("Large Engraving Laser") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.laser_engraver"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(LASER_ENGRAVER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_LASER_SAFE_ENGRAVING) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXX","XXGXX","XXGXX","XXXXX") + .aisle("XXXXX","X###X","X###X","XKKKX") + .aisle("XXXXX","G###G","G#C#G","XKXKX") + .aisle("XXXXX","X###X","X###X","XKKKX") + .aisle("XXSXX","XXGXX","XXGXX","XXXXX") + .where('S', controller(blocks(definition.get()))) + .where('C', blocks(CASING_TUNGSTENSTEEL_PIPE.get())) + .where('X', blocks(CASING_LASER_SAFE_ENGRAVING.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('G', blocks(CASING_TEMPERED_GLASS.get())) + .where('K', blocks(CASING_GRATE.get())) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/laser_safe_engraving_casing"), + GTCEu.id("block/multiblock/gcym/large_engraving_laser"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_SIFTING_FUNNEL = REGISTRATE.multiblock("large_sifting_funnel", WorkableElectricMultiblockMachine::new) + .langValue("Large Sifting Funnel") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.sifter"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(SIFTER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_VIBRATION_SAFE) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("#X#X#","#X#X#","#XXX#","XXXXX","#XXX#") + .aisle("XXXXX","X#X#X","XKKKX","XKKKX","X###X") + .aisle("#XXX#","#X#X#","XKKKX","XKKKX","X###X") + .aisle("XXXXX","X#X#X","XKKKX","XKKKX","X###X") + .aisle("#X#X#","#X#X#","#XSX#","XXXXX","#XXX#") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_VIBRATION_SAFE.get()).setMinGlobalLimited(14) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('K', blocks(CASING_GRATE.get())) + .where('#', Predicates.air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/vibration_safe_casing"), + GTCEu.id("block/multiblock/gcym/large_sifting_funnel"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition BLAST_ALLOY_SMELTER = REGISTRATE.multiblock("alloy_blast_smelter", CoilWorkableElectricMultiblockMachine::new) + .langValue("Alloy Blast Smelter") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.alloy_blast_smelter"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(ALLOY_BLAST_RECIPES) + .recipeModifier(GTRecipeModifiers::ebfOverclock) + .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("#XXX#", "#CCC#", "#GGG#", "#CCC#", "#XXX#") + .aisle("XXXXX", "C###C", "G###G", "C###C", "XXXXX") + .aisle("XXXXX", "C###C", "G###G", "C###C", "XXMXX") + .aisle("XXXXX", "C###C", "G###G", "C###C", "XXXXX") + .aisle("#XSX#", "#CCC#", "#GGG#", "#CCC#", "#XXX#") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(14) + .or(autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, false))) + .where('C', heatingCoils()) + .where('M', abilities(PartAbility.MUFFLER)) + .where('G', blocks(HEAT_VENT.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + GTCEu.id("block/multiblock/gcym/blast_alloy_smelter"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_AUTOCLAVE = REGISTRATE.multiblock("large_autoclave", WorkableElectricMultiblockMachine::new) + .langValue("Large Crystallization Chamber") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.autoclave"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(AUTOCLAVE_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_WATERTIGHT) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXX", "XXX", "XXX") + .aisle("XXX", "XTX", "XXX") + .aisle("XXX", "XTX", "XXX") + .aisle("XXX", "XTX", "XXX") + .aisle("XXX", "XSX", "XXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_WATERTIGHT.get()).setMinGlobalLimited(30) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, true))) + .where('T', blocks(CASING_STEEL_PIPE.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + GTCEu.id("block/multiblock/gcym/large_autoclave"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_MATERIAL_PRESS = REGISTRATE.multiblock("large_material_press", WorkableElectricMultiblockMachine::new) + .langValue("Large Material Press") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_4.tooltip", Component.translatable("gtceu.bender"), Component.translatable("gtceu.compressor"), Component.translatable("gtceu.forge_hammer"), Component.translatable("gtceu.forming_press"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeTypes(BENDER_RECIPES, COMPRESSOR_RECIPES, FORGE_HAMMER_RECIPES, FORMING_PRESS_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_STRESS_PROOF) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXXXX", "XXXXXXX", "XXXXXXX") + .aisle("XXXXXXX", "X#XGGGX", "XXXXXXX") + .aisle("XXXXXXX", "XSXCCCX", "XXXXXXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_STRESS_PROOF.get()).setMinGlobalLimited(40) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, true))) + .where('G', blocks(CASING_STEEL_GEARBOX.get())) + .where('C', blocks(CASING_TEMPERED_GLASS.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + GTCEu.id("block/multiblock/gcym/large_material_press"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_BREWER = REGISTRATE.multiblock("large_brewer", WorkableElectricMultiblockMachine::new) + .langValue("Large Brewing Vat") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_3.tooltip", Component.translatable("gtceu.brewery"), Component.translatable("gtceu.fermenter"), Component.translatable("gtceu.fluid_heater"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeTypes(BREWING_RECIPES, FERMENTING_RECIPES, FLUID_HEATER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_CORROSION_PROOF) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("#XXX#", "#XXX#", "#XXX#", "#XXX#", "#####") + .aisle("XXXXX", "XCCCX", "X###X", "XX#XX", "##X##") + .aisle("XXXXX", "XCPCX", "X#P#X", "X#P#X", "#XMX#") + .aisle("XXXXX", "XCCCX", "X###X", "XX#XX", "##X##") + .aisle("#XXX#", "#XSX#", "#XXX#", "#XXX#", "#####") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_CORROSION_PROOF.get()).setMinGlobalLimited(50) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, true))) + .where('P', blocks(CASING_STEEL_PIPE.get())) + .where('C', blocks(MOLYBDENUM_DISILICIDE_COIL_BLOCK.get())) + .where('M', abilities(MUFFLER)) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + GTCEu.id("block/multiblock/gcym/large_material_press"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_CUTTER = REGISTRATE.multiblock("large_cutter", WorkableElectricMultiblockMachine::new) + .langValue("Large Cutting Saw") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", Component.translatable("gtceu.cutter"), Component.translatable("gtceu.lathe"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeTypes(CUTTER_RECIPES, LATHE_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_SHOCK_PROOF) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXX", "XXXX", "XXXX", "####") + .aisle("XXXX", "S##X", "XXXX", "####") + .aisle("XXXX", "XXXX", "XXXX", "XXXX") + .aisle("XXXX", "GCCX", "G##X", "XXXX").setRepeatable(3) + .aisle("XXXX", "XXXX", "XXXX", "XXXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_SHOCK_PROOF.get()).setMinGlobalLimited(65) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, true))) + .where('G', blocks(CASING_TEMPERED_GLASS.get())) + .where('C', blocks(SLICING_BLADES.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/shock_proof_cutting_casing"), + GTCEu.id("block/multiblock/gcym/large_cutter"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_DISTILLERY = REGISTRATE.multiblock("large_distillery", WorkableElectricMultiblockMachine::new) + .langValue("Large Fractionating Distillery") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", Component.translatable("gtceu.distillery"), Component.translatable("gtceu.distillation_tower"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeTypes(DISTILLERY_RECIPES, DISTILLATION_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_WATERTIGHT) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("#XIX#", "#XXX#", "##X##", "#####") + .aisle("XXXXX", "X###X", "#X#X#", "#XXX#") + .aisle("XXXXX", "X#P#X", "X#P#X", "#XMX#").setRepeatable(1, 12) + .aisle("XXXXX", "X###X", "#X#X#", "#XXX#") + .aisle("#XIX#", "#XSX#", "##F##", "#####") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_WATERTIGHT.get()) + .or(abilities(INPUT_ENERGY)) + .or(autoAbilities(true, false, true))) + .where('P', blocks(CASING_STEEL_PIPE.get())) + .where('F', abilities(EXPORT_FLUIDS)) + .where('I', abilities(IMPORT_ITEMS).or(abilities(IMPORT_FLUIDS))) + .where('M', abilities(MUFFLER)) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + GTCEu.id("block/multiblock/gcym/large_distillery"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_EXTRACTOR = REGISTRATE.multiblock("large_extractor", WorkableElectricMultiblockMachine::new) + .langValue("Large Extraction Machine") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_2.tooltip", Component.translatable("gtceu.extractor"), Component.translatable("gtceu<.canner"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeTypes(EXTRACTOR_RECIPES, CANNER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_WATERTIGHT) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXX", "XXXXX", "XXXXX") + .aisle("XXSXX", "XP#PX", "XXXXX") + .aisle("XXXXX", "XXXXX", "XXXXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_WATERTIGHT.get()).setMinGlobalLimited(25) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, true))) + .where('P', blocks(CASING_STEEL_PIPE.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + GTCEu.id("block/multiblock/gcym/large_extractor"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_EXTRUDER = REGISTRATE.multiblock("large_extruder", WorkableElectricMultiblockMachine::new) + .langValue("Large Extrusion Machine") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.extruder"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(EXTRUDER_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_STRESS_PROOF) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("##XXX", "##XXX", "##XXX") + .aisle("##XXX", "##XPX", "##XGX").setRepeatable(2) + .aisle("XXXXX", "XXXPX", "XXXGX") + .aisle("XXXXX", "X#XPX", "XXXGX") + .aisle("XXXXX", "XSXXX", "XXXXX") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_STRESS_PROOF.get()).setMinGlobalLimited(40) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, true))) + .where('P', blocks(CASING_TITANIUM_PIPE.get())) + .where('G', blocks(CASING_TEMPERED_GLASS.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + GTCEu.id("block/multiblock/gcym/large_extruder"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_SOLIDIFIER = REGISTRATE.multiblock("large_solidifier", WorkableElectricMultiblockMachine::new) + .langValue("Large Solidification Array") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.recipemap.fluid_solidifier"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(FLUID_SOLIDFICATION_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_WATERTIGHT) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("#XXX#", "XXXXX", "XXXXX", "XXXXX", "#XXX#") + .aisle("#XSX#", "XC#CX", "X###X", "XC#CX", "#XXX#") + .aisle("#XXX#", "XC#CX", "X###X", "XC#CX", "#XXX#") + .aisle("#XXX#", "XXXXX", "XXXXX", "XXXXX", "#XXX#") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_WATERTIGHT.get()).setMinGlobalLimited(45) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, true))) + .where('C', blocks(CASING_STEEL_PIPE.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/watertight_casing"), + GTCEu.id("block/multiblock/gcym/large_solidifier"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition LARGE_WIREMILL = REGISTRATE.multiblock("large_wiremill", WorkableElectricMultiblockMachine::new) + .langValue("Large Wire Factory") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.wiremill"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(WIREMILL_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_STRESS_PROOF) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXX", "XXX", "XXX") + .aisle("XXX", "S#X", "XXX") + .aisle("XXX", "XCX", "XX#") + .aisle("XXX", "XCX", "#X#") + .aisle("XXX", "XXX", "#X#") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_STRESS_PROOF.get()).setMinGlobalLimited(25) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, true))) + .where('C', blocks(CASING_TITANIUM_GEARBOX.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/stress_proof_casing"), + GTCEu.id("block/multiblock/gcym/large_wiremill"), false) + .compassSections(GTCompassSections.TIER[IV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition MEGA_BLAST_FURNACE = REGISTRATE.multiblock("mega_blast_furnace", CoilWorkableElectricMultiblockMachine::new) + .langValue("Rotary Hearth Furnace") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.electric_blast_furnace"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(BLAST_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, (oc) -> GTRecipeModifiers::ebfOverclock)) + .appearanceBlock(CASING_HIGH_TEMPERATURE_SMELTING) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("##XXXXXXXXX##", "##XXXXXXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####B###B####", "####I###I####", "#FHHH###HHHF#", "####I###I####", "####C###C####", "####C###C####", "####C###C####", "####I###I####", "#FHHH###HHHF#", "####I###I####", "####C###C####", "####C###C####", "####C###C####", "####I###I####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "###PP###PP###", "###PT###TP###", "#FHPH###HPHF#", "###PT###TP###", "###PC###CP###", "###PC###CP###", "###PC###CP###", "###PT###TP###", "#FHPH###HPHF#", "###PT###TP###", "###PC###CP###", "###PC###CP###", "###PC###CP###", "###PT###TP###", "##TPPPMPPPT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####B###B####", "####I###I####", "#FHHH###HHHF#", "####I###I####", "####C###C####", "####C###C####", "####C###C####", "####I###I####", "#FHHH###HHHF#", "####I###I####", "####C###C####", "####C###C####", "####C###C####", "####I###I####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXVXXXXXXXVXX", "####BBPBB####", "####TITIT####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "#FFHHHHHHHFF#", "####BITIB####", "####CCCCC####", "####CCCCC####", "####CCCCC####", "####BITIB####", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXXXXXXXXXX", "#F####P####F#", "#F####P####F#", "#FFHHHPHHHFF#", "######P######", "######P######", "######P######", "######P######", "######P######", "##FHHHPHHHF##", "######P######", "######P######", "######P######", "######P######", "######P######", "##TTTTPTTTT##") + .aisle("XXXXXXXXXXXXX", "XXXXVVVVVXXXX", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##F#######F##", "##FFFHHHFFF##", "#############", "#############", "#############", "#############", "#############", "###TTTTTTT###") + .aisle("#XXXXXXXXXXX#", "#XXXXXXXXXXX#", "###F#####F###", "###F#####F###", "###FFFFFFF###", "#############", "#############", "#############", "#############", "#############", "####FFFFF####", "#############", "#############", "#############", "#############", "#############", "#############") + .aisle("##XXXXXXXXX##", "##XXXXSXXXX##", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############", "#############") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get()).setMinGlobalLimited(360) + .or(autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, true, true))) + .where('C', heatingCoils()) + .where('M', abilities(PartAbility.MUFFLER)) + .where('F', blocks(ChemicalHelper.getBlock(TagPrefix.frameGt,NaquadahAlloy))) + .where('H', blocks(CASING_HIGH_TEMPERATURE_SMELTING.get())) + .where('T', blocks(CASING_TUNGSTENSTEEL_ROBUST.get())) + .where('B', blocks(FIREBOX_TUNGSTENSTEEL.get())) + .where('P', blocks(CASING_TUNGSTENSTEEL_PIPE.get())) + .where('I', blocks(CASING_EXTREME_ENGINE_INTAKE.get())) + .where('V', blocks(HEAT_VENT.get())) + .where('M', abilities(PartAbility.MUFFLER)) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/gcym/high_temperature_smelting_casing"), + GTCEu.id("block/multiblock/gcym/mega_blast_furnace"), false) + .compassSections(GTCompassSections.TIER[LuV]) + .compassNodeSelf() + .register(); + + public final static MultiblockMachineDefinition MEGA_VACUUM_FREEZER = REGISTRATE.multiblock("mega_vacuum_freezer", WorkableElectricMultiblockMachine::new) + .langValue("Bulk Blast Chiller") + .tooltips(Component.translatable("gtceu.multiblock.parallelizable.tooltip")) + .tooltips(Component.translatable("gtceu.machine.available_recipe_map_1.tooltip", Component.translatable("gtceu.vacuum_freezer"))) + .rotationState(RotationState.NON_Y_AXIS) + .recipeType(VACUUM_RECIPES) + .recipeModifier(GTRecipeModifiers.PARALLEL_HATCH.apply(OverclockingLogic.PERFECT_OVERCLOCK, GTRecipeModifiers.ELECTRIC_OVERCLOCK)) + .appearanceBlock(CASING_ALUMINIUM_FROSTPROOF) + .pattern(definition -> FactoryBlockPattern.start() + .aisle("XXXXXXX#KKK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KVK", "XXXXXXX#KKK", "XXXXXXX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XPPPPPPPPPV", "XP#P#PX#VPV", "XPPPPPPPPPV", "XP#P#PX#KVK", "XPPPPPX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XP#P#PX#VPV", "X#####X#VPV", "XP###PX#VPV", "X#####X#KVK", "XP#P#PX####", "XXXXXXX####") + .aisle("XXXXXXX#KVK", "XP#P#PPPPPV", "X#####X#VPV", "XP###PPPPPV", "X#####X#KVK", "XP#P#PX####", "XXXXXXX####") + .aisle("XXXXXXX#KKK", "XPPPPPX#KVK", "XP###PX#KVK", "XP###PX#KVK", "XP###PX#KKK", "XPPPPPX####", "XXXXXXX####") + .aisle("#XXXXX#####", "#XXSXX#####", "#XGGGX#####", "#XGGGX#####", "#XGGGX#####", "#XXXXX#####", "###########") + .where('S', controller(blocks(definition.get()))) + .where('X', blocks(CASING_ALUMINIUM_FROSTPROOF.get()).setMinGlobalLimited(140) + .or(autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, false, true))) + .where('G', blocks(CASING_TEMPERED_GLASS.get())) + .where('K', blocks(CASING_STAINLESS_CLEAN.get())) + .where('P', blocks(CASING_TUNGSTENSTEEL_PIPE.get())) + .where('V', blocks(HEAT_VENT.get())) + .where('#', air()) + .build()) + .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), + GTCEu.id("block/multiblock/gcym/mega_vacuum_freezer"), false) + .compassSections(GTCompassSections.TIER[LuV]) + .compassNodeSelf() + .register(); +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMRecipeTypes.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMRecipeTypes.java new file mode 100644 index 0000000000..7b7677f15c --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GCyMRecipeTypes.java @@ -0,0 +1,48 @@ +package com.gregtechceu.gtceu.common.data; + +import com.gregtechceu.gtceu.api.capability.recipe.IO; +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.lowdragmc.lowdraglib.gui.widget.SlotWidget; +import com.lowdragmc.lowdraglib.utils.CycleItemStackHandler; +import com.lowdragmc.lowdraglib.utils.LocalizationUtils; +import net.minecraft.world.item.ItemStack; + +import java.util.ArrayList; +import java.util.List; + +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; +import static com.lowdragmc.lowdraglib.gui.texture.ProgressTexture.FillDirection.LEFT_TO_RIGHT; + +/** + * @author Rundas + * @implNote Gregicality Multiblocks Recipe Types + */ +public class GCyMRecipeTypes { + + ////////////////////////////////////// + //******* Multiblock *******// + ////////////////////////////////////// + public final static GTRecipeType ALLOY_BLAST_RECIPES = register("alloy_blast_smelter", MULTIBLOCK).setMaxIOSize(9, 0, 3, 1) + .setEUIO(IO.IN) + .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, LEFT_TO_RIGHT) + .setSlotOverlay(false, false, false, GuiTextures.FURNACE_OVERLAY_1) + .setSlotOverlay(false, false, true, GuiTextures.FURNACE_OVERLAY_1) + .setSlotOverlay(false, true, false, GuiTextures.FURNACE_OVERLAY_2) + .setSlotOverlay(false, true, true, GuiTextures.FURNACE_OVERLAY_2) + .setSlotOverlay(true, true, false, GuiTextures.FURNACE_OVERLAY_2) + .setSlotOverlay(true, true, true, GuiTextures.FURNACE_OVERLAY_2) + .addDataInfo(data -> LocalizationUtils.format("gtceu.recipe.temperature", data.getInt("ebf_temp"))) + .setMaxTooltips(4) + .setUiBuilder((recipe, widgetGroup) -> { + int temp = recipe.data.getInt("ebf_temp"); + List> items = new ArrayList<>(); + items.add(GTBlocks.ALL_COILS.entrySet().stream().filter(coil -> coil.getKey().getCoilTemperature() >= temp).map(coil -> new ItemStack(coil.getValue().get())).toList()); + widgetGroup.addWidget(new SlotWidget(new CycleItemStackHandler(items), 0, widgetGroup.getSize().width - 25, widgetGroup.getSize().height - 25, false, false)); + }) + .setSound(GTSoundEntries.ARC); + + public static void init() { + + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java index 9176991b1d..1a4b5dc5e3 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTBlocks.java @@ -78,6 +78,7 @@ import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.FORCE_GENERATE_BLOCK; import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.GENERATE_FRAME; import static com.gregtechceu.gtceu.api.registry.GTRegistries.REGISTRATE; +import static com.gregtechceu.gtceu.common.data.GCyMBlocks.*; import static com.gregtechceu.gtceu.common.data.GTModels.createModelBlockState; /** @@ -294,6 +295,8 @@ private static TagKey[] getPipeTags(Material material) { public static final BlockEntry CASING_PTFE_INERT = createCasingBlock("inert_machine_casing", GTCEu.id("block/casings/solid/machine_casing_inert_ptfe")); public static final BlockEntry CASING_HSSE_STURDY = createCasingBlock("sturdy_machine_casing", GTCEu.id("block/casings/solid/machine_casing_study_hsse")); public static final BlockEntry CASING_TEMPERED_GLASS = createGlassCasingBlock("tempered_glass", GTCEu.id("block/casings/transparent/tempered_glass"), () -> RenderType::translucent); + + public static final ImmutableMap> MATERIALS_TO_CASINGS; static { @@ -307,6 +310,15 @@ private static TagKey[] getPipeTags(Material material) { builder.put(GTMaterials.TungstenSteel, CASING_TUNGSTENSTEEL_ROBUST); builder.put(GTMaterials.Polytetrafluoroethylene, CASING_PTFE_INERT); builder.put(GTMaterials.HSSE, CASING_HSSE_STURDY); + //GCyM + builder.put(GTMaterials.HSLASteel, CASING_NONCONDUCTING); + builder.put(GTMaterials.IncoloyMA956, CASING_VIBRATION_SAFE); + builder.put(GTMaterials.WatertightSteel, CASING_WATERTIGHT); + builder.put(GTMaterials.Zeron100, CASING_SECURE_MACERATION); + builder.put(GTMaterials.TungstenCarbide, CASING_HIGH_TEMPERATURE_SMELTING); + builder.put(GTMaterials.TitaniumTungstenCarbide, CASING_LASER_SAFE_ENGRAVING); + builder.put(GTMaterials.Stellite100, CASING_LARGE_SCALE_ASSEMBLING); + builder.put(GTMaterials.HastelloyC276, CASING_SHOCK_PROOF); MaterialCasingCollectionEvent event = new MaterialCasingCollectionEvent(builder); AddonFinder.getAddons().forEach(addon -> addon.collectMaterialCasings(event)); @@ -373,25 +385,25 @@ private static TagKey[] getPipeTags(Material material) { // Machine Casings public static final BlockEntry MACHINE_CASING_ULV = createMachineCasingBlock(ULV); public static final BlockEntry MACHINE_CASING_LV = createMachineCasingBlock(LV); - public static final BlockEntry MACHINE_CASING_MV = createMachineCasingBlock(GTValues.MV); - public static final BlockEntry MACHINE_CASING_HV = createMachineCasingBlock(GTValues.HV); - public static final BlockEntry MACHINE_CASING_EV = createMachineCasingBlock(GTValues.EV); - public static final BlockEntry MACHINE_CASING_IV = createMachineCasingBlock(GTValues.IV); - public static final BlockEntry MACHINE_CASING_LuV = createMachineCasingBlock(GTValues.LuV); - public static final BlockEntry MACHINE_CASING_ZPM = createMachineCasingBlock(GTValues.ZPM); - public static final BlockEntry MACHINE_CASING_UV = createMachineCasingBlock(GTValues.UV); - public static final BlockEntry MACHINE_CASING_UHV = createMachineCasingBlock(GTValues.UHV); + public static final BlockEntry MACHINE_CASING_MV = createMachineCasingBlock(MV); + public static final BlockEntry MACHINE_CASING_HV = createMachineCasingBlock(HV); + public static final BlockEntry MACHINE_CASING_EV = createMachineCasingBlock(EV); + public static final BlockEntry MACHINE_CASING_IV = createMachineCasingBlock(IV); + public static final BlockEntry MACHINE_CASING_LuV = createMachineCasingBlock(LuV); + public static final BlockEntry MACHINE_CASING_ZPM = createMachineCasingBlock(ZPM); + public static final BlockEntry MACHINE_CASING_UV = createMachineCasingBlock(UV); + public static final BlockEntry MACHINE_CASING_UHV = createMachineCasingBlock(UHV); // Hermetic Casings public static final BlockEntry HERMETIC_CASING_LV = createHermeticCasing(LV); - public static final BlockEntry HERMETIC_CASING_MV = createHermeticCasing(GTValues.MV); - public static final BlockEntry HERMETIC_CASING_HV = createHermeticCasing(GTValues.HV); - public static final BlockEntry HERMETIC_CASING_EV = createHermeticCasing(GTValues.EV); - public static final BlockEntry HERMETIC_CASING_IV = createHermeticCasing(GTValues.IV); - public static final BlockEntry HERMETIC_CASING_LuV = createHermeticCasing(GTValues.LuV); - public static final BlockEntry HERMETIC_CASING_ZPM = createHermeticCasing(GTValues.ZPM); - public static final BlockEntry HERMETIC_CASING_UV = createHermeticCasing(GTValues.UV); - public static final BlockEntry HERMETIC_CASING_UHV = createHermeticCasing(GTValues.UHV); + public static final BlockEntry HERMETIC_CASING_MV = createHermeticCasing(MV); + public static final BlockEntry HERMETIC_CASING_HV = createHermeticCasing(HV); + public static final BlockEntry HERMETIC_CASING_EV = createHermeticCasing(EV); + public static final BlockEntry HERMETIC_CASING_IV = createHermeticCasing(IV); + public static final BlockEntry HERMETIC_CASING_LuV = createHermeticCasing(LuV); + public static final BlockEntry HERMETIC_CASING_ZPM = createHermeticCasing(ZPM); + public static final BlockEntry HERMETIC_CASING_UV = createHermeticCasing(UV); + public static final BlockEntry HERMETIC_CASING_UHV = createHermeticCasing(UHV); public static final BlockEntry BRONZE_HULL = createSteamCasing("bronze_machine_casing", "bronze"); public static final BlockEntry BRONZE_BRICKS_HULL = createSteamCasing("bronze_brick_casing", "bricked_bronze"); @@ -459,15 +471,15 @@ private static BlockEntry createPipeCasingBlock(String name, ResourceLoca // THIS IS JUST FOR PTFE PIPE CASING - private static BlockEntry createCasingBlock(String name, ResourceLocation texture) { + public static BlockEntry createCasingBlock(String name, ResourceLocation texture) { return createCasingBlock(name, RendererBlock::new, texture, () -> Blocks.IRON_BLOCK, () -> RenderType::cutoutMipped); } private static BlockEntry createGlassCasingBlock(String name, ResourceLocation texture, Supplier> type) { - return createCasingBlock(name, RenderGlassBlock::new, texture, () -> Blocks.GLASS, type); + return createCasingBlock(name, RendererGlassBlock::new, texture, () -> Blocks.GLASS, type); } - private static BlockEntry createCasingBlock(String name, BiFunction blockSupplier, ResourceLocation texture, NonNullSupplier properties, Supplier> type) { + public static BlockEntry createCasingBlock(String name, BiFunction blockSupplier, ResourceLocation texture, NonNullSupplier properties, Supplier> type) { return REGISTRATE.block(name, p -> (Block) blockSupplier.apply(p, Platform.isClient() ? new TextureOverrideRenderer(new ResourceLocation("block/cube_all"), Map.of("all", texture)) : null)) @@ -738,6 +750,7 @@ public static void init() { generateMaterialBlocks(); generateCableBlocks(); generatePipeBlocks(); + GCyMBlocks.init(); } public static boolean doMetalPipe(Material material) { diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCompassSections.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCompassSections.java index 19db023a29..36de30b615 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCompassSections.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCompassSections.java @@ -43,7 +43,7 @@ public class GTCompassSections { .register(); public final static CompassSection MACHINES = CompassSection.create("machines") - .icon(() -> new ItemStackTexture(GTMachines.CHEMICAL_REACTOR[0].asStack())) + .icon(() -> new ItemStackTexture(GTMachines.CHEMICAL_REACTOR[GTValues.LV].asStack())) .background(() -> GuiTextures.DISPLAY) .priority(priority++) .register(); diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCreateMachines.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCreateMachines.java index ff0047c697..15a17308bd 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCreateMachines.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCreateMachines.java @@ -121,10 +121,9 @@ public static KineticMachineDefinition[] registerTieredMachines(String name, @Nullable NonNullSupplier>> instanceFactory, boolean renderNormally, int... tiers) { - KineticMachineDefinition[] definitions = new KineticMachineDefinition[tiers.length]; - for (int i = 0; i < tiers.length; i++) { - int tier = tiers[i]; - var register = REGISTRATE.machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, + KineticMachineDefinition[] definitions = new KineticMachineDefinition[GTValues.TIER_COUNT]; + for (int tier : tiers) { + var register = REGISTRATE.machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, id -> definitionFactory.apply(tier, id), holder -> factory.apply(holder, tier), KineticMachineBlock::new, @@ -133,7 +132,7 @@ public static KineticMachineDefinition[] registerTieredMachines(String name, .tier(tier) .hasTESR(instanceFactory != null) .onBlockEntityRegister(type -> KineticMachineBlockEntity.onBlockEntityRegister(type, instanceFactory, renderNormally)); - definitions[i] = builder.apply(tier, register); + definitions[tier] = builder.apply(tier, register); } return definitions; } diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java index ea898bd600..2b2a962200 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTCreativeModeTabs.java @@ -1,5 +1,7 @@ package com.gregtechceu.gtceu.common.data; +import com.gregtechceu.gtceu.GTCEu; +import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.item.ComponentItem; import com.gregtechceu.gtceu.api.item.tool.GTToolType; @@ -54,7 +56,7 @@ public class GTCreativeModeTabs { .register(); public static RegistryEntry MACHINE = REGISTRATE.defaultCreativeTab("machine", builder -> builder.displayItems(new RegistrateDisplayItemsGenerator("machine")) - .icon(() -> GTMachines.ELECTROLYZER[0].asStack()) + .icon(() -> GTMachines.ELECTROLYZER[GTValues.LV].asStack()) .build()) .register(); public static RegistryEntry ITEM = REGISTRATE.defaultCreativeTab("item", diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java index 7e103f84c9..855f45ca7c 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTFluids.java @@ -1,14 +1,16 @@ package com.gregtechceu.gtceu.common.data; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.fluid.FluidTypes; import com.gregtechceu.gtceu.api.data.chemical.material.Material; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.PlasmaProperty; -import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; +import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.*; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.mojang.datafixers.util.Pair; import com.tterrag.registrate.util.entry.FluidEntry; import dev.architectury.injectables.annotations.ExpectPlatform; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluids; @@ -30,6 +32,9 @@ public class GTFluids { public static final Map MATERIAL_FLUIDS = new HashMap<>(); public static final Map>> MATERIAL_FLUID_FLOWING = new HashMap<>(); public static final Map PLASMA_FLUIDS = new HashMap<>(); + public static final Map HOT_FLUIDS = new HashMap<>(); + + public static final ResourceLocation AUTO_GENERATED_MOLTEN_TEXTURE = GTCEu.id("block/fluids/fluid.molten.autogenerated"); public static void init() { handleNonMaterialFluids(GTMaterials.Water, () -> Fluids.WATER); @@ -66,13 +71,48 @@ public static void init() { .color(material.hasFluidColor() ? material.getMaterialARGB() : -1) .onFluidRegister(fluid -> PLASMA_FLUIDS.put(fluid, plasmaProperty)) .registerFluid()); - ; - } + createMoltenFluid(material); + } } + public static void createMoltenFluid(@Nonnull Material material) { + // ignore materials set not to be alloy blast handled + if (material.hasFlag(MaterialFlags.DISABLE_ALLOY_PROPERTY)) return; + + // ignore materials which are not alloys + if (material.getMaterialComponents().size() <= 1) return; + + final BlastProperty blastProperty = material.getProperty(PropertyKey.BLAST); + if (blastProperty == null) return; + + final AlloyBlastProperty alloyBlastProperty = material.getProperty(PropertyKey.ALLOY_BLAST); + if (alloyBlastProperty == null) return; + + if (TagPrefix.ingotHot.doGenerateItem(material)) { + int temperature = blastProperty.getBlastTemperature(); + var fluidType = FluidTypes.MOLTEN; + Supplier fluid = GTRegistries.REGISTRATE.createFluid("molten_" + material.getName(), fluidType.getLocalization(), material, AUTO_GENERATED_MOLTEN_TEXTURE, AUTO_GENERATED_MOLTEN_TEXTURE) + .temperature(temperature) + .density(fluidType.getDensity()) + .viscosity(fluidType.getViscosity()) + .luminance(fluidType.getLuminance()) + .hasBlock(false) + .color(material.hasFluidColor() ? material.getMaterialARGB() : -1) + .onFluidRegister(f -> HOT_FLUIDS.put(f, alloyBlastProperty)) + .registerFluid(); + + alloyBlastProperty.setFluid(fluid); + } else if (material.hasProperty(PropertyKey.FLUID)) { + // not hot enough to produce molten fluid, so produce regular fluid + alloyBlastProperty.setFluid(material::getFluid); + } else return; + + alloyBlastProperty.setTemperature(blastProperty.getBlastTemperature()); + } + public static void handleNonMaterialFluids(@Nonnull Material material, @Nonnull Supplier fluid) { var property = material.getProperty(PropertyKey.FLUID); property.setFluid(fluid); diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java index 8f1b99045b..c05f879499 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTItems.java @@ -413,27 +413,23 @@ public static ICustomDescriptionId cellName() { public static ItemEntry BATTERY_ULV_TANTALUM = REGISTRATE.item("tantalum_capacitor", ComponentItem::create) .lang("Tantalum Capacitor") - .properties(p -> p.stacksTo(1)) .onRegister(attach(ElectricStats.createRechargeableBattery(1000, GTValues.ULV))) .tag(CustomTags.ULV_BATTERIES).register(); public static ItemEntry BATTERY_LV_SODIUM = REGISTRATE.item("lv_sodium_battery", ComponentItem::create) .lang("Small Sodium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(80000, GTValues.LV))) .tag(CustomTags.LV_BATTERIES).register(); public static ItemEntry BATTERY_MV_SODIUM = REGISTRATE.item("mv_sodium_battery", ComponentItem::create) .lang("Medium Sodium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(360000, GTValues.MV))) .tag(CustomTags.MV_BATTERIES).register(); public static ItemEntry BATTERY_HV_SODIUM = REGISTRATE.item("hv_sodium_battery", ComponentItem::create) .lang("Large Sodium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(1200000, GTValues.HV))) @@ -441,21 +437,18 @@ public static ICustomDescriptionId cellName() { public static ItemEntry BATTERY_LV_LITHIUM = REGISTRATE.item("lv_lithium_battery", ComponentItem::create) .lang("Small Lithium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(120000, GTValues.LV))) .tag(CustomTags.LV_BATTERIES).register(); public static ItemEntry BATTERY_MV_LITHIUM = REGISTRATE.item("mv_lithium_battery", ComponentItem::create) .lang("Medium Lithium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(420000, GTValues.MV))) .tag(CustomTags.MV_BATTERIES).register(); public static ItemEntry BATTERY_HV_LITHIUM = REGISTRATE.item("hv_lithium_battery", ComponentItem::create) .lang("Large Lithium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(1800000, GTValues.HV))) @@ -463,21 +456,18 @@ public static ICustomDescriptionId cellName() { public static ItemEntry BATTERY_LV_CADMIUM = REGISTRATE.item("lv_cadmium_battery", ComponentItem::create) .lang("Small Cadmium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(100000, GTValues.LV))) .tag(CustomTags.LV_BATTERIES).register(); public static ItemEntry BATTERY_MV_CADMIUM = REGISTRATE.item("mv_cadmium_battery", ComponentItem::create) .lang("Medium Cadmium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(400000, GTValues.MV))) .tag(CustomTags.MV_BATTERIES).register(); public static ItemEntry BATTERY_HV_CADMIUM = REGISTRATE.item("hv_cadmium_battery", ComponentItem::create) .lang("Large Cadmium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(1600000, GTValues.HV))) @@ -485,13 +475,11 @@ public static ICustomDescriptionId cellName() { public static ItemEntry ENERGIUM_CRYSTAL = REGISTRATE.item("energy_crystal", ComponentItem::create) .lang("Energium Crystal") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(6_400_000L, GTValues.HV))) .tag(CustomTags.HV_BATTERIES).register(); public static ItemEntry LAPOTRON_CRYSTAL = REGISTRATE.item("lapotron_crystal", ComponentItem::create) - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(25_000_000L, GTValues.EV))) @@ -499,21 +487,18 @@ public static ICustomDescriptionId cellName() { public static ItemEntry BATTERY_EV_VANADIUM = REGISTRATE.item("ev_vanadium_battery", ComponentItem::create) .lang("Small Vanadium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(10_240_000L, GTValues.EV))) .tag(CustomTags.EV_BATTERIES).register(); public static ItemEntry BATTERY_IV_VANADIUM = REGISTRATE.item("iv_vanadium_battery", ComponentItem::create) .lang("Medium Vanadium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(40_960_000L, GTValues.IV))) .tag(CustomTags.IV_BATTERIES).register(); public static ItemEntry BATTERY_LUV_VANADIUM = REGISTRATE.item("luv_vanadium_battery", ComponentItem::create) .lang("Large Vanadium Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(163_840_000L, GTValues.LuV))) @@ -521,14 +506,12 @@ public static ICustomDescriptionId cellName() { public static ItemEntry BATTERY_ZPM_NAQUADRIA = REGISTRATE.item("zpm_naquadria_battery", ComponentItem::create) .lang("Medium Naquadria Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(655_360_000L, GTValues.ZPM))) .tag(CustomTags.ZPM_BATTERIES).register(); public static ItemEntry BATTERY_UV_NAQUADRIA = REGISTRATE.item("uv_naquadria_battery", ComponentItem::create) .lang("Large Naquadria Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(2_621_440_000L, GTValues.UV))) @@ -536,14 +519,12 @@ public static ICustomDescriptionId cellName() { public static ItemEntry ENERGY_LAPOTRONIC_ORB = REGISTRATE.item("lapotronic_energy_orb", ComponentItem::create) .lang("Lapotronic Energy Orb") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(250_000_000L, GTValues.IV))) .tag(CustomTags.IV_BATTERIES).register(); public static ItemEntry ENERGY_LAPOTRONIC_ORB_CLUSTER = REGISTRATE.item("lapotronic_energy_orb_cluster", ComponentItem::create) .lang("Lapotronic Energy Orb Cluster") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(1_000_000_000L, GTValues.LuV))) @@ -551,14 +532,12 @@ public static ICustomDescriptionId cellName() { public static ItemEntry ENERGY_MODULE = REGISTRATE.item("energy_module", ComponentItem::create) .lang("Energy Module") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(4_000_000_000L, GTValues.ZPM))) .tag(CustomTags.ZPM_BATTERIES).register(); public static ItemEntry ENERGY_CLUSTER = REGISTRATE.item("energy_cluster", ComponentItem::create) .lang("Energy Cluster") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(20_000_000_000L, GTValues.UV))) @@ -566,13 +545,11 @@ public static ICustomDescriptionId cellName() { public static ItemEntry ZERO_POINT_MODULE = REGISTRATE.item("zero_point_module", ComponentItem::create) .lang("Zero Point Module") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createBattery(2000000000000L, GTValues.ZPM, true))).register(); public static ItemEntry ULTIMATE_BATTERY = REGISTRATE.item("max_battery", ComponentItem::create) .lang("Ultimate Battery") - .properties(p -> p.stacksTo(1)) .model(overrideModel(GTCEu.id("battery"), 8)) .onRegister(modelPredicate(GTCEu.id("battery"), ElectricStats::getStoredPredicate)) .onRegister(attach(ElectricStats.createRechargeableBattery(Long.MAX_VALUE, GTValues.UHV))) diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java index b90867a256..99a3ba9382 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTMachines.java @@ -74,7 +74,6 @@ import net.minecraft.world.level.block.DoorBlock; import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.properties.DoubleBlockHalf; -import net.minecraft.world.level.material.Fluids; import net.minecraft.world.phys.shapes.Shapes; import java.util.ArrayList; @@ -93,6 +92,8 @@ import static com.gregtechceu.gtceu.common.data.GTBlocks.*; import static com.gregtechceu.gtceu.common.data.GTCreativeModeTabs.MACHINE; import static com.gregtechceu.gtceu.common.data.GTMaterials.DrillingFluid; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.DUMMY_RECIPES; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.STEAM_BOILER_RECIPES; import static com.gregtechceu.gtceu.utils.FormattingUtil.toEnglishName; import static com.gregtechceu.gtceu.utils.FormattingUtil.toRomanNumeral; @@ -122,7 +123,7 @@ public class GTMachines { public final static Pair STEAM_SOLID_BOILER = registerSteamMachines("steam_solid_boiler", SteamSolidBoilerMachine::new, (pressure, builder) -> builder.rotationState(RotationState.NON_Y_AXIS) - .recipeType(GTRecipeTypes.STEAM_BOILER_RECIPES) + .recipeType(STEAM_BOILER_RECIPES) .recipeModifier(SteamBoilerMachine::recipeModifier) .workableSteamHullRenderer(pressure, GTCEu.id("block/generators/boiler/coal")) .tooltips(Component.translatable("gtceu.universal.tooltip.produces_fluid", (pressure ? 300 : 120) * FluidHelper.getBucket() / 20000)) @@ -131,7 +132,7 @@ public class GTMachines { public final static Pair STEAM_LIQUID_BOILER = registerSteamMachines("steam_liquid_boiler", SteamLiquidBoilerMachine::new, (pressure, builder) -> builder.rotationState(RotationState.NON_Y_AXIS) - .recipeType(GTRecipeTypes.STEAM_BOILER_RECIPES) + .recipeType(STEAM_BOILER_RECIPES) .recipeModifier(SteamBoilerMachine::recipeModifier) .workableSteamHullRenderer(pressure, GTCEu.id("block/generators/boiler/lava")) .tooltips(Component.translatable("gtceu.universal.tooltip.produces_fluid", (pressure ? 600 : 240) * FluidHelper.getBucket() / 20000)) @@ -147,7 +148,7 @@ public class GTMachines { public final static MachineDefinition STEAM_MINER = REGISTRATE.machine("steam_miner", holder -> new SteamMinerMachine(holder, 320, 4, 0)) .rotationState(RotationState.NON_Y_AXIS) .langValue("Steam Miner") - .recipeType(GTRecipeTypes.DUMMY_RECIPES) + .recipeType(DUMMY_RECIPES) .tier(0) .tooltips(Component.translatable("gtceu.universal.tooltip.uses_per_tick_steam", 16).append(ChatFormatting.GRAY + ", ") .append(Component.translatable("gtceu.machine.miner.per_block", 320 / 20))) @@ -284,7 +285,7 @@ public class GTMachines { (tier, builder) -> builder .rotationState(RotationState.NON_Y_AXIS) .langValue("%s Miner %s".formatted(VLVH[tier], VLVT[tier])) - .recipeType(GTRecipeTypes.DUMMY_RECIPES) + .recipeType(DUMMY_RECIPES) .editableUI(MinerMachine.EDITABLE_UI_CREATOR.apply(GTCEu.id("miner"), (tier + 1) * (tier + 1))) .renderer(() -> new MinerRenderer(tier, GTCEu.id("block/machines/miner"))) .tooltipBuilder((stack, tooltip) -> { @@ -742,8 +743,8 @@ public static BiConsumer> createTankTooltips(String n .aisle("XSX", "CCC", "CCC", "XXX") .where('S', controller(blocks(definition.getBlock()))) .where('X', blocks(CASING_INVAR_HEATPROOF.get()).setMinGlobalLimited(9) - .or(autoAbilities(definition.getRecipeType())) - .or(autoAbilities(true, false))) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, false))) .where('M', abilities(PartAbility.MUFFLER)) .where('C', heatingCoils()) .where('#', air()) @@ -757,12 +758,12 @@ public static BiConsumer> createTankTooltips(String n .where('X', CASING_INVAR_HEATPROOF.getDefaultState()) .where('S', definition, Direction.NORTH) .where('#', Blocks.AIR.defaultBlockState()) - .where('E', ENERGY_INPUT_HATCH[GTValues.LV - 1], Direction.SOUTH) + .where('E', ENERGY_INPUT_HATCH[GTValues.LV], Direction.SOUTH) .where('I', ITEM_IMPORT_BUS[GTValues.LV], Direction.NORTH) .where('O', ITEM_EXPORT_BUS[GTValues.LV], Direction.NORTH) .where('F', FLUID_IMPORT_HATCH[GTValues.LV], Direction.WEST) .where('D', FLUID_EXPORT_HATCH[GTValues.LV], Direction.EAST) - .where('H', MUFFLER_HATCH[GTValues.LV - 1], Direction.UP) + .where('H', MUFFLER_HATCH[GTValues.LV], Direction.UP) .where('M', MAINTENANCE_HATCH, Direction.NORTH); ALL_COILS.entrySet().stream() .sorted(Comparator.comparingInt(entry -> entry.getKey().getTier())) @@ -792,8 +793,8 @@ public static BiConsumer> createTankTooltips(String n .appearanceBlock(CASING_PTFE_INERT) .pattern(definition -> { var casing = blocks(CASING_PTFE_INERT.get()).setMinGlobalLimited(10); - var abilities = Predicates.autoAbilities(definition.getRecipeType()) - .or(Predicates.autoAbilities(true, false)); + var abilities = Predicates.autoAbilities(definition.getRecipeTypes()) + .or(Predicates.autoAbilities(true, false, false)); return FactoryBlockPattern.start() .aisle("XXX", "XCX", "XXX") .aisle("XCX", "CPC", "XCX") @@ -868,8 +869,8 @@ public static BiConsumer> createTankTooltips(String n .aisle("XXX", "XSX", "XXX") .where('S', controller(blocks(definition.get()))) .where('X', blocks(CASING_STEEL_SOLID.get()).setMinGlobalLimited(14) - .or(Predicates.autoAbilities(definition.getRecipeType())) - .or(Predicates.autoAbilities(true, true))) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, true, false))) .where('#', Predicates.air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_solid_steel"), @@ -889,8 +890,8 @@ public static BiConsumer> createTankTooltips(String n .aisle("CCC", "C#C", "CCC") .aisle("XXX", "XSX", "XXX") .where('S', Predicates.controller(blocks(definition.get()))) - .where('X', blocks(MACHINE_CASING_ULV.get()).setMinGlobalLimited(6).or(Predicates.autoAbilities(definition.getRecipeType())) - .or(Predicates.autoAbilities(true, true))) + .where('X', blocks(MACHINE_CASING_ULV.get()).setMinGlobalLimited(6).or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, true, false))) .where('C', Predicates.heatingCoils()) .where('#', Predicates.air()) .build()) @@ -908,7 +909,7 @@ public static BiConsumer> createTankTooltips(String n public final static MultiblockMachineDefinition MULTI_SMELTER = REGISTRATE.multiblock("multi_smelter", CoilWorkableElectricMultiblockMachine::new) .rotationState(RotationState.NON_Y_AXIS) - .recipeType(GTRecipeTypes.FURNACE_RECIPES) + .recipeTypes(GTRecipeTypes.FURNACE_RECIPES, GTRecipeTypes.ALLOY_SMELTER_RECIPES, GTRecipeTypes.ARC_FURNACE_RECIPES, GTRecipeTypes.CENTRIFUGE_RECIPES) .recipeModifier(GTRecipeModifiers::multiSmelterOverclock) .appearanceBlock(CASING_INVAR_HEATPROOF) .pattern(definition -> FactoryBlockPattern.start() @@ -917,8 +918,8 @@ public static BiConsumer> createTankTooltips(String n .aisle("XSX", "CCC", "XXX") .where('S', controller(blocks(definition.get()))) .where('X', blocks(CASING_INVAR_HEATPROOF.get()).setMinGlobalLimited(9) - .or(autoAbilities(definition.getRecipeType())) - .or(autoAbilities(true, false))) + .or(autoAbilities(definition.getRecipeTypes())) + .or(autoAbilities(true, false, false))) .where('M', abilities(PartAbility.MUFFLER)) .where('C', heatingCoils()) .where('#', air()) @@ -947,8 +948,8 @@ public static BiConsumer> createTankTooltips(String n .aisle("HCHCH", "HCOCH", "HCHCH") .where('O', Predicates.controller(blocks(definition.get()))) .where('H', blocks(CASING_STAINLESS_CLEAN.get()).setMinGlobalLimited(12) - .or(Predicates.autoAbilities(definition.getRecipeType())) - .or(Predicates.autoAbilities(true, true))) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, true, false))) .where('#', Predicates.air()) .where('C', Predicates.heatingCoils()) .build()) @@ -1000,8 +1001,8 @@ public static BiConsumer> createTankTooltips(String n .aisle("XXX", "XSX", "XXX") .where('S', Predicates.controller(blocks(definition.getBlock()))) .where('X', blocks(CASING_ALUMINIUM_FROSTPROOF.get()).setMinGlobalLimited(14) - .or(Predicates.autoAbilities(definition.getRecipeType())) - .or(Predicates.autoAbilities(true, true))) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.autoAbilities(true, true, false))) .where('#', Predicates.air()) .build()) .workableCasingRenderer(GTCEu.id("block/casings/solid/machine_casing_frost_proof"), @@ -1047,7 +1048,7 @@ public static BiConsumer> createTankTooltips(String n .where('S', Predicates.controller(blocks(definition.getBlock()))) .where('X', blocks(CASING_PUMP_DECK.get())) .where('F', blocks(MATERIAL_BLOCKS.get(TagPrefix.frameGt, GTMaterials.TreatedWood).get())) - .where('H', Predicates.abilities(PartAbility.PUMP_FLUID_HATCH).or(blocks(FLUID_EXPORT_HATCH[0].get(), FLUID_EXPORT_HATCH[1].get()))) + .where('H', Predicates.abilities(PartAbility.PUMP_FLUID_HATCH).or(blocks(FLUID_EXPORT_HATCH[LV].get(), FLUID_EXPORT_HATCH[MV].get()))) .where('#', Predicates.any()) .build()) .sidedWorkableCasingRenderer("block/casings/pump_deck", GTCEu.id("block/multiblock/primitive_pump"), false) @@ -1193,7 +1194,7 @@ public static BiConsumer> createTankTooltips(String n public static final MultiblockMachineDefinition[] FLUID_DRILLING_RIG = registerTieredMultis("fluid_drilling_rig", FluidDrillMachine::new, (tier, builder) -> builder .rotationState(RotationState.NON_Y_AXIS) .langValue("%s Fluid Drilling Rig %s".formatted(VLVH[tier], VLVT[tier])) - .recipeType(GTRecipeTypes.DUMMY_RECIPES) + .recipeType(DUMMY_RECIPES) .tooltips( Component.translatable("gtceu.machine.fluid_drilling_rig.description"), Component.translatable("gtceu.machine.fluid_drilling_rig.depletion", FormattingUtil.formatNumbers(100.0 / FluidDrillMachine.getDepletionChance(tier))), @@ -1258,7 +1259,7 @@ public static BiConsumer> createTankTooltips(String n public static final MultiblockMachineDefinition CLEANROOM = REGISTRATE.multiblock("cleanroom", CleanroomMachine::new) .rotationState(RotationState.NONE) - .recipeType(GTRecipeTypes.DUMMY_RECIPES) + .recipeType(DUMMY_RECIPES) .appearanceBlock(PLASTCRETE) .tooltips(Component.translatable("gtceu.machine.cleanroom.tooltip.0"), Component.translatable("gtceu.machine.cleanroom.tooltip.1"), @@ -1366,7 +1367,7 @@ public static BiConsumer> createTankTooltips(String n .blockProp(p -> p.noOcclusion().isViewBlocking((state, level, pos) -> false)) .shape(Shapes.box(0.001, 0.001, 0.001, 0.999, 0.999, 0.999)) .appearanceBlock(() -> ProcessingArrayMachine.getCasingState(tier)) - .recipeType(GTRecipeTypes.DUMMY_RECIPES) + .recipeType(DUMMY_RECIPES) .recipeModifier(ProcessingArrayMachine::recipeModifier, true) .pattern(definition -> FactoryBlockPattern.start() .aisle("XXX", "CCC", "XXX") @@ -1380,7 +1381,7 @@ public static BiConsumer> createTankTooltips(String n .or(Predicates.abilities(PartAbility.EXPORT_FLUIDS)) .or(Predicates.abilities(PartAbility.INPUT_ENERGY)) .or(Predicates.abilities(PartAbility.OUTPUT_ENERGY)) - .or(Predicates.autoAbilities(true, false))) + .or(Predicates.autoAbilities(true, false, false))) .where('C', blocks(CLEANROOM_GLASS.get())) .where('#', Predicates.air()) .build()) @@ -1394,6 +1395,7 @@ public static BiConsumer> createTankTooltips(String n .register(), IV, LuV) : null; + ////////////////////////////////////// //********** Misc **********// ////////////////////////////////////// @@ -1418,12 +1420,11 @@ public static MachineDefinition[] registerTieredMachines(String name, BiFunction factory, BiFunction, MachineDefinition> builder, int... tiers) { - MachineDefinition[] definitions = new MachineDefinition[tiers.length]; - for (int i = 0; i < tiers.length; i++) { - int tier = tiers[i]; - var register = REGISTRATE.machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) + MachineDefinition[] definitions = new MachineDefinition[GTValues.TIER_COUNT]; + for (int tier : tiers) { + var register = REGISTRATE.machine(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) .tier(tier); - definitions[i] = builder.apply(tier, register); + definitions[tier] = builder.apply(tier, register); } return definitions; } @@ -1534,12 +1535,11 @@ public static MultiblockMachineDefinition[] registerTieredMultis(String name, BiFunction factory, BiFunction builder, int... tiers) { - MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[tiers.length]; - for (int i = 0; i < tiers.length; i++) { - int tier = tiers[i]; - var register = REGISTRATE.multiblock(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) + MultiblockMachineDefinition[] definitions = new MultiblockMachineDefinition[GTValues.TIER_COUNT]; + for (int tier : tiers) { + var register = REGISTRATE.multiblock(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) .tier(tier); - definitions[i] = builder.apply(tier, register); + definitions[tier] = builder.apply(tier, register); } return definitions; } @@ -1590,8 +1590,8 @@ public static MultiblockMachineDefinition registerLargeCombustionEngine(String n .where('X', blocks(casing.get())) .where('G', blocks(gear.get())) .where('C', blocks(casing.get()).setMinGlobalLimited(3) - .or(autoAbilities(definition.getRecipeType(), false, false, true, true, true, true)) - .or(autoAbilities(true, true))) + .or(autoAbilities(definition.getRecipeTypes(), false, false, true, true, true, true)) + .or(autoAbilities(true, true, false))) .where('D', ability(PartAbility.OUTPUT_ENERGY, Stream.of(ULV, LV, MV, HV ,EV ,IV, LuV, ZPM, UV, UHV).filter(t -> t >= tier).mapToInt(Integer::intValue).toArray()).addTooltips(Component.translatable("gtceu.multiblock.pattern.error.limited.1", GTValues.VN[tier]))) .where('A', blocks(intake.get()).addTooltips(Component.translatable("gtceu.multiblock.pattern.clear_amount_1"))) .where('Y', controller(blocks(definition.getBlock()))) @@ -1629,8 +1629,8 @@ public static MultiblockMachineDefinition registerLargeTurbine(String name, int .setExactLimit(1) .or(abilities(PartAbility.OUTPUT_ENERGY)).setExactLimit(1)) .where('H', blocks(casing.get()) - .or(autoAbilities(definition.getRecipeType(), false, false, true, true, true, true)) - .or(autoAbilities(true, true))) + .or(autoAbilities(definition.getRecipeTypes(), false, false, true, true, true, true)) + .or(autoAbilities(true, true, false))) .build()) .recoveryItems(() -> new ItemLike[]{GTItems.MATERIAL_ITEMS.get(TagPrefix.dustTiny, GTMaterials.Ash).get()}) .workableCasingRenderer(casingTexture, overlayModel, false) @@ -1705,6 +1705,7 @@ public static Component[] workableTiered(int tier, long voltage, long energyCapa } public static void init() { + GCyMMachines.init(); if (GTCEu.isCreateLoaded()) { GTCreateMachines.init(); } @@ -1712,7 +1713,7 @@ public static void init() { BEDROCK_ORE_MINER = registerTieredMultis("bedrock_ore_miner", BedrockOreMinerMachine::new, (tier, builder) -> builder .rotationState(RotationState.NON_Y_AXIS) .langValue("%s Bedrock Ore Miner %s".formatted(VLVH[tier], VLVT[tier])) - .recipeType(new GTRecipeType(GTCEu.id("drilling_rig"), "dummy")) + .recipeType(new GTRecipeType(GTCEu.id("bedrock_ore_miner"), "dummy")) .tooltips( Component.translatable("gtceu.machine.bedrock_ore_miner.description"), Component.translatable("gtceu.machine.bedrock_ore_miner.depletion", FormattingUtil.formatNumbers(100.0 / BedrockOreMinerMachine.getDepletionChance(tier))), @@ -1726,7 +1727,7 @@ public static void init() { .where('S', controller(blocks(definition.get()))) .where('X', blocks(BedrockOreMinerMachine.getCasingState(tier)).setMinGlobalLimited(3) .or(abilities(PartAbility.INPUT_ENERGY).setMinGlobalLimited(1).setMaxGlobalLimited(3)) - .or(abilities(PartAbility.EXPORT_FLUIDS).setMaxGlobalLimited(1))) + .or(abilities(PartAbility.EXPORT_ITEMS).setMaxGlobalLimited(1))) .where('C', blocks(BedrockOreMinerMachine.getCasingState(tier))) .where('F', blocks(BedrockOreMinerMachine.getFrameState(tier))) .where('#', any()) diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java index a1d257fac4..278399f7d6 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTMaterials.java @@ -7,14 +7,20 @@ import com.gregtechceu.gtceu.api.data.chemical.material.MarkerMaterials; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlag; +import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.AlloyBlastProperty; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.materials.*; +import com.gregtechceu.gtceu.data.recipe.misc.alloyblast.CustomAlloyBlastRecipeProducer; import com.gregtechceu.gtceu.integration.kjs.GTRegistryObjectBuilderTypes; import net.minecraft.world.item.Items; import net.minecraft.world.level.ItemLike; import net.minecraft.world.level.block.Blocks; +import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -107,6 +113,9 @@ public static void init() { * - Reserved for CraftTweaker: 32000-32767 */ + //Gregicality Multiblocks + GCyMMaterials.register(); + CHEMICAL_DYES = new Material[]{ GTMaterials.DyeWhite, GTMaterials.DyeOrange, GTMaterials.DyeMagenta, GTMaterials.DyeLightBlue, @@ -298,6 +307,18 @@ public static void init() { if (GTCEu.isKubeJSLoaded()) { GTRegistryObjectBuilderTypes.registerFor(GTRegistries.MATERIALS.getRegistryName()); } + + for (Material material : GTRegistries.MATERIALS) { + if (!material.hasFlag(MaterialFlags.DISABLE_ALLOY_PROPERTY)) { + addAlloyBlastProperty(material); + } + } + // Alloy Blast Overriding + AlloyBlastProperty property = NiobiumNitride.getProperty(PropertyKey.ALLOY_BLAST); + property.setRecipeProducer(new CustomAlloyBlastRecipeProducer(1, 11, -1)); + + property = IndiumTinBariumTitaniumCuprate.getProperty(PropertyKey.ALLOY_BLAST); + property.setRecipeProducer(new CustomAlloyBlastRecipeProducer(-1, -1, 16)); } public static Material get(String name) { @@ -316,6 +337,28 @@ private static void excludeAllGemsButNormal(Material material) { gemExquisite.setIgnored(material); } + public static void addAlloyBlastProperty(@Nonnull Material material) { + final List components = material.getMaterialComponents(); + // ignore materials which are not alloys + if (components.size() < 2) return; + + BlastProperty blastProperty = material.getProperty(PropertyKey.BLAST); + if (blastProperty == null) return; + + if (!material.hasProperty(PropertyKey.FLUID)) return; + + // if there are more than 2 fluid-only components in the material, do not generate a hot fluid + if (components.stream().filter(GTMaterials::isMaterialStackFluidOnly).limit(3).count() > 2) { + return; + } + + material.setProperty(PropertyKey.ALLOY_BLAST, new AlloyBlastProperty(material.getBlastTemperature())); + } + + private static boolean isMaterialStackFluidOnly(@Nonnull MaterialStack ms) { + return !ms.material().hasProperty(PropertyKey.DUST) && ms.material().hasProperty(PropertyKey.FLUID); + } + public static final List STD_METAL = new ArrayList<>(); public static final List EXT_METAL = new ArrayList<>(); public static final List EXT2_METAL = new ArrayList<>(); @@ -969,4 +1012,22 @@ private static void excludeAllGemsButNormal(Material material) { public static Material BasalticMineralSand; public static Material HSSE; public static Material HSSS; + + /** + * GCyM Materials + */ + public static Material TantalumCarbide; + public static Material HSLASteel; + public static Material MolybdenumDisilicide; + public static Material Zeron100; + public static Material WatertightSteel; + public static Material IncoloyMA956; + public static Material MaragingSteel300; + public static Material HastelloyX; + public static Material Stellite100; + public static Material TitaniumCarbide; + public static Material TitaniumTungstenCarbide; + public static Material HastelloyC276; + + } diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java index 6667dccdf7..3d5d682c52 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeModifiers.java @@ -1,11 +1,13 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.IParallelHatch; import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IRecipeCapabilityHolder; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.feature.IOverclockMachine; import com.gregtechceu.gtceu.api.machine.feature.ITieredMachine; +import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMultiController; import com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine; import com.gregtechceu.gtceu.api.recipe.GTRecipe; import com.gregtechceu.gtceu.api.recipe.OverclockingLogic; @@ -18,6 +20,7 @@ import javax.annotation.Nonnull; import java.util.List; +import java.util.Optional; import java.util.function.BiFunction; import java.util.function.Function; @@ -41,6 +44,11 @@ public class GTRecipeModifiers { return recipe; }); + public static final BiFunction>, BiFunction> PARALLEL_HATCH = Util.memoize((overclockingLogic, function) -> ((machine, recipe) -> { + var paralleledRecipe = GTRecipeModifiers.hatchParallel(machine, recipe, false); + return function.apply(overclockingLogic).apply(machine, paralleledRecipe.getA()); + })); + /** * Fast parallel, the parallel amount is always the 2 times the divisor of maxParallel。 * @param machine recipe holder @@ -71,6 +79,9 @@ public static Tuple fastParallel(MetaMachine machine, @Nonnul * @return modified recipe and parallel amount */ public static Tuple accurateParallel(MetaMachine machine, @Nonnull GTRecipe recipe, int maxParallel, boolean modifyDuration) { + if (maxParallel == 1) { + return new Tuple<>(recipe, 1); + } if (machine instanceof IRecipeCapabilityHolder holder) { var parallel = tryParallel(holder, recipe, 1, maxParallel, modifyDuration); return parallel == null ? new Tuple<>(recipe, 1) : parallel; @@ -98,6 +109,17 @@ private static Tuple tryParallel(IRecipeCapabilityHolder hold } } + public static Tuple hatchParallel(MetaMachine machine, @Nonnull GTRecipe recipe, boolean modifyDuration) { + if (machine instanceof IMultiController controller && controller.isFormed()) { + Optional optional = controller.getParts().stream().filter(IParallelHatch.class::isInstance).map(IParallelHatch.class::cast).findAny(); + if (optional.isPresent()) { + IParallelHatch hatch = optional.get(); + return accurateParallel(machine, recipe, hatch.getCurrentParallel(), modifyDuration); + } + } + return new Tuple<>(recipe, 1); + } + public static GTRecipe crackerOverclock(MetaMachine machine, @Nonnull GTRecipe recipe) { if (machine instanceof CoilWorkableElectricMultiblockMachine coilMachine) { if (RecipeHelper.getRecipeEUtTier(recipe) > coilMachine.getTier()) { diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java index 198b3f98c9..9502b5d209 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipeTypes.java @@ -1,5 +1,6 @@ package com.gregtechceu.gtceu.common.data; +import com.google.common.collect.ImmutableList; import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.addon.AddonFinder; @@ -7,6 +8,8 @@ import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; import com.gregtechceu.gtceu.api.capability.recipe.ItemRecipeCapability; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.recipe.*; import com.gregtechceu.gtceu.api.recipe.content.Content; import com.gregtechceu.gtceu.common.recipe.RPMCondition; @@ -168,7 +171,6 @@ public class GTRecipeTypes { .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW_MULTIPLE, LEFT_TO_RIGHT) .setSound(GTValues.FOOLS.get() ? GTSoundEntries.SCIENCE : GTSoundEntries.CHEMICAL) .setMaxTooltips(4) - // TODO consider allowing LCR to just read these recipes? instead of generating new (minimize extra jsons) .onRecipeBuild((recipeBuilder, provider) -> GTRecipeTypes.LARGE_CHEMICAL_RECIPES.copyFrom(recipeBuilder).save(provider)); public final static GTRecipeType COMPRESSOR_RECIPES = register("compressor", ELECTRIC).setMaxIOSize(1, 1, 0, 0).setEUIO(IO.IN) @@ -553,6 +555,7 @@ public static GTRecipeType register(String name, String group, RecipeType... } public static void init() { + GCyMRecipeTypes.init(); if (GTCEu.isCreateLoaded()) { CREATE_MIXER_RECIPES = register("create_mixer", KINETIC).setMaxIOSize(6, 1, 2, 1).setEUIO(IO.IN) .setSlotOverlay(false, false, GuiTextures.DUST_OVERLAY) diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java index b06bb1f54b..7c7e8c2f1f 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTRecipes.java @@ -57,6 +57,9 @@ public static void recipeAddition(Consumer consumer) { ComponentRecipes.init(consumer); MetaTileEntityLoader.init(consumer); + //GCyM + GCyMRecipes.init(consumer); + // Config-dependent recipes RecipeAddition.init(consumer); // Must run recycling recipes very last diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java index a73bdb5d6f..989a3abe9d 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/GTSyncedFieldAccessors.java @@ -1,6 +1,7 @@ package com.gregtechceu.gtceu.common.data; import com.gregtechceu.gtceu.syncdata.GTRecipeAccessor; +import com.gregtechceu.gtceu.syncdata.GTRecipeTypeAccessor; import com.lowdragmc.lowdraglib.syncdata.IAccessor; import com.lowdragmc.lowdraglib.syncdata.payload.FriendlyBufPayload; @@ -13,8 +14,10 @@ */ public class GTSyncedFieldAccessors { public static final IAccessor GT_RECIPE_ACCESSOR = new GTRecipeAccessor(); + public static final IAccessor GT_RECIPE_TYPE_ACCESSOR = new GTRecipeTypeAccessor(); public static void init() { register(FriendlyBufPayload.class, FriendlyBufPayload::new, GT_RECIPE_ACCESSOR, 1000); + register(FriendlyBufPayload.class, FriendlyBufPayload::new, GT_RECIPE_TYPE_ACCESSOR, 1000); } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java index a6aab1cecc..8bfa5c9377 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/ElementMaterials.java @@ -773,7 +773,7 @@ public static void register() { Tungsten = new Material.Builder("tungsten") .ingot(3).fluid() .color(0x323232).iconSet(METALLIC) - .appendFlags(EXT2_METAL, GENERATE_SPRING, GENERATE_SPRING_SMALL, GENERATE_FOIL, GENERATE_GEAR) + .appendFlags(EXT2_METAL, GENERATE_SPRING, GENERATE_SPRING_SMALL, GENERATE_FOIL, GENERATE_GEAR, GENERATE_FRAME) .element(GTElements.W) .rotorStats(7.0f, 3.0f, 2560) .cableProperties(GTValues.V[5], 2, 2) diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java index 5d0e8487d6..4117f2a3c3 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/FirstDegreeMaterials.java @@ -744,9 +744,9 @@ public static void register() { .buildAndRegister(); Graphene = new Material.Builder("graphene") - .dust() + .dust().ingot() .color(0x808080).iconSet(SHINY) - .flags(DISABLE_DECOMPOSITION) + .flags(DISABLE_DECOMPOSITION, GENERATE_FOIL) .components(Carbon, 1) .cableProperties(GTValues.V[5], 1, 1) .buildAndRegister(); @@ -1071,7 +1071,7 @@ public static void register() { TungstenCarbide = new Material.Builder("tungsten_carbide") .ingot(4).fluid() .color(0x330066).iconSet(METALLIC) - .appendFlags(EXT2_METAL, GENERATE_FOIL, GENERATE_GEAR, DECOMPOSITION_BY_CENTRIFUGING) + .appendFlags(EXT2_METAL, GENERATE_FOIL, GENERATE_GEAR, GENERATE_SMALL_GEAR, GENERATE_FRAME, DECOMPOSITION_BY_CENTRIFUGING) .components(Tungsten, 1, Carbon, 1) .toolStats(ToolProperty.Builder.of(60.0F, 2.0F, 1024, 4) .enchantability(21).build()) diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/GCyMMaterials.java b/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/GCyMMaterials.java new file mode 100644 index 0000000000..7788a7626a --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/common/data/materials/GCyMMaterials.java @@ -0,0 +1,111 @@ +package com.gregtechceu.gtceu.common.data.materials; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty.GasTier; + +import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags.*; +import static com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet.*; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; + +public class GCyMMaterials { + + public static void register() { + + TantalumCarbide = new Material.Builder("tantalum_carbide") + .ingot(4).fluid() + .color(0x999900).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE) + .components(Tantalum, 1, Carbon, 1) + .blastTemp(4120, GasTier.MID, GTValues.VA[GTValues.EV], 1200) + .buildAndRegister(); + + HSLASteel = new Material.Builder("hsla_steel") + .ingot(3).fluid() + .color(0x686868).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_ROD, GENERATE_FRAME) + .components(Invar, 2, Vanadium, 1, Titanium, 1, Molybdenum, 1) + .blastTemp(1711, GasTier.LOW, GTValues.VA[GTValues.HV], 1000) + .buildAndRegister(); + + MolybdenumDisilicide = new Material.Builder("molybdenum_disilicide") + .ingot(2).fluid() + .color(0x564A84).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_SPRING, GENERATE_RING, GENERATE_PLATE, GENERATE_LONG_ROD) + .components(Molybdenum, 1, Silicon, 2) + .blastTemp(2300, GasTier.MID, GTValues.VA[GTValues.EV], 800) + .buildAndRegister(); + + Zeron100 = new Material.Builder("zeron_100") + .ingot(5).fluid() + .color(0x294972).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE) + .components(Iron, 10, Nickel, 2, Tungsten, 2, Niobium, 1, Cobalt, 1) + .blastTemp(3693, GasTier.MID, GTValues.VA[GTValues.EV], 1000) + .buildAndRegister(); + + WatertightSteel = new Material.Builder("watertight_steel") + .ingot(4) + .color(0x2B4B56).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_ROD, GENERATE_FRAME) + .components(Iron, 7, Aluminium, 4, Nickel, 2, Chromium, 1, Sulfur, 1) + .blastTemp(3850, GasTier.MID, GTValues.VA[GTValues.EV], 800) + .buildAndRegister(); + + IncoloyMA956 = new Material.Builder("incoloy_ma_956") + .ingot(5).fluid() + .color(0x2D9B66).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_ROD, GENERATE_FRAME) + .components(VanadiumSteel, 4, Manganese, 2, Aluminium, 5, Yttrium, 2) + .blastTemp(3652, GasTier.MID, GTValues.VA[GTValues.EV], 800) + .buildAndRegister(); + + MaragingSteel300 = new Material.Builder("maraging_steel_300") + .ingot(4).fluid() + .color(0x505B6E).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_ROD, GENERATE_FRAME) + .components(Iron, 16, Titanium, 1, Aluminium, 1, Nickel, 4, Cobalt, 2) + .blastTemp(4000, GasTier.HIGH, GTValues.VA[GTValues.EV], 1000) + .buildAndRegister(); + + HastelloyX = new Material.Builder("hastelloy_x") + .ingot(5).fluid() + .color(0x5784B8).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_FRAME) + .components(Nickel, 8, Iron, 3, Tungsten, 4, Molybdenum, 2, Chromium, 1, Niobium, 1) + .blastTemp(4200, GasTier.HIGH, GTValues.VA[GTValues.EV], 900) + .buildAndRegister(); + + Stellite100 = new Material.Builder("stellite_100") + .ingot(4).fluid() + .color(0xCFCFEE).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE) + .components(Iron, 4, Chromium, 3, Tungsten, 2, Molybdenum, 1) + .blastTemp(3790, GasTier.HIGH, GTValues.VA[GTValues.EV], 1000) + .buildAndRegister(); + + TitaniumCarbide = new Material.Builder("titanium_carbide") + .ingot(3).fluid() + .color(0x90092F).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE) + .components(Titanium, 1, Carbon, 1) + .blastTemp(3430, GasTier.MID, GTValues.VA[GTValues.EV], 1000) + .buildAndRegister(); + + TitaniumTungstenCarbide = new Material.Builder("titanium_tungsten_carbide") + .ingot(6).fluid() + .color(0x680B0B).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE) + .components(TitaniumCarbide, 2, TungstenCarbide, 1) + .blastTemp(3800, GasTier.HIGH, GTValues.VA[GTValues.EV], 1000) + .buildAndRegister(); + + HastelloyC276 = new Material.Builder("hastelloy_c_276") + .ingot(6).fluid() + .color(0xAB2F2F).iconSet(METALLIC) + .appendFlags(STD_METAL, GENERATE_PLATE, GENERATE_FRAME) + .components(Nickel, 12, Molybdenum, 8, Chromium, 7, Tungsten, 1, Cobalt, 1, Copper, 1) + .blastTemp(3800, GasTier.HIGH, GTValues.VA[GTValues.EV], 1000) + .buildAndRegister(); + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java b/common/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java index 0784a26379..ad0ceb4137 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/machine/electric/MinerMachine.java @@ -212,7 +212,7 @@ protected void chargeBattery() { return group; }, (template, machine) -> { if (machine instanceof MinerMachine minerMachine) { - minerMachine.recipeType.createEditableUITemplate(false, false).setupUI(template, + minerMachine.getRecipeType().createEditableUITemplate(false, false).setupUI(template, new GTRecipeType.RecipeHolder(minerMachine.recipeLogic::getProgressPercent, minerMachine.importItems.storage, minerMachine.exportItems.storage, diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java b/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java index 72c7403eb0..6a5d8bfd20 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/CleanroomMachine.java @@ -339,7 +339,7 @@ public BlockPattern getPattern() { } TraceabilityPredicate wallPredicate = states(getCasingState(), getGlassState()); - TraceabilityPredicate basePredicate = Predicates.autoAbilities(true, false) + TraceabilityPredicate basePredicate = Predicates.autoAbilities(true, false, false) .or(abilities(PartAbility.INPUT_ENERGY).setMinGlobalLimited(1).setMaxGlobalLimited(3)); // layer the slices one behind the next diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ProcessingArrayMachine.java b/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ProcessingArrayMachine.java index 947d2c1799..ed3770ca78 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ProcessingArrayMachine.java +++ b/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/ProcessingArrayMachine.java @@ -53,7 +53,7 @@ public class ProcessingArrayMachine extends TieredWorkableElectricMultiblockMach public final NotifiableItemStackHandler machineStorage; //runtime @Nullable - private GTRecipeType recipeTypeCache; + private GTRecipeType[] recipeTypeCache; public ProcessingArrayMachine(IMachineBlockEntity holder, int tier, Object... args) { super(holder, tier, args); @@ -81,8 +81,15 @@ public int getSlotLimit(int slot) { protected boolean isMachineStack(ItemStack itemStack) { if (itemStack.getItem() instanceof MetaMachineItem metaMachineItem) { - var recipeType = metaMachineItem.getDefinition().getRecipeType(); - return recipeType != null && recipeType != GTRecipeTypes.DUMMY_RECIPES; + var recipeTypes = metaMachineItem.getDefinition().getRecipeTypes(); + if(recipeTypes == null){ + return false; + } + for(GTRecipeType type : recipeTypes){ + if(type != GTRecipeTypes.DUMMY_RECIPES){ + return true; + } + } } return false; } @@ -97,13 +104,13 @@ public MachineDefinition getMachineDefinition() { @Override @Nonnull - public GTRecipeType getRecipeType() { + public GTRecipeType[] getRecipeTypes() { if (recipeTypeCache == null) { var definition = getMachineDefinition(); - recipeTypeCache = definition == null ? null : definition.getRecipeType(); + recipeTypeCache = definition == null ? null : definition.getRecipeTypes(); } if (recipeTypeCache == null) { - recipeTypeCache = GTRecipeTypes.DUMMY_RECIPES; + recipeTypeCache = new GTRecipeType[]{GTRecipeTypes.DUMMY_RECIPES}; } return recipeTypeCache; } diff --git a/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java b/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java new file mode 100644 index 0000000000..dcff6ca986 --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/part/ParallelHatchPartMachine.java @@ -0,0 +1,81 @@ +package com.gregtechceu.gtceu.common.machine.multiblock.part; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.capability.IParallelHatch; +import com.gregtechceu.gtceu.api.gui.GuiTextures; +import com.gregtechceu.gtceu.api.gui.widget.IntInputWidget; +import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity; +import com.gregtechceu.gtceu.api.machine.feature.IFancyUIMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.part.MultiblockPartMachine; +import com.gregtechceu.gtceu.api.machine.multiblock.part.TieredPartMachine; +import com.lowdragmc.lowdraglib.gui.widget.*; +import com.lowdragmc.lowdraglib.syncdata.annotation.Persisted; +import com.lowdragmc.lowdraglib.syncdata.field.ManagedFieldHolder; +import lombok.Getter; +import net.minecraft.util.Mth; + +import javax.annotation.Nonnull; +import java.util.function.Function; +import java.util.function.IntSupplier; + +public class ParallelHatchPartMachine extends TieredPartMachine implements IFancyUIMachine, IParallelHatch { + protected static final ManagedFieldHolder MANAGED_FIELD_HOLDER = new ManagedFieldHolder(ParallelHatchPartMachine.class, MultiblockPartMachine.MANAGED_FIELD_HOLDER); + private static final int MIN_PARALLEL = 1; + + private final int maxParallel; + + @Persisted + @Getter + private int currentParallel; + + public ParallelHatchPartMachine(IMachineBlockEntity holder, int tier) { + super(holder, tier); + this.maxParallel = (int) Math.pow(4, tier - GTValues.EV); + } + + public void setCurrentParallel(int parallelAmount) { + this.currentParallel = Mth.clamp(this.currentParallel + parallelAmount, MIN_PARALLEL, this.maxParallel); + } + + @Override + public Widget createUIWidget() { + WidgetGroup parallelAmountGroup = new WidgetGroup(0, 0, 100, 20); + parallelAmountGroup.addWidget(new IntInputWidget(this::getCurrentParallel, this::setCurrentParallel) + .setMin(MIN_PARALLEL) + .setMax(maxParallel)); + + return parallelAmountGroup; + } + + + public String getParallelAmountToString() { + return Integer.toString(this.currentParallel); + } + + + + public static @Nonnull Function getTextFieldValidator(IntSupplier maxSupplier) { + return val -> { + if (val.isEmpty()) + return String.valueOf(MIN_PARALLEL); + int max = maxSupplier.getAsInt(); + int num; + try { + num = Integer.parseInt(val); + } catch (NumberFormatException ignored) { + return String.valueOf(max); + } + if (num < MIN_PARALLEL) + return String.valueOf(MIN_PARALLEL); + if (num > max) + return String.valueOf(max); + return val; + }; + } + + @Override + @Nonnull + public ManagedFieldHolder getFieldHolder() { + return MANAGED_FIELD_HOLDER; + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java b/common/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java index 64de041d1a..1cb2b85cda 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java +++ b/common/src/main/java/com/gregtechceu/gtceu/config/ConfigHolder.java @@ -229,6 +229,10 @@ public static class MachineConfigs { @Configurable @Configurable.Comment({"Wether to add a \"Processing Array\"", "Default: true"}) public boolean doProcessingArray = true; + @Configurable + @Configurable.Comment({"Makes nearly every GCYM Multiblock require blocks which set their maximum voltages.", + "Default: false"}) + public boolean enableTieredCasings = false; } public static class ClientConfigs { diff --git a/common/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java b/common/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java index 7d9f93b1e4..40f710d828 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java +++ b/common/src/main/java/com/gregtechceu/gtceu/core/MixinHelpers.java @@ -2,6 +2,7 @@ import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.AlloyBlastProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.tag.TagPrefix; diff --git a/common/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java b/common/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java index 5a7b7bd6e0..2c1047854c 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java +++ b/common/src/main/java/com/gregtechceu/gtceu/core/mixins/ModelManagerMixin.java @@ -3,6 +3,7 @@ import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconSet; import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialIconType; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.AlloyBlastProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidProperty; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.registry.GTRegistries; diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/lang/BlockLang.java b/common/src/main/java/com/gregtechceu/gtceu/data/lang/BlockLang.java index 9155ece03e..8a509c06f1 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/lang/BlockLang.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/lang/BlockLang.java @@ -81,6 +81,12 @@ private static void initCasingLang(RegistrateLangProvider provider) { replace(provider, "block.gtceu.titanium_firebox", "Titanium Firebox Casing"); replace(provider, "block.gtceu.tungstensteel_firebox", "Tungstensteel Firebox Casing"); + //GCyM Casings + replace(provider, "block.gtceu.laser_safe_engraving_casing", "Laser-Safe Engraving Casing"); + replace(provider, "block.gtceu.large_scale_assembler_casing", "Large-Scale Assembler Casing"); + replace(provider, "block.gtceu.reaction_safe_mixing_casing", "Reaction-Safe Mixing Casing"); + replace(provider, "block.gtceu.vibration_safe_casing", "Vibration-Safe Casing"); + // todo multiblock tanks //replace(provider, "tile.steam_casing.wood_wall.name", "Wooden Wall"); @@ -221,6 +227,6 @@ private static void initCasingLang(RegistrateLangProvider provider) { provider.add("tile.wire_coil.tooltip_pyro", "§8Pyrolyse Oven:"); provider.add("tile.wire_coil.tooltip_speed_pyro", " §bProcessing Speed: §f%s%%"); provider.add("tile.wire_coil.tooltip_cracking", "§8Cracking Unit:"); - provider.add(" tile.wire_coil.tooltip_energy_cracking", " §aEnergy Usage: §f%s%%"); + provider.add("tile.wire_coil.tooltip_energy_cracking", " §aEnergy Usage: §f%s%%"); } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java b/common/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java index e3a95f79e7..5aa3db666f 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/lang/LangHandler.java @@ -95,6 +95,12 @@ public static void init(RegistrateLangProvider provider) { multilineLang(provider, "gtceu.multiblock.primitive_water_pump.extra2", "Hatch Multipliers:\n Pump Hatch: 1x\n ULV Output Hatch: 2x\n LV Output Hatch: 4x\n\nWhile raining in the Pump's Biome, the total water production will be increased by 50%%."); provider.add("gtceu.multiblock.processing_array.description", "The Processing Array combines up to 16 single block machine(s) in a single multiblock, effectively easing automation."); provider.add("gtceu.multiblock.advanced_processing_array.description", "The Processing Array combines up to 64 single block machine(s) in a single multiblock, effectively easing automation."); + provider.add("gtceu.multiblock.parallelizable.tooltip", "Can parallelize with Parallel Control Hatches."); + provider.add("gtceu.parallel_hatch_mk5", "Allows to run up to 4 recipes in parallel."); + provider.add("gtceu.parallel_hatch_mk6", "Allows to run up to 16 recipes in parallel."); + provider.add("gtceu.parallel_hatch_mk7", "Allows to run up to 64 recipes in parallel."); + provider.add("gtceu.parallel_hatch_mk8", "Allows to run up to 256 recipes in parallel."); + provider.add("item.invalid.name", "Invalid item"); provider.add("fluid.empty", "Empty"); provider.add("gtceu.tooltip.hold_shift", "Hold SHIFT for more info"); @@ -385,6 +391,7 @@ public static void init(RegistrateLangProvider provider) { replace(provider, GTMaterials.OilHeavy.getUnlocalizedName(), "Heavy Oil"); replace(provider, GTMaterials.OilLight.getUnlocalizedName(), "Light Oil"); replace(provider, GTMaterials.RawOil.getUnlocalizedName(), "Raw Oil"); + replace(provider, GTMaterials.HSLASteel.getUnlocalizedName(), "HSLA-Steel"); provider.add("item.gunpowder_tiny_dust", "Tiny Pile of Gunpowder"); provider.add("item.gunpowder_small_dust", "Small Pile of Gunpowder"); @@ -682,14 +689,17 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.machine.fluid_drilling_rig.ev.tooltip", "Well Drainer"); provider.add("gtceu.machine.cleanroom.tooltip", "Keeping those pesky particles out"); provider.add("gtceu.machine.charcoal_pile.tooltip", "Underground fuel bakery"); - provider.add("gtceu.machine.item_bus.import.tooltip", "Item Input for Multiblocks"); + provider.add("gtceu.machine.available_recipe_map_1.tooltip", "Available Recipe Maps: %s"); + provider.add("gtceu.machine.available_recipe_map_2.tooltip", "Available Recipe Maps: %s, %s"); + provider.add("gtceu.machine.available_recipe_map_3.tooltip", "Available Recipe Maps: %s, %s, %s"); + provider.add("gtceu.machine.available_recipe_map_4.tooltip", "Available Recipe Maps: %s, %s, %s, %s"); + provider.add("gtceu.universal.disabled", "Multiblock Sharing §4Disabled"); provider.add("gtceu.universal.enabled", "Multiblock Sharing §aEnabled"); - + provider.add("gtceu.machine.item_bus.import.tooltip", "Item Input for Multiblocks"); provider.add("gtceu.machine.item_bus.export.tooltip", "Item Output for Multiblocks"); - provider.add("gtceu.bus.collapse_true", "Bus will collapse Items"); provider.add("gtceu.bus.collapse_false", "Bus will not collapse Items"); provider.add("gtceu.bus.collapse.error", "Bus must be attached to multiblock first"); @@ -814,6 +824,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.tool_action.tape", "§8Use Tape to fix Maintenance Problems"); provider.add("gtceu.fluid.generic", "%s"); provider.add("gtceu.fluid.plasma", "%s Plasma"); + provider.add("gtceu.fluid.molten", "Molten %s"); provider.add("gtceu.fluid.empty", "Empty"); provider.add("gtceu.fluid.amount", "§9Amount: %d/%d L"); provider.add("gtceu.fluid.temperature", "§cTemperature: %d K"); @@ -1074,6 +1085,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.gui.overclock.title", "Overclock Tier"); provider.add("gtceu.gui.overclock.range", "Available Tiers [%s, %s]"); + provider.add("gtceu.gui.machinemode.title", "Active Machine Mode"); + provider.add("gtceu.gui.content.chance_0", "§cNot Consumed§r"); provider.add("gtceu.gui.content.chance_0_short", "§cNC§r"); provider.add("gtceu.gui.content.chance_1", "§eChance: %s§r"); @@ -1085,6 +1098,8 @@ public static void init(RegistrateLangProvider provider) { provider.add("gtceu.gui.content.units.per_tick", "/t"); provider.add("gtceu.gui.content.units.per_second", "/s"); + + provider.add("gtceu.machine.parallel_hatch.display", "Adjust the maximum parallel of the multiblock"); } /** diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/AssemblyLineLoader.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/AssemblyLineLoader.java index 8c2bd4a6cc..4fa05e778a 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/AssemblyLineLoader.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/AssemblyLineLoader.java @@ -27,7 +27,7 @@ public static void init(Consumer provider) { .inputItems(wireGtSingle, IndiumTinBariumTitaniumCuprate, 32) .inputFluids(SolderingAlloy.getFluid(L * 8)) .inputFluids(NiobiumTitanium.getFluid(L * 8)) - .outputItems(FUSION_REACTOR[0].asStack()) + .outputItems(FUSION_REACTOR[LuV].asStack()) .duration(800).EUt(VA[LuV]).save(provider); ASSEMBLY_LINE_RECIPES.recipeBuilder("fusion_reactor_mk2") @@ -41,7 +41,7 @@ public static void init(Consumer provider) { .inputItems(wireGtSingle, UraniumRhodiumDinaquadide, 32) .inputFluids(SolderingAlloy.getFluid(L * 8)) .inputFluids(VanadiumGallium.getFluid(L * 8)) - .outputItems(FUSION_REACTOR[1].asStack()) + .outputItems(FUSION_REACTOR[ZPM].asStack()) .duration(1000).EUt(61440).save(provider); ASSEMBLY_LINE_RECIPES.recipeBuilder("fusion_reactor_mk3") @@ -55,7 +55,7 @@ public static void init(Consumer provider) { .inputItems(wireGtSingle, EnrichedNaquadahTriniumEuropiumDuranide, 32) .inputFluids(SolderingAlloy.getFluid(L * 8)) .inputFluids(YttriumBariumCuprate.getFluid(L * 8)) - .outputItems(FUSION_REACTOR[2].asStack()) + .outputItems(FUSION_REACTOR[UV].asStack()) .duration(1000).EUt(VA[ZPM]).save(provider); } diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCyMRecipes.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCyMRecipes.java new file mode 100644 index 0000000000..084a1aa303 --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/GCyMRecipes.java @@ -0,0 +1,313 @@ +package com.gregtechceu.gtceu.data.recipe.misc; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.AlloyBlastProperty; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; +import com.gregtechceu.gtceu.api.data.chemical.material.stack.UnificationEntry; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.common.data.GTBlocks; +import com.gregtechceu.gtceu.common.data.GTItems; +import com.gregtechceu.gtceu.common.data.GTMachines; +import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.data.recipe.CustomTags; +import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; +import net.minecraft.data.recipes.FinishedRecipe; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import java.util.function.Consumer; + +import static com.gregtechceu.gtceu.api.GTValues.*; +import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; +import static com.gregtechceu.gtceu.common.data.GCyMBlocks.*; +import static com.gregtechceu.gtceu.common.data.GCyMMachines.*; +import static com.gregtechceu.gtceu.common.data.GTBlocks.CASING_TEMPERED_GLASS; +import static com.gregtechceu.gtceu.common.data.GTItems.*; +import static com.gregtechceu.gtceu.common.data.GTMachines.*; +import static com.gregtechceu.gtceu.common.data.GTMaterials.*; +import static com.gregtechceu.gtceu.common.data.GTRecipeTypes.*; +import static com.gregtechceu.gtceu.data.recipe.CustomTags.*; + +public class GCyMRecipes { + + private GCyMRecipes() {} + + public static void init(Consumer provider) { + registerManualRecipes(provider); + registerMachineRecipes(provider); + } + + private static void registerManualRecipes(Consumer provider) { + registerPartsRecipes(provider); + registerMultiblockControllerRecipes(provider); + } + + private static void registerMultiblockControllerRecipes(Consumer provider) { + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_macerator", LARGE_MACERATION_TOWER.asStack(), "PCP", "BXB", "MKM", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(plate, TungstenCarbide), 'B', ELECTRIC_PISTON_IV.asStack(), 'M', ELECTRIC_MOTOR_IV.asStack(), 'X', MACERATOR[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_arc_smelter", LARGE_ARC_SMELTER.asStack(), "KDK", "CXC", "PPP", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(plate, TantalumCarbide), 'X', GTMachines.ARC_FURNACE[IV].asStack(), 'D',new UnificationEntry(dust, Graphite) ,'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_ore_washer", LARGE_CHEMICAL_BATH.asStack(), "PGP", "CXC", "MKM", 'C', CustomTags.IV_CIRCUITS, 'G',CASING_TEMPERED_GLASS.asStack() ,'P', ELECTRIC_PUMP_IV.asStack(), 'M', CONVEYOR_MODULE_IV.asStack(), 'X', ORE_WASHER[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_sifter", LARGE_SIFTING_FUNNEL.asStack(), "PCP", "EXE", "PKP", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(plate, HSLASteel), 'E', ELECTRIC_PISTON_IV.asStack(), 'X', SIFTER[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_engraver", LARGE_ENGRAVING_LASER.asStack(), "ICI", "EXE", "PKP", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(plateDouble, TantalumCarbide),'I',EMITTER_IV.asStack() ,'E', ELECTRIC_PISTON_IV.asStack(), 'X', LASER_ENGRAVER[IV].asStack(), 'K', new UnificationEntry(TagPrefix.cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_packer", LARGE_PACKER.asStack(), "RCR", "PXP", "KPK", 'C', CustomTags.EV_CIRCUITS, 'P', new UnificationEntry(plate, HSLASteel),'R',ROBOT_ARM_HV.asStack() ,'K', CONVEYOR_MODULE_HV.asStack(), 'X', PACKER[HV].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_mixer", LARGE_MIXER.asStack(), "FCF", "RXR", "MKM", 'C', CustomTags.IV_CIRCUITS, 'F', ChemicalHelper.get(pipeNormalFluid, Polybenzimidazole),'R',ChemicalHelper.get(rotor, Osmiridium) ,'M', ELECTRIC_MOTOR_IV.asStack(), 'X', MIXER[IV].asStack(), 'K', new UnificationEntry(TagPrefix.cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_centrifuge", LARGE_CENTRIFUGE.asStack(), "SFS", "CXC", "MKM", 'C', CustomTags.IV_CIRCUITS, 'F', ChemicalHelper.get(pipeHugeFluid, StainlessSteel),'S',ChemicalHelper.get(spring, MolybdenumDisilicide) ,'M', ELECTRIC_MOTOR_IV.asStack(), 'X', CENTRIFUGE[IV].asStack(), 'K', new UnificationEntry(TagPrefix.cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_assembler", LARGE_ASSEMBLER.asStack(), "RKR", "CXC", "MKM", 'C', CustomTags.IV_CIRCUITS, 'R', ROBOT_ARM_IV.asStack() ,'M', CONVEYOR_MODULE_IV.asStack(), 'X', ASSEMBLER[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_circuit_assembler", LARGE_CIRCUIT_ASSEMBLER.asStack(), "RKR", "CXC", "MKM", 'C', CustomTags.IV_CIRCUITS, 'R', ROBOT_ARM_IV.asStack() ,'M', CONVEYOR_MODULE_IV.asStack(), 'X', CIRCUIT_ASSEMBLER[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_electrolyzer", LARGE_ELECTROLYZER.asStack(), "PCP", "WXW", "PKP", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(plate, BlackSteel) ,'W', new UnificationEntry(wireGtQuadruple, Osmium), 'X', ELECTROLYZER[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_electromagnet", LARGE_ELECTROMAGNET.asStack(), "PWP", "CXC", "PKP", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(plate, BlueSteel) ,'W', new UnificationEntry(wireGtQuadruple, Osmium), 'X', ELECTROMAGNETIC_SEPARATOR[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "blast_alloy_smelter", BLAST_ALLOY_SMELTER.asStack(), "TCT", "WXW", "TCT", 'C', CustomTags.EV_CIRCUITS, 'T', new UnificationEntry(plate, TantalumCarbide) ,'W', new UnificationEntry(wireGtQuadruple, Osmium), 'X', ALLOY_SMELTER[EV].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "mega_blast_furnace", MEGA_BLAST_FURNACE.asStack(),"PCP", "FSF", "DWD", 'C', ZPM_CIRCUITS,'S', ELECTRIC_BLAST_FURNACE.asStack(), 'F', FIELD_GENERATOR_ZPM.asStack(), 'P', new UnificationEntry(spring, Naquadah), 'D', new UnificationEntry(plateDense, NaquadahAlloy), 'W', new UnificationEntry(wireGtQuadruple, RutheniumTriniumAmericiumNeutronate)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "mega_vacuum_freezer", MEGA_VACUUM_FREEZER.asStack(), "PCP", "FSF", "DWD", 'C', ZPM_CIRCUITS, 'S', VACUUM_FREEZER.asStack(), 'F', FIELD_GENERATOR_ZPM.asStack(), 'P', new UnificationEntry(pipeNormalFluid, NiobiumTitanium), 'D', new UnificationEntry(plateDense, RhodiumPlatedPalladium), 'W', new UnificationEntry(wireGtQuadruple, RutheniumTriniumAmericiumNeutronate)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_autoclave", LARGE_AUTOCLAVE.asStack(), "PCP", "PAP", "BKB", 'C', CustomTags.IV_CIRCUITS, 'A', AUTOCLAVE[IV].asStack(), 'P', new UnificationEntry(plateDouble, HSLASteel), 'B', ELECTRIC_PUMP_IV.asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_material_press", LARGE_MATERIAL_PRESS.asStack(), "PKP", "BZG", "FKH", 'Z', CustomTags.IV_CIRCUITS, 'B', BENDER[IV].asStack(), 'P', ELECTRIC_PISTON_IV.asStack(), 'G', COMPRESSOR[IV].asStack(), 'F', FORMING_PRESS[IV].asStack(), 'H', FORGE_HAMMER[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_brewer", LARGE_BREWER.asStack(), "SZS", "FBH", "EKE", 'Z', CustomTags.IV_CIRCUITS, 'S', new UnificationEntry(spring, MolybdenumDisilicide), 'F', FERMENTER[IV].asStack(), 'E', ELECTRIC_PUMP_IV.asStack(), 'B', BREWERY[IV].asStack(), 'H', FLUID_HEATER[IV].asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_cutter", LARGE_CUTTER.asStack(), "SMS", "CZL", "EKE", 'Z', CustomTags.IV_CIRCUITS, 'L', LATHE[IV].asStack(), 'E', ELECTRIC_MOTOR_IV.asStack(), 'C', CUTTER[IV].asStack(), 'M', CONVEYOR_MODULE_IV.asStack(), 'S', new UnificationEntry(toolHeadBuzzSaw, TungstenCarbide), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_distillery", LARGE_DISTILLERY.asStack(), "PZP", "EDE", "PZP", 'Z', CustomTags.IV_CIRCUITS, 'D', DISTILLATION_TOWER.asStack(), 'E', ELECTRIC_PUMP_IV.asStack(), 'P', ChemicalHelper.get(pipeLargeFluid, Iridium)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_extractor", LARGE_EXTRACTOR.asStack(), "PTP", "EZC", "BKB", 'Z', CustomTags.IV_CIRCUITS, 'B', ELECTRIC_PISTON_IV.asStack(), 'P', ELECTRIC_PUMP_IV.asStack(), 'E', EXTRACTOR[IV].asStack(), 'C', CANNER[IV].asStack(), 'T', CASING_TEMPERED_GLASS.asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_extruder", LARGE_EXTRUDER.asStack(), "PZP", "SES", "PKP", 'Z', CustomTags.IV_CIRCUITS, 'E', EXTRUDER[IV].asStack(), 'P', ELECTRIC_PISTON_IV.asStack(), 'S', new UnificationEntry(spring, MolybdenumDisilicide), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_solidifier", LARGE_SOLIDIFIER.asStack(), "PZP", "ESE", "PKP", 'Z', CustomTags.IV_CIRCUITS, 'S', FLUID_SOLIDIFIER[IV].asStack(), 'E', ELECTRIC_PUMP_IV.asStack(), 'P', ChemicalHelper.get(pipeNormalFluid, Polyethylene), 'K', new UnificationEntry(cableGtSingle, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_wiremill", LARGE_WIREMILL.asStack(), "PZP", "SWS", "MKM", 'Z', CustomTags.IV_CIRCUITS, 'W', WIREMILL[IV].asStack(), 'P', new UnificationEntry(plate, HSLASteel), 'S', new UnificationEntry(spring, HSLASteel), 'M', ELECTRIC_MOTOR_IV.asStack(), 'K', new UnificationEntry(cableGtSingle, Platinum)); + } + + private static void registerPartsRecipes(Consumer provider) { + VanillaRecipeHelper.addShapedRecipe(provider, "crushing_wheels", CRUSHING_WHEELS.asStack(2), "TTT", "UCU","UMU", 'T', new UnificationEntry(gearSmall,TungstenCarbide), 'U', ChemicalHelper.get(gear, Ultimet), 'C', CASING_SECURE_MACERATION.asStack(), 'M', ELECTRIC_MOTOR_IV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, "slicing_blades", SLICING_BLADES.asStack(2), "PPP", "UCU","UMU", 'P', new UnificationEntry(plate,TungstenCarbide), 'U', ChemicalHelper.get(gear, Ultimet), 'C', CASING_SHOCK_PROOF.asStack(), 'M', ELECTRIC_MOTOR_IV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, "electrolytic_cell", ELECTROLYTIC_CELL.asStack(2), "WWW", "WCW","ZKZ", 'W', new UnificationEntry(wireGtDouble,Platinum), 'Z', CustomTags.IV_CIRCUITS, 'C', CASING_NONCONDUCTING.asStack(), 'K', ChemicalHelper.get(cableGtSingle,Tungsten)); + VanillaRecipeHelper.addShapedRecipe(provider, "heat_vent", HEAT_VENT.asStack(2), "PDP", "RLR","PDP", 'P', new UnificationEntry(plate,TantalumCarbide), 'D', ChemicalHelper.get(plateDouble,MolybdenumDisilicide), 'R', ChemicalHelper.get(rotor,Titanium), 'L', ChemicalHelper.get(rodLong,MolybdenumDisilicide)); + VanillaRecipeHelper.addShapedRecipe(provider, "parallel_hatch_mk1", PARALLEL_HATCH[IV].asStack(1), "SZE", "ZHZ","CZC", 'S', SENSOR_IV.asStack(), 'E', EMITTER_IV.asStack(), 'Z', LuV_CIRCUITS, 'H', HULL[IV].asStack(), 'C', new UnificationEntry(cableGtDouble, Platinum)); + VanillaRecipeHelper.addShapedRecipe(provider, "parallel_hatch_mk2", PARALLEL_HATCH[LuV].asStack(1), "SZE", "ZHZ","CZC", 'S', SENSOR_LuV.asStack(), 'E', EMITTER_LuV.asStack(), 'Z', ZPM_CIRCUITS, 'H', HULL[LuV].asStack(), 'C', new UnificationEntry(cableGtDouble, NiobiumTitanium)); + VanillaRecipeHelper.addShapedRecipe(provider, "parallel_hatch_mk3", PARALLEL_HATCH[ZPM].asStack(1), "SZE", "ZHZ","CZC", 'S', SENSOR_ZPM.asStack(), 'E', EMITTER_ZPM.asStack(), 'Z', UV_CIRCUITS, 'H', HULL[ZPM].asStack(), 'C', new UnificationEntry(cableGtDouble, VanadiumGallium)); + VanillaRecipeHelper.addShapedRecipe(provider, "parallel_hatch_mk4", PARALLEL_HATCH[UV].asStack(1), "SZE", "ZHZ","CZC", 'S', SENSOR_UV.asStack(), 'E', EMITTER_UV.asStack(), 'Z', UHV_CIRCUITS, 'H', HULL[UV].asStack(), 'C', new UnificationEntry(cableGtDouble, YttriumBariumCuprate)); + } + + private static void registerMachineRecipes(Consumer provider) { + registerAssemblerRecipes(provider); + registerMixerRecipes(provider); + registerBlastAlloyRecipes(provider); + } + + private static void registerAssemblerRecipes(Consumer provider){ + ASSEMBLER_RECIPES.recipeBuilder("crushing_wheels") + .inputItems(ChemicalHelper.get(gearSmall,TungstenCarbide,2)) + .inputItems(ChemicalHelper.get(gear,Ultimet,3)) + .inputItems(CASING_SECURE_MACERATION.asStack()) + .inputItems(ELECTRIC_MOTOR_IV.asStack()) + .outputItems(CRUSHING_WHEELS.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("slicing_blades") + .inputItems(ChemicalHelper.get(plate,TungstenCarbide,2)) + .inputItems(ChemicalHelper.get(gear,Ultimet,3)) + .inputItems(CASING_SHOCK_PROOF.asStack()) + .inputItems(ELECTRIC_MOTOR_IV.asStack()) + .outputItems(SLICING_BLADES.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("electrolytic_cell") + .inputItems(ChemicalHelper.get(wireGtDouble,Platinum,4)) + .inputItems(ChemicalHelper.get(cableGtSingle,Tungsten,1)) + .inputItems(CASING_NONCONDUCTING.asStack()) + .inputItems(CustomTags.IV_CIRCUITS) + .outputItems(ELECTROLYTIC_CELL.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("mds_coil_block") + .inputItems(ChemicalHelper.get(ring,MolybdenumDisilicide,32)) + .inputItems(ChemicalHelper.get(foil,Graphene,16)) + .inputFluids(HSLASteel.getFluid(144)) + .outputItems(MOLYBDENUM_DISILICIDE_COIL_BLOCK.asStack(1)) + .duration(500).EUt(1920) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("heat_vent") + .inputItems(ChemicalHelper.get(plate,TantalumCarbide,3)) + .inputItems(ChemicalHelper.get(plateDouble,MolybdenumDisilicide,2)) + .inputItems(ChemicalHelper.get(rotor,Titanium,1)) + .inputItems(ChemicalHelper.get(rodLong,MolybdenumDisilicide,1)) + .outputItems(HEAT_VENT.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_hsla_nonconducting") + .inputItems(plate, HSLASteel, 6).inputItems(frameGt, HSLASteel).circuitMeta(6) + .outputItems(CASING_NONCONDUCTING.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_incoloy_vibration_safe") + .inputItems(plate, IncoloyMA956, 6).inputItems(frameGt, IncoloyMA956).circuitMeta(6) + .outputItems(CASING_VIBRATION_SAFE.asStack(2)) + .EUt(16).duration(50) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_watertight") + .inputItems(plate, WatertightSteel, 6).inputItems(frameGt, WatertightSteel).circuitMeta(6) + .outputItems(CASING_WATERTIGHT.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_secure_maceration") + .inputItems(plate, Zeron100, 6).inputItems(frameGt, Titanium).circuitMeta(6) + .outputItems(CASING_SECURE_MACERATION.asStack(2)) + .EUt(16).duration(50) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_high_temperature_smelting") + .inputItems(plate, TitaniumCarbide, 4).inputItems(plate, HSLASteel, 2).inputItems(frameGt, TungstenCarbide).circuitMeta(6) + .outputItems(CASING_HIGH_TEMPERATURE_SMELTING.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_laser_safe_engraving") + .inputItems(plate, TitaniumTungstenCarbide, 6).inputItems(frameGt, Titanium).circuitMeta(6) + .outputItems(CASING_LASER_SAFE_ENGRAVING.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_large_scale_assembling") + .inputItems(plate, Stellite100, 6).inputItems(frameGt, Tungsten).circuitMeta(6) + .outputItems(CASING_LARGE_SCALE_ASSEMBLING.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_shock_proof") + .inputItems(plate, HastelloyC276, 6).inputItems(frameGt, HastelloyC276).circuitMeta(6) + .outputItems(CASING_SHOCK_PROOF.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_corrosion_proof") + .inputItems(plate, CobaltBrass, 6).inputItems(frameGt, HSLASteel).circuitMeta(6) + .outputItems(CASING_CORROSION_PROOF.asStack(2)) + .duration(50).EUt(16) + .save(provider); + + ASSEMBLER_RECIPES.recipeBuilder("casing_stress_proof") + .inputItems(plate, MaragingSteel300, 6).inputItems(frameGt, StainlessSteel).circuitMeta(6) + .outputItems(CASING_STRESS_PROOF.asStack(2)) + .duration(50).EUt(16) + .save(provider); + } + + private static void registerMixerRecipes(Consumer provider){ + MIXER_RECIPES.recipeBuilder("tantalum_carbide") + .inputItems(dust, Tantalum) + .inputItems(dust, Carbon) + .outputItems(dust, TantalumCarbide, 2) + .duration(150).EUt(VA[IV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("hsla_steel") + .inputItems(dust, Invar, 2) + .inputItems(dust, Vanadium) + .inputItems(dust, Titanium) + .inputItems(dust, Molybdenum) + .outputItems(dust, HSLASteel, 5) + .duration(140).EUt(VA[HV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("incoloy_ma_956") + .inputItems(dust, VanadiumSteel, 4) + .inputItems(dust, Manganese, 2) + .inputItems(dust, Aluminium, 5) + .inputItems(dust, Yttrium, 2) + .outputItems(dust, IncoloyMA956, 13) + .duration(200).EUt(VA[IV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("watertight_steel") + .inputItems(dust, Iron, 7) + .inputItems(dust, Aluminium, 4) + .inputItems(dust, Nickel, 2) + .inputItems(dust, Chromium) + .inputItems(dust, Sulfur) + .outputItems(dust, HSLASteel, 15) + .duration(220).EUt(VA[IV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("molybdenum_disilicide") + .inputItems(dust, Molybdenum) + .inputItems(dust, Silicon, 2) + .outputItems(dust, MolybdenumDisilicide, 3) + .duration(180).EUt(VA[EV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("hastelloy_x") + .inputItems(dust, Nickel, 8) + .inputItems(dust, Iron, 3) + .inputItems(dust, Tungsten, 4) + .inputItems(dust, Molybdenum, 2) + .inputItems(dust, Chromium) + .inputItems(dust, Niobium) + .outputItems(dust, HastelloyX, 19) + .duration(210).EUt(VA[IV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("maraging_steel_300") + .inputItems(dust, Iron, 16) + .inputItems(dust, Titanium) + .inputItems(dust, Aluminium) + .inputItems(dust, Nickel, 4) + .inputItems(dust, Cobalt, 2) + .outputItems(dust, MaragingSteel300, 24) + .duration(230).EUt(VA[IV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("stellite_100") + .inputItems(dust, Iron, 4) + .inputItems(dust, Chromium, 3) + .inputItems(dust, Tungsten, 2) + .inputItems(dust, Molybdenum) + .outputItems(dust, Stellite100, 10) + .duration(200).EUt(VA[IV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("titanium_carbide") + .inputItems(dust, Titanium) + .inputItems(dust, Carbon) + .outputItems(dust, TitaniumCarbide, 2) + .duration(160).EUt(VA[EV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("titanium_tungsten_carbide") + .inputItems(dust, TungstenCarbide) + .inputItems(dust, TitaniumCarbide, 2) + .outputItems(dust, TitaniumTungstenCarbide, 3) + .duration(180).EUt(VA[IV]) + .save(provider); + + MIXER_RECIPES.recipeBuilder("hastelloy_c_276") + .inputItems(dust, Nickel, 12) + .inputItems(dust, Molybdenum, 8) + .inputItems(dust, Chromium, 7) + .inputItems(dust, Tungsten, 1) + .inputItems(dust, Cobalt, 1) + .inputItems(dust, Copper, 1) + .outputItems(dust, HastelloyC276, 30) + .duration(240).EUt(VA[IV]) + .save(provider); + } + + private static void registerBlastAlloyRecipes(Consumer provider) { + ingot.executeHandler(PropertyKey.ALLOY_BLAST, (tagPrefix, material, property) -> generateAlloyBlastRecipes(tagPrefix, material, property, provider)); + } + + /** + * Generates alloy blast recipes for a material + * + * @param material the material to generate for + * @param property the blast property of the material + */ + public static void generateAlloyBlastRecipes(@Nullable TagPrefix unused, @Nonnull Material material, + @Nonnull AlloyBlastProperty property, + @Nonnull Consumer provider) { + if (material.hasProperty(PropertyKey.BLAST)) { + property.getRecipeProducer().produce(material, material.getProperty(PropertyKey.BLAST), provider); + } + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java index d8f284223a..99ccc4e82c 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MachineRecipeLoader.java @@ -1,15 +1,20 @@ package com.gregtechceu.gtceu.data.recipe.misc; +import com.google.common.collect.ImmutableList; import com.gregtechceu.gtceu.api.GTValues; import com.gregtechceu.gtceu.api.data.chemical.ChemicalHelper; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; import com.gregtechceu.gtceu.api.machine.multiblock.CleanroomType; +import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMachines; +import com.gregtechceu.gtceu.common.data.GTMaterials; import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; +import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; +import com.lowdragmc.lowdraglib.side.fluid.FluidHelper; import com.lowdragmc.lowdraglib.side.fluid.FluidStack; import com.tterrag.registrate.util.entry.ItemEntry; import net.minecraft.data.recipes.FinishedRecipe; @@ -18,11 +23,17 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; +import org.apache.logging.log4j.LogManager; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.function.Consumer; +import java.util.logging.Logger; +import static com.gregtechceu.gtceu.GTCEu.LOGGER; import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.api.data.tag.TagPrefix.*; +import static com.gregtechceu.gtceu.common.data.GCyMBlocks.*; import static com.gregtechceu.gtceu.common.data.GTItems.*; import static com.gregtechceu.gtceu.common.data.GTMachines.*; import static com.gregtechceu.gtceu.common.data.GTMaterials.*; @@ -645,7 +656,7 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(ELECTRIC_PUMP_MV, 4) .inputItems(gear, VanadiumSteel, 4) .circuitMeta(2) - .outputItems(FLUID_DRILLING_RIG[0]) + .outputItems(FLUID_DRILLING_RIG[MV]) .duration(400).EUt(VA[MV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("fluid_drill_ev") @@ -656,7 +667,7 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(ELECTRIC_PUMP_EV, 4) .inputItems(gear, TungstenCarbide, 4) .circuitMeta(2) - .outputItems(FLUID_DRILLING_RIG[1]) + .outputItems(FLUID_DRILLING_RIG[HV]) .duration(400).EUt(VA[EV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("fluid_drill_luv") @@ -667,7 +678,7 @@ private static void registerAssemblerRecipes(Consumer provider) .inputItems(ELECTRIC_PUMP_LuV, 4) .inputItems(gear, Osmiridium, 4) .circuitMeta(2) - .outputItems(FLUID_DRILLING_RIG[2]) + .outputItems(FLUID_DRILLING_RIG[EV]) .duration(400).EUt(VA[LuV]).save(provider); } diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java index 6f40bd63d5..d778793957 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityLoader.java @@ -25,6 +25,7 @@ import java.util.Arrays; import java.util.function.Consumer; +import static com.gregtechceu.gtceu.api.GTValues.*; import static com.gregtechceu.gtceu.data.recipe.CraftingComponent.*; public class MetaTileEntityLoader { @@ -129,23 +130,23 @@ public static void init(Consumer provider) { //VanillaRecipeHelper.addShapedRecipe(provider, true, "fluid_export_hatch_4x", GTMachines.MULTI_FLUID_EXPORT_HATCH[0].getStackForm(), "M", "P", 'M', GTMachines.HULL[GTValues.HV].getStackForm(), 'P', new UnificationEntry(TagPrefix.pipeQuadrupleFluid, GTMaterials.Titanium)); //VanillaRecipeHelper.addShapedRecipe(provider, true, "fluid_export_hatch_9x", GTMachines.MULTI_FLUID_EXPORT_HATCH[1].getStackForm(), "M", "P", 'M', GTMachines.HULL[GTValues.IV].getStackForm(), 'P', new UnificationEntry(TagPrefix.pipeNonupleFluid, GTMaterials.TungstenSteel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_hv", GTMachines.ROTOR_HOLDER[0].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.HV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.BlackSteel), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.StainlessSteel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_ev", GTMachines.ROTOR_HOLDER[1].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.EV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Ultimet), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.Titanium)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_iv", GTMachines.ROTOR_HOLDER[2].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.IV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.HSSG), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.TungstenSteel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_luv", GTMachines.ROTOR_HOLDER[3].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.LuV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Ruthenium), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.RhodiumPlatedPalladium)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_zpm", GTMachines.ROTOR_HOLDER[4].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.ZPM].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Trinium), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.NaquadahAlloy)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_uv", GTMachines.ROTOR_HOLDER[5].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.UV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Tritanium), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.Darmstadtium)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_hv", GTMachines.ROTOR_HOLDER[HV].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[HV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.BlackSteel), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.StainlessSteel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_ev", GTMachines.ROTOR_HOLDER[EV].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.EV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Ultimet), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.Titanium)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_iv", GTMachines.ROTOR_HOLDER[IV].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.IV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.HSSG), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.TungstenSteel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_luv", GTMachines.ROTOR_HOLDER[LuV].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.LuV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Ruthenium), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.RhodiumPlatedPalladium)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_zpm", GTMachines.ROTOR_HOLDER[ZPM].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.ZPM].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Trinium), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.NaquadahAlloy)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "rotor_holder_uv", GTMachines.ROTOR_HOLDER[UV].asStack(), "SGS", "GHG", "SGS", 'H', GTMachines.HULL[GTValues.UV].asStack(), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Tritanium), 'S', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.Darmstadtium)); VanillaRecipeHelper.addShapedRecipe(provider, true, "maintenance_hatch", GTMachines.MAINTENANCE_HATCH.asStack(), "dwx", "hHc", "fsr", 'H', GTMachines.HULL[GTValues.LV].asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "maintenance_hatch_configurable", GTMachines.CONFIGURABLE_MAINTENANCE_HATCH.asStack(), " ", "CMC", "VHV", 'C', CIRCUIT.getIngredient(GTValues.HV), 'M', GTMachines.MAINTENANCE_HATCH.asStack(), 'V', CONVEYOR.getIngredient(GTValues.HV), 'H', GTMachines.HULL[GTValues.HV].asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "maintenance_hatch_automatic", GTMachines.AUTO_MAINTENANCE_HATCH.asStack(), "CMC", "RHR", "CMC", 'C', CIRCUIT.getIngredient(GTValues.HV), 'M', GTMachines.MAINTENANCE_HATCH.asStack(), 'R', ROBOT_ARM.getIngredient(GTValues.HV), 'H', GTMachines.HULL[GTValues.HV].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "maintenance_hatch_configurable", GTMachines.CONFIGURABLE_MAINTENANCE_HATCH.asStack(), " ", "CMC", "VHV", 'C', CIRCUIT.getIngredient(HV), 'M', GTMachines.MAINTENANCE_HATCH.asStack(), 'V', CONVEYOR.getIngredient(HV), 'H', GTMachines.HULL[HV].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "maintenance_hatch_automatic", GTMachines.AUTO_MAINTENANCE_HATCH.asStack(), "CMC", "RHR", "CMC", 'C', CIRCUIT.getIngredient(HV), 'M', GTMachines.MAINTENANCE_HATCH.asStack(), 'R', ROBOT_ARM.getIngredient(HV), 'H', GTMachines.HULL[HV].asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "maintenance_hatch_cleaning", GTMachines.CLEANING_MAINTENANCE_HATCH.asStack(), "CMC", "RHR", "WCW", 'C', CIRCUIT.getIngredient(GTValues.UV), 'M', GTMachines.AUTO_MAINTENANCE_HATCH.asStack(), 'R', ROBOT_ARM.getIngredient(GTValues.UV), 'H', GTMachines.HULL[GTValues.UV].asStack(), 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.YttriumBariumCuprate)); // TODO Access Interface //VanillaRecipeHelper.addShapedRecipe(provider, true, "machine_access_interface", GTMachines.MACHINE_HATCH.getStackForm(), "CHS", 'C', CustomTags.IV), 'H', GTMachines.HULL[GTValues.IV].getStackForm(), 'S', MetaItems.SENSOR_IV.getStackForm()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "passthrough_hatch_item", GTMachines.ITEM_PASSTHROUGH_HATCH[GTValues.HV].asStack(), " C ", "GHG", " S ", 'C', GTItems.CONVEYOR_MODULE_HV.asStack(), 'G', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.Steel), 'H', GTMachines.HULL[GTValues.HV].asStack(), 'S', CustomTags.TAG_WOODEN_CHESTS); - VanillaRecipeHelper.addShapedRecipe(provider, true, "passthrough_hatch_fluid", GTMachines.FLUID_PASSTHROUGH_HATCH[GTValues.HV].asStack(), " C ", "GHG", " S ", 'C', GTItems.ELECTRIC_PUMP_HV.asStack(), 'G', new UnificationEntry(TagPrefix.pipeSmallFluid, GTMaterials.Steel), 'H', GTMachines.HULL[GTValues.HV].asStack(), 'S', GTBlocks.CASING_TEMPERED_GLASS); + VanillaRecipeHelper.addShapedRecipe(provider, true, "passthrough_hatch_item", GTMachines.ITEM_PASSTHROUGH_HATCH[HV].asStack(), " C ", "GHG", " S ", 'C', GTItems.CONVEYOR_MODULE_HV.asStack(), 'G', new UnificationEntry(TagPrefix.gearSmall, GTMaterials.Steel), 'H', GTMachines.HULL[HV].asStack(), 'S', CustomTags.TAG_WOODEN_CHESTS); + VanillaRecipeHelper.addShapedRecipe(provider, true, "passthrough_hatch_fluid", GTMachines.FLUID_PASSTHROUGH_HATCH[HV].asStack(), " C ", "GHG", " S ", 'C', GTItems.ELECTRIC_PUMP_HV.asStack(), 'G', new UnificationEntry(TagPrefix.pipeSmallFluid, GTMaterials.Steel), 'H', GTMachines.HULL[HV].asStack(), 'S', GTBlocks.CASING_TEMPERED_GLASS); // TODO Charcoal pile igniter //VanillaRecipeHelper.addShapedRecipe(provider, true, "charcoal_pile_igniter", GTMachines.CHARCOAL_PILE_IGNITER.getStackForm(), "ERE", "EHE", "FFF", 'E', new UnificationEntry(TagPrefix.plate, GTMaterials.Bronze), 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Iron), 'H', MetaBlocks.STEAM_CASING.getItemVariant(BRONZE_BRICKS_HULL), 'F', new ItemStack(Items.FLINT)); @@ -188,8 +189,8 @@ public static void init(Consumer provider) { VanillaRecipeHelper.addShapedRecipe(provider, true, "electric_blast_furnace", GTMachines.ELECTRIC_BLAST_FURNACE.asStack(), "FFF", "CMC", "WCW", 'M', GTBlocks.CASING_INVAR_HEATPROOF.asStack(), 'F', Blocks.FURNACE.asItem(), 'C', CustomTags.LV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Tin)); VanillaRecipeHelper.addShapedRecipe(provider, true, "vacuum_freezer", GTMachines.VACUUM_FREEZER.asStack(), "PPP", "CMC", "WCW", 'M', GTBlocks.CASING_ALUMINIUM_FROSTPROOF.asStack(), 'P', GTItems.ELECTRIC_PUMP_HV, 'C', CustomTags.EV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Gold)); VanillaRecipeHelper.addShapedRecipe(provider, true, "implosion_compressor", GTMachines.IMPLOSION_COMPRESSOR.asStack(), "OOO", "CMC", "WCW", 'M', GTBlocks.CASING_STEEL_SOLID.asStack(), 'O', new UnificationEntry(TagPrefix.block, GTMaterials.Obsidian), 'C', CustomTags.HV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Gold)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "distillation_tower", GTMachines.DISTILLATION_TOWER.asStack(), "CBC", "FMF", "CBC", 'M', GTMachines.HULL[GTValues.HV].asStack(), 'B', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.StainlessSteel), 'C', CustomTags.EV_CIRCUITS, 'F', GTItems.ELECTRIC_PUMP_HV); - VanillaRecipeHelper.addShapedRecipe(provider, true, "cracking_unit", GTMachines.CRACKER.asStack(), "CEC", "PHP", "CEC", 'C', GTBlocks.COIL_CUPRONICKEL.asStack(), 'E', GTItems.ELECTRIC_PUMP_HV.asStack(), 'P', CustomTags.HV_CIRCUITS, 'H', GTMachines.HULL[GTValues.HV].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "distillation_tower", GTMachines.DISTILLATION_TOWER.asStack(), "CBC", "FMF", "CBC", 'M', GTMachines.HULL[HV].asStack(), 'B', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.StainlessSteel), 'C', CustomTags.EV_CIRCUITS, 'F', GTItems.ELECTRIC_PUMP_HV); + VanillaRecipeHelper.addShapedRecipe(provider, true, "cracking_unit", GTMachines.CRACKER.asStack(), "CEC", "PHP", "CEC", 'C', GTBlocks.COIL_CUPRONICKEL.asStack(), 'E', GTItems.ELECTRIC_PUMP_HV.asStack(), 'P', CustomTags.HV_CIRCUITS, 'H', GTMachines.HULL[HV].asStack()); VanillaRecipeHelper.addShapedRecipe(provider, true, "pyrolyse_oven", GTMachines.PYROLYSE_OVEN.asStack(), "WEP", "EME", "WCP", 'M', GTMachines.HULL[GTValues.MV].asStack(), 'W', GTItems.ELECTRIC_PISTON_MV.asStack(), 'P', new UnificationEntry(TagPrefix.wireGtQuadruple, GTMaterials.Cupronickel), 'E', CustomTags.MV_CIRCUITS, 'C', GTItems.ELECTRIC_PUMP_MV); VanillaRecipeHelper.addShapedRecipe(provider, true, "large_combustion_engine", GTMachines.LARGE_COMBUSTION_ENGINE.asStack(), "PCP", "EME", "GWG", 'M', GTMachines.HULL[GTValues.EV].asStack(), 'P', GTItems.ELECTRIC_PISTON_EV.asStack(), 'E', GTItems.ELECTRIC_MOTOR_EV.asStack(), 'C', CustomTags.IV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Aluminium), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Titanium)); @@ -198,7 +199,7 @@ public static void init(Consumer provider) { VanillaRecipeHelper.addShapedRecipe(provider, true, "extreme_engine_intake_casing", GTBlocks.CASING_EXTREME_ENGINE_INTAKE.asStack(2), "PhP", "RFR", "PwP", 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.TungstenSteel), 'F',GTBlocks.CASING_TUNGSTENSTEEL_ROBUST.asStack(), 'P', new UnificationEntry(TagPrefix.pipeNormalFluid, GTMaterials.TungstenSteel)); VanillaRecipeHelper.addShapedRecipe(provider, true, "multi_furnace", GTMachines.MULTI_SMELTER.asStack(), "PPP", "ASA", "CAC", 'P', Blocks.FURNACE, 'A', CustomTags.HV_CIRCUITS, 'S', GTBlocks.CASING_INVAR_HEATPROOF.asStack(), 'C', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Copper)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "large_steam_turbine", GTMachines.LARGE_STEAM_TURBINE.asStack(), "PSP", "SAS", "CSC", 'S', new UnificationEntry(TagPrefix.gear, GTMaterials.Steel), 'P', CustomTags.HV_CIRCUITS, 'A', GTMachines.HULL[GTValues.HV].asStack(), 'C', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.Steel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_steam_turbine", GTMachines.LARGE_STEAM_TURBINE.asStack(), "PSP", "SAS", "CSC", 'S', new UnificationEntry(TagPrefix.gear, GTMaterials.Steel), 'P', CustomTags.HV_CIRCUITS, 'A', GTMachines.HULL[HV].asStack(), 'C', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.Steel)); VanillaRecipeHelper.addShapedRecipe(provider, true, "large_gas_turbine", GTMachines.LARGE_GAS_TURBINE.asStack(), "PSP", "SAS", "CSC", 'S', new UnificationEntry(TagPrefix.gear, GTMaterials.StainlessSteel), 'P', CustomTags.EV_CIRCUITS, 'A', GTMachines.HULL[GTValues.EV].asStack(), 'C', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.StainlessSteel)); VanillaRecipeHelper.addShapedRecipe(provider, true, "large_plasma_turbine", GTMachines.LARGE_PLASMA_TURBINE.asStack(), "PSP", "SAS", "CSC", 'S', new UnificationEntry(TagPrefix.gear, GTMaterials.TungstenSteel), 'P', CustomTags.LuV_CIRCUITS, 'A', GTMachines.HULL[GTValues.LuV].asStack(), 'C', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.TungstenSteel)); @@ -209,25 +210,25 @@ public static void init(Consumer provider) { VanillaRecipeHelper.addShapedRecipe(provider, true, "assembly_line", GTMachines.ASSEMBLY_LINE.asStack(), "CRC", "SAS", "CRC", 'A', GTMachines.HULL[GTValues.IV].asStack(), 'R', GTItems.ROBOT_ARM_IV, 'C', GTBlocks.CASING_ASSEMBLY_CONTROL.asStack(), 'S', CustomTags.IV_CIRCUITS); - VanillaRecipeHelper.addShapedRecipe(provider, true, "large_chemical_reactor", GTMachines.LARGE_CHEMICAL_REACTOR.asStack(), "CRC", "PMP", "CHC", 'C', CustomTags.HV_CIRCUITS, 'R', ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel), 'P', ChemicalHelper.get(TagPrefix.pipeLargeFluid, GTMaterials.Polytetrafluoroethylene), 'M', GTItems.ELECTRIC_MOTOR_HV.asStack(), 'H', GTMachines.HULL[GTValues.HV].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "large_chemical_reactor", GTMachines.LARGE_CHEMICAL_REACTOR.asStack(), "CRC", "PMP", "CHC", 'C', CustomTags.HV_CIRCUITS, 'R', ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel), 'P', ChemicalHelper.get(TagPrefix.pipeLargeFluid, GTMaterials.Polytetrafluoroethylene), 'M', GTItems.ELECTRIC_MOTOR_HV.asStack(), 'H', GTMachines.HULL[HV].asStack()); if (ConfigHolder.INSTANCE.machines.doProcessingArray) { - VanillaRecipeHelper.addShapedRecipe(provider, true, "processing_array", GTMachines.PROCESSING_ARRAY[0].asStack(), "COC", "RHR", "CPC", 'C', CustomTags.IV_CIRCUITS, 'O', GTItems.TOOL_DATA_ORB.asStack(), 'R', GTItems.ROBOT_ARM_EV.asStack(), 'P', GTBlocks.FLUID_PIPE_BLOCKS.get(TagPrefix.pipeLargeFluid, GTMaterials.StainlessSteel), 'H', GTMachines.HULL[GTValues.EV].asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "advanced_processing_array", GTMachines.PROCESSING_ARRAY[1].asStack(), "RCR", "SPE", "HNH", 'R', GTItems.ROBOT_ARM_LuV.asStack(), 'C', CustomTags.ZPM_CIRCUITS, 'S', GTItems.SENSOR_LuV, 'P', GTMachines.PROCESSING_ARRAY[0].asStack(), 'E', GTItems.EMITTER_LuV.asStack(), 'H', new UnificationEntry(TagPrefix.plate, GTMaterials.HSSE), 'N', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.Naquadah)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "processing_array", GTMachines.PROCESSING_ARRAY[GTValues.IV].asStack(), "COC", "RHR", "CPC", 'C', CustomTags.IV_CIRCUITS, 'O', GTItems.TOOL_DATA_ORB.asStack(), 'R', GTItems.ROBOT_ARM_EV.asStack(), 'P', GTBlocks.FLUID_PIPE_BLOCKS.get(TagPrefix.pipeLargeFluid, GTMaterials.StainlessSteel), 'H', GTMachines.HULL[GTValues.EV].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "advanced_processing_array", GTMachines.PROCESSING_ARRAY[GTValues.LuV].asStack(), "RCR", "SPE", "HNH", 'R', GTItems.ROBOT_ARM_LuV.asStack(), 'C', CustomTags.ZPM_CIRCUITS, 'S', GTItems.SENSOR_LuV, 'P', GTMachines.PROCESSING_ARRAY[IV].asStack(), 'E', GTItems.EMITTER_LuV.asStack(), 'H', new UnificationEntry(TagPrefix.plate, GTMaterials.HSSE), 'N', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.Naquadah)); } // GENERATORS - VanillaRecipeHelper.addShapedRecipe(provider, true, "diesel_generator_lv", GTMachines.COMBUSTION[0].asStack(), "PCP", "EME", "GWG", 'M', GTMachines.HULL[GTValues.LV].asStack(), 'P', GTItems.ELECTRIC_PISTON_LV, 'E', GTItems.ELECTRIC_MOTOR_LV, 'C', CustomTags.LV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Tin), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Steel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "diesel_generator_mv", GTMachines.COMBUSTION[1].asStack(), "PCP", "EME", "GWG", 'M', GTMachines.HULL[GTValues.MV].asStack(), 'P', GTItems.ELECTRIC_PISTON_MV, 'E', GTItems.ELECTRIC_MOTOR_MV, 'C', CustomTags.MV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Copper), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Aluminium)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "diesel_generator_hv", GTMachines.COMBUSTION[2].asStack(), "PCP", "EME", "GWG", 'M', GTMachines.HULL[GTValues.HV].asStack(), 'P', GTItems.ELECTRIC_PISTON_HV, 'E', GTItems.ELECTRIC_MOTOR_HV, 'C', CustomTags.HV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Gold), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.StainlessSteel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "diesel_generator_lv", GTMachines.COMBUSTION[LV].asStack(), "PCP", "EME", "GWG", 'M', GTMachines.HULL[GTValues.LV].asStack(), 'P', GTItems.ELECTRIC_PISTON_LV, 'E', GTItems.ELECTRIC_MOTOR_LV, 'C', CustomTags.LV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Tin), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Steel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "diesel_generator_mv", GTMachines.COMBUSTION[MV].asStack(), "PCP", "EME", "GWG", 'M', GTMachines.HULL[GTValues.MV].asStack(), 'P', GTItems.ELECTRIC_PISTON_MV, 'E', GTItems.ELECTRIC_MOTOR_MV, 'C', CustomTags.MV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Copper), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.Aluminium)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "diesel_generator_hv", GTMachines.COMBUSTION[HV].asStack(), "PCP", "EME", "GWG", 'M', GTMachines.HULL[HV].asStack(), 'P', GTItems.ELECTRIC_PISTON_HV, 'E', GTItems.ELECTRIC_MOTOR_HV, 'C', CustomTags.HV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Gold), 'G', new UnificationEntry(TagPrefix.gear, GTMaterials.StainlessSteel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "gas_turbine_lv", GTMachines.GAS_TURBINE[0].asStack(), "CRC", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.LV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_LV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Tin), 'C', CustomTags.LV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Tin)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "gas_turbine_mv", GTMachines.GAS_TURBINE[1].asStack(), "CRC", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.MV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_MV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Bronze), 'C', CustomTags.MV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Copper)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "gas_turbine_hv", GTMachines.GAS_TURBINE[2].asStack(), "CRC", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.HV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_HV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Steel), 'C', CustomTags.HV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Gold)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "gas_turbine_lv", GTMachines.GAS_TURBINE[LV].asStack(), "CRC", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.LV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_LV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Tin), 'C', CustomTags.LV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Tin)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "gas_turbine_mv", GTMachines.GAS_TURBINE[MV].asStack(), "CRC", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.MV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_MV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Bronze), 'C', CustomTags.MV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Copper)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "gas_turbine_hv", GTMachines.GAS_TURBINE[HV].asStack(), "CRC", "RMR", "EWE", 'M', GTMachines.HULL[HV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_HV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Steel), 'C', CustomTags.HV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Gold)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_turbine_lv", GTMachines.STEAM_TURBINE[0].asStack(), "PCP", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.LV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_LV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Tin), 'C', CustomTags.LV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Tin), 'P', new UnificationEntry(TagPrefix.pipeNormalFluid, GTMaterials.Bronze)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_turbine_mv", GTMachines.STEAM_TURBINE[1].asStack(), "PCP", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.MV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_MV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Bronze), 'C', CustomTags.MV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Copper), 'P', new UnificationEntry(TagPrefix.pipeNormalFluid, GTMaterials.Steel)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_turbine_hv", GTMachines.STEAM_TURBINE[2].asStack(), "PCP", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.HV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_HV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Steel), 'C', CustomTags.HV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Gold), 'P', new UnificationEntry(TagPrefix.pipeNormalFluid, GTMaterials.StainlessSteel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_turbine_lv", GTMachines.STEAM_TURBINE[LV].asStack(), "PCP", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.LV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_LV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Tin), 'C', CustomTags.LV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Tin), 'P', new UnificationEntry(TagPrefix.pipeNormalFluid, GTMaterials.Bronze)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_turbine_mv", GTMachines.STEAM_TURBINE[MV].asStack(), "PCP", "RMR", "EWE", 'M', GTMachines.HULL[GTValues.MV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_MV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Bronze), 'C', CustomTags.MV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Copper), 'P', new UnificationEntry(TagPrefix.pipeNormalFluid, GTMaterials.Steel)); + VanillaRecipeHelper.addShapedRecipe(provider, true, "steam_turbine_hv", GTMachines.STEAM_TURBINE[HV].asStack(), "PCP", "RMR", "EWE", 'M', GTMachines.HULL[HV].asStack(), 'E', GTItems.ELECTRIC_MOTOR_HV, 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.Steel), 'C', CustomTags.HV_CIRCUITS, 'W', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.Gold), 'P', new UnificationEntry(TagPrefix.pipeNormalFluid, GTMaterials.StainlessSteel)); // TODO Crafting station //VanillaRecipeHelper.addShapedRecipe(provider, true, "workbench_bronze", GTMachines.WORKBENCH.getStackForm(), "CSC", "PWP", "PsP", 'C', OreDictNames.chestWood, 'W', new ItemStack(Blocks.CRAFTING_TABLE), 'S', OreDictUnifier.get("slabWood"), 'P', new UnificationEntry(TagPrefix.plank, GTMaterials.Wood)); @@ -295,8 +296,8 @@ public static void init(Consumer provider) { registerMachineRecipe(provider, GTMachines.MUFFLER_HATCH, "HM", "PR", 'H', HULL, 'M', MOTOR, 'P', PIPE_NORMAL, 'R', ROTOR); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.DIODE, GTValues.ULV, GTValues.HV), "CDC", "DHD", "PDP", 'H', HULL, 'D', GTItems.DIODE, 'P', PLATE, 'C', CABLE_QUAD); - registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.DIODE, GTValues.HV, GTValues.LuV), "CDC", "DHD", "PDP", 'H', HULL, 'D', GTItems.SMD_DIODE, 'P', PLATE, 'C', CABLE_QUAD); + registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.DIODE, GTValues.ULV, HV), "CDC", "DHD", "PDP", 'H', HULL, 'D', GTItems.DIODE, 'P', PLATE, 'C', CABLE_QUAD); + registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.DIODE, HV, GTValues.LuV), "CDC", "DHD", "PDP", 'H', HULL, 'D', GTItems.SMD_DIODE, 'P', PLATE, 'C', CABLE_QUAD); registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.DIODE, GTValues.LuV, GTMachines.DIODE.length), "CDC", "DHD", "PDP", 'H', HULL, 'D', GTItems.ADVANCED_SMD_DIODE, 'P', PLATE, 'C', CABLE_QUAD); registerMachineRecipe(provider, ArrayUtils.subarray(GTMachines.TRANSFORMER, GTValues.ULV, GTValues.MV), " CC", "TH ", " CC", 'C', CABLE, 'T', CABLE_TIER_UP, 'H', HULL); @@ -337,6 +338,8 @@ public static void init(Consumer provider) { // Hermetic Casings VanillaRecipeHelper.addShapedRecipe(provider, true, "hermetic_casing_lv", GTBlocks.HERMETIC_CASING_LV.asStack(), "PPP", "PFP", "PPP", 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Steel), 'F', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.Polyethylene)); + // TODO enable once item pipes exist + //VanillaRecipeHelper.addShapedRecipe(provider, true, "hermetic_casing_mv", GTBlocks.HERMETIC_CASING_MV.asStack(), "PPP", "PFP", "PPP", 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Aluminium), 'F', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.PolyvinylChloride)); VanillaRecipeHelper.addShapedRecipe(provider, true, "hermetic_casing_hv", GTBlocks.HERMETIC_CASING_HV.asStack(), "PPP", "PFP", "PPP", 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.StainlessSteel), 'F', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.Polytetrafluoroethylene)); VanillaRecipeHelper.addShapedRecipe(provider, true, "hermetic_casing_ev", GTBlocks.HERMETIC_CASING_EV.asStack(), "PPP", "PFP", "PPP", 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Titanium), 'F', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.StainlessSteel)); VanillaRecipeHelper.addShapedRecipe(provider, true, "hermetic_casing_iv", GTBlocks.HERMETIC_CASING_IV.asStack(), "PPP", "PFP", "PPP", 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.TungstenSteel), 'F', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.Titanium)); @@ -346,35 +349,35 @@ public static void init(Consumer provider) { VanillaRecipeHelper.addShapedRecipe(provider, true, "hermetic_casing_max", GTBlocks.HERMETIC_CASING_UHV.asStack(), "PPP", "PFP", "PPP", 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Neutronium), 'F', new UnificationEntry(TagPrefix.pipeLargeFluid, GTMaterials.Duranium)); // Super / Quantum Chests - VanillaRecipeHelper.addShapedRecipe(provider, true, "super_chest_lv", GTMachines.SUPER_CHEST[0].asStack(), "CPC", "PFP", "CPC", 'C', CustomTags.LV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Steel), 'F', GTMachines.STEEL_CRATE.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "super_chest_mv", GTMachines.SUPER_CHEST[1].asStack(), "CPC", "PFP", "CPC", 'C', CustomTags.MV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Aluminium), 'F', GTMachines.ALUMINIUM_CRATE.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "super_chest_hv", GTMachines.SUPER_CHEST[2].asStack(), "CPC", "PFP", "CGC", 'C', CustomTags.HV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.StainlessSteel), 'F', GTMachines.STAINLESS_STEEL_CRATE.asStack(), 'G', GTItems.FIELD_GENERATOR_LV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "super_chest_ev", GTMachines.SUPER_CHEST[3].asStack(), "CPC", "PFP", "CGC", 'C', CustomTags.EV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Titanium), 'F', GTMachines.TITANIUM_CRATE.asStack(), 'G', GTItems.FIELD_GENERATOR_MV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "super_chest_lv", GTMachines.SUPER_CHEST[LV].asStack(), "CPC", "PFP", "CPC", 'C', CustomTags.LV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Steel), 'F', GTMachines.STEEL_CRATE.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "super_chest_mv", GTMachines.SUPER_CHEST[MV].asStack(), "CPC", "PFP", "CPC", 'C', CustomTags.MV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Aluminium), 'F', GTMachines.ALUMINIUM_CRATE.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "super_chest_hv", GTMachines.SUPER_CHEST[HV].asStack(), "CPC", "PFP", "CGC", 'C', CustomTags.HV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.StainlessSteel), 'F', GTMachines.STAINLESS_STEEL_CRATE.asStack(), 'G', GTItems.FIELD_GENERATOR_LV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "super_chest_ev", GTMachines.SUPER_CHEST[EV].asStack(), "CPC", "PFP", "CGC", 'C', CustomTags.EV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Titanium), 'F', GTMachines.TITANIUM_CRATE.asStack(), 'G', GTItems.FIELD_GENERATOR_MV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_iv", GTMachines.QUANTUM_CHEST[0].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.TungstenSteel), 'F', GTItems.FIELD_GENERATOR_HV.asStack(), 'H', GTMachines.HULL[5].asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_luv", GTMachines.QUANTUM_CHEST[1].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.LuV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.RhodiumPlatedPalladium), 'F', GTItems.FIELD_GENERATOR_EV.asStack(), 'H', GTMachines.HULL[6].asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_zpm", GTMachines.QUANTUM_CHEST[2].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.ZPM_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.NaquadahAlloy), 'F', GTItems.FIELD_GENERATOR_IV.asStack(), 'H', GTMachines.HULL[7].asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_uv", GTMachines.QUANTUM_CHEST[3].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.UV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.Darmstadtium), 'F', GTItems.FIELD_GENERATOR_LuV.asStack(), 'H', GTMachines.HULL[8].asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_uhv", GTMachines.QUANTUM_CHEST[4].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.UHV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Neutronium), 'F', GTItems.FIELD_GENERATOR_ZPM.asStack(), 'H', GTMachines.HULL[9].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_iv", GTMachines.QUANTUM_CHEST[IV].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.TungstenSteel), 'F', GTItems.FIELD_GENERATOR_HV.asStack(), 'H', GTMachines.HULL[5].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_luv", GTMachines.QUANTUM_CHEST[LuV].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.LuV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.RhodiumPlatedPalladium), 'F', GTItems.FIELD_GENERATOR_EV.asStack(), 'H', GTMachines.HULL[6].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_zpm", GTMachines.QUANTUM_CHEST[ZPM].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.ZPM_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.NaquadahAlloy), 'F', GTItems.FIELD_GENERATOR_IV.asStack(), 'H', GTMachines.HULL[7].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_uv", GTMachines.QUANTUM_CHEST[UV].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.UV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.Darmstadtium), 'F', GTItems.FIELD_GENERATOR_LuV.asStack(), 'H', GTMachines.HULL[8].asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_chest_uhv", GTMachines.QUANTUM_CHEST[UHV].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.UHV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Neutronium), 'F', GTItems.FIELD_GENERATOR_ZPM.asStack(), 'H', GTMachines.HULL[9].asStack()); // Super / Quantum Tanks - VanillaRecipeHelper.addShapedRecipe(provider, true, "super_tank_lv", GTMachines.SUPER_TANK[0].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.LV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Steel), 'F', GTItems.ELECTRIC_PUMP_LV.asStack(), 'H', GTBlocks.HERMETIC_CASING_LV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "super_tank_mv", GTMachines.SUPER_TANK[1].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.MV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Aluminium), 'F', GTItems.ELECTRIC_PUMP_MV.asStack(), 'H', GTBlocks.HERMETIC_CASING_MV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "super_tank_hv", GTMachines.SUPER_TANK[2].asStack(), "CGC", "PHP", "CFC", 'C', CustomTags.HV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.StainlessSteel), 'F', GTItems.ELECTRIC_PUMP_HV.asStack(), 'H', GTBlocks.HERMETIC_CASING_HV.asStack(), 'G', GTItems.FIELD_GENERATOR_LV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "super_tank_ev", GTMachines.SUPER_TANK[3].asStack(), "CGC", "PHP", "CFC", 'C', CustomTags.EV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Titanium), 'F', GTItems.ELECTRIC_PUMP_EV.asStack(), 'H', GTBlocks.HERMETIC_CASING_EV.asStack(), 'G', GTItems.FIELD_GENERATOR_MV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "super_tank_lv", GTMachines.SUPER_TANK[LV].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.LV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Steel), 'F', GTItems.ELECTRIC_PUMP_LV.asStack(), 'H', GTBlocks.HERMETIC_CASING_LV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "super_tank_mv", GTMachines.SUPER_TANK[MV].asStack(), "CPC", "PHP", "CFC", 'C', CustomTags.MV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Aluminium), 'F', GTItems.ELECTRIC_PUMP_MV.asStack(), 'H', GTBlocks.HERMETIC_CASING_MV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "super_tank_hv", GTMachines.SUPER_TANK[HV].asStack(), "CGC", "PHP", "CFC", 'C', CustomTags.HV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.StainlessSteel), 'F', GTItems.ELECTRIC_PUMP_HV.asStack(), 'H', GTBlocks.HERMETIC_CASING_HV.asStack(), 'G', GTItems.FIELD_GENERATOR_LV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "super_tank_ev", GTMachines.SUPER_TANK[EV].asStack(), "CGC", "PHP", "CFC", 'C', CustomTags.EV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Titanium), 'F', GTItems.ELECTRIC_PUMP_EV.asStack(), 'H', GTBlocks.HERMETIC_CASING_EV.asStack(), 'G', GTItems.FIELD_GENERATOR_MV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_iv", GTMachines.QUANTUM_TANK[0].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.TungstenSteel), 'U', GTItems.ELECTRIC_PUMP_IV.asStack(), 'G', GTItems.FIELD_GENERATOR_HV.asStack(), 'H', GTBlocks.HERMETIC_CASING_IV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_luv", GTMachines.QUANTUM_TANK[1].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.LuV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.RhodiumPlatedPalladium), 'U', GTItems.ELECTRIC_PUMP_LuV.asStack(), 'G', GTItems.FIELD_GENERATOR_EV.asStack(), 'H', GTBlocks.HERMETIC_CASING_LuV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_zpm", GTMachines.QUANTUM_TANK[2].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.ZPM_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.NaquadahAlloy), 'U', GTItems.ELECTRIC_PUMP_ZPM.asStack(), 'G', GTItems.FIELD_GENERATOR_IV.asStack(), 'H', GTBlocks.HERMETIC_CASING_ZPM.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_uv", GTMachines.QUANTUM_TANK[3].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.UV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.Darmstadtium), 'U', GTItems.ELECTRIC_PUMP_UV.asStack(), 'G', GTItems.FIELD_GENERATOR_LuV.asStack(), 'H', GTBlocks.HERMETIC_CASING_UV.asStack()); - VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_uhv", GTMachines.QUANTUM_TANK[4].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.UHV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Neutronium), 'U', GTItems.ELECTRIC_PUMP_UV.asStack(), 'G', GTItems.FIELD_GENERATOR_ZPM.asStack(), 'H', GTBlocks.HERMETIC_CASING_UHV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_iv", GTMachines.QUANTUM_TANK[IV].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.IV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.TungstenSteel), 'U', GTItems.ELECTRIC_PUMP_IV.asStack(), 'G', GTItems.FIELD_GENERATOR_HV.asStack(), 'H', GTBlocks.HERMETIC_CASING_IV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_luv", GTMachines.QUANTUM_TANK[LuV].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.LuV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.RhodiumPlatedPalladium), 'U', GTItems.ELECTRIC_PUMP_LuV.asStack(), 'G', GTItems.FIELD_GENERATOR_EV.asStack(), 'H', GTBlocks.HERMETIC_CASING_LuV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_zpm", GTMachines.QUANTUM_TANK[ZPM].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.ZPM_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.NaquadahAlloy), 'U', GTItems.ELECTRIC_PUMP_ZPM.asStack(), 'G', GTItems.FIELD_GENERATOR_IV.asStack(), 'H', GTBlocks.HERMETIC_CASING_ZPM.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_uv", GTMachines.QUANTUM_TANK[UV].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.UV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plateDense, GTMaterials.Darmstadtium), 'U', GTItems.ELECTRIC_PUMP_UV.asStack(), 'G', GTItems.FIELD_GENERATOR_LuV.asStack(), 'H', GTBlocks.HERMETIC_CASING_UV.asStack()); + VanillaRecipeHelper.addShapedRecipe(provider, true, "quantum_tank_uhv", GTMachines.QUANTUM_TANK[UHV].asStack(), "CGC", "PHP", "CUC", 'C', CustomTags.UHV_CIRCUITS, 'P', new UnificationEntry(TagPrefix.plate, GTMaterials.Neutronium), 'U', GTItems.ELECTRIC_PUMP_UV.asStack(), 'G', GTItems.FIELD_GENERATOR_ZPM.asStack(), 'H', GTBlocks.HERMETIC_CASING_UHV.asStack()); // TODO Buffers //VanillaRecipeHelper.addShapedRecipe(provider, true, "buffer_lv", GTMachines.BUFFER[0].getStackForm(), "HP", "CV", 'H', GTMachines.HULL[GTValues.LV].getStackForm(), 'P', MetaItems.ELECTRIC_PUMP_LV.getStackForm(), 'V', MetaItems.CONVEYOR_MODULE_LV.getStackForm(), 'C', new UnificationEntry(TagPrefix.circuit, MarkerGTMaterials.Tier.LV)); //VanillaRecipeHelper.addShapedRecipe(provider, true, "buffer_mv", GTMachines.BUFFER[1].getStackForm(), "HP", "CV", 'H', GTMachines.HULL[GTValues.MV].getStackForm(), 'P', MetaItems.ELECTRIC_PUMP_MV.getStackForm(), 'V', MetaItems.CONVEYOR_MODULE_MV.getStackForm(), 'C', new UnificationEntry(TagPrefix.circuit, MarkerGTMaterials.Tier.LV)); //VanillaRecipeHelper.addShapedRecipe(provider, true, "buffer_hv", GTMachines.BUFFER[2].getStackForm(), "HP", "CV", 'H', GTMachines.HULL[GTValues.HV].getStackForm(), 'P', MetaItems.ELECTRIC_PUMP_HV.getStackForm(), 'V', MetaItems.CONVEYOR_MODULE_HV.getStackForm(), 'C', new UnificationEntry(TagPrefix.circuit, MarkerGTMaterials.Tier.LV)); - VanillaRecipeHelper.addShapedRecipe(provider, true, "cleanroom", GTMachines.CLEANROOM.asStack(), "FFF", "RHR", "MCM", 'F', GTItems.ITEM_FILTER.asStack(), 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.StainlessSteel), 'H', HULL.getIngredient(GTValues.HV), 'M', GTItems.ELECTRIC_MOTOR_HV.asStack(), 'C', CustomTags.HV_CIRCUITS); + VanillaRecipeHelper.addShapedRecipe(provider, true, "cleanroom", GTMachines.CLEANROOM.asStack(), "FFF", "RHR", "MCM", 'F', GTItems.ITEM_FILTER.asStack(), 'R', new UnificationEntry(TagPrefix.rotor, GTMaterials.StainlessSteel), 'H', HULL.getIngredient(HV), 'M', GTItems.ELECTRIC_MOTOR_HV.asStack(), 'C', CustomTags.HV_CIRCUITS); if (ConfigHolder.INSTANCE.compat.energy.enablePlatformConverters && GTCEu.isRebornEnergyLoaded()) { registerMachineRecipe(provider, true, GTMachines.ENERGY_CONVERTER_1A, " WW", "RMC", " WW", 'C', CIRCUIT, 'M', HULL, 'W', CABLE, 'R', new UnificationEntry(TagPrefix.cableGtSingle, GTMaterials.RedAlloy)); diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java index efff690c9d..84bd4e11a8 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/MetaTileEntityMachineRecipeLoader.java @@ -1,10 +1,13 @@ package com.gregtechceu.gtceu.data.recipe.misc; +import com.gregtechceu.gtceu.GTCEu; import com.gregtechceu.gtceu.api.data.chemical.material.stack.UnificationEntry; +import com.gregtechceu.gtceu.common.data.GTMachines; import com.gregtechceu.gtceu.data.recipe.CustomTags; import com.gregtechceu.gtceu.data.recipe.VanillaRecipeHelper; import net.minecraft.data.recipes.FinishedRecipe; +import java.util.Arrays; import java.util.function.Consumer; import static com.gregtechceu.gtceu.api.GTValues.*; @@ -359,7 +362,7 @@ public static void init(Consumer provider) { .inputItems(POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_EV) .inputItems(wireGtQuadruple, Aluminium, 2) - .outputItems(ENERGY_INPUT_HATCH_4A[0]) + .outputItems(ENERGY_INPUT_HATCH_4A[EV]) .duration(100).EUt(VA[HV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_4a_iv") @@ -368,7 +371,7 @@ public static void init(Consumer provider) { .inputItems(HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_IV) .inputItems(wireGtQuadruple, Tungsten, 2) - .outputItems(ENERGY_INPUT_HATCH_4A[1]) + .outputItems(ENERGY_INPUT_HATCH_4A[IV]) .duration(100).EUt(VA[EV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_4a_luv") @@ -377,7 +380,7 @@ public static void init(Consumer provider) { .inputItems(HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_LuV) .inputItems(wireGtQuadruple, NiobiumTitanium, 2) - .outputItems(ENERGY_INPUT_HATCH_4A[2]) + .outputItems(ENERGY_INPUT_HATCH_4A[LuV]) .duration(100).EUt(VA[IV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_4a_zpm") @@ -386,7 +389,7 @@ public static void init(Consumer provider) { .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_ZPM) .inputItems(wireGtQuadruple, VanadiumGallium, 2) - .outputItems(ENERGY_INPUT_HATCH_4A[3]) + .outputItems(ENERGY_INPUT_HATCH_4A[ZPM]) .duration(100).EUt(VA[LuV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_4a_uv") @@ -395,7 +398,7 @@ public static void init(Consumer provider) { .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_UV) .inputItems(wireGtQuadruple, YttriumBariumCuprate, 2) - .outputItems(ENERGY_INPUT_HATCH_4A[4]) + .outputItems(ENERGY_INPUT_HATCH_4A[UV]) .duration(100).EUt(VA[ZPM]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_4a_uhv") @@ -403,50 +406,50 @@ public static void init(Consumer provider) { .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(wireGtDouble, RutheniumTriniumAmericiumNeutronate) .inputItems(wireGtQuadruple, Europium, 2) - .outputItems(ENERGY_INPUT_HATCH_4A[5]) + .outputItems(ENERGY_INPUT_HATCH_4A[UHV]) .duration(100).EUt(VA[UV]).save(provider); // 16A Energy Hatches ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_16a_ev") - .inputItems(ENERGY_INPUT_HATCH_4A[1], 2) + .inputItems(ENERGY_INPUT_HATCH_4A[EV], 2) .inputItems(HIGH_POWER_INTEGRATED_CIRCUIT, 2) .inputItems(VOLTAGE_COIL_IV) .inputItems(wireGtOctal, Tungsten, 2) - .outputItems(ENERGY_INPUT_HATCH_16A[0]) + .outputItems(ENERGY_INPUT_HATCH_16A[EV]) .duration(200).EUt(VA[EV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_16a_iv") - .inputItems(ENERGY_INPUT_HATCH_4A[2], 2) + .inputItems(ENERGY_INPUT_HATCH_4A[IV], 2) .inputItems(HIGH_POWER_INTEGRATED_CIRCUIT, 2) .inputItems(VOLTAGE_COIL_LuV) .inputItems(wireGtOctal, NiobiumTitanium, 2) - .outputItems(ENERGY_INPUT_HATCH_16A[1]) + .outputItems(ENERGY_INPUT_HATCH_16A[IV]) .duration(200).EUt(VA[IV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_16a_luv") - .inputItems(ENERGY_INPUT_HATCH_4A[3], 2) + .inputItems(ENERGY_INPUT_HATCH_4A[LuV], 2) .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT, 2) .inputItems(VOLTAGE_COIL_ZPM) .inputItems(wireGtOctal, VanadiumGallium, 2) - .outputItems(ENERGY_INPUT_HATCH_16A[2]) + .outputItems(ENERGY_INPUT_HATCH_16A[LuV]) .duration(200).EUt(VA[LuV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_16a_zpm") - .inputItems(ENERGY_INPUT_HATCH_4A[4], 2) + .inputItems(ENERGY_INPUT_HATCH_4A[ZPM], 2) .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT, 2) .inputItems(VOLTAGE_COIL_UV) .inputItems(wireGtOctal, YttriumBariumCuprate, 2) - .outputItems(ENERGY_INPUT_HATCH_16A[3]) + .outputItems(ENERGY_INPUT_HATCH_16A[ZPM]) .duration(200).EUt(VA[ZPM]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("energy_hatch_16a_uv") - .inputItems(ENERGY_INPUT_HATCH_4A[5], 2) + .inputItems(ENERGY_INPUT_HATCH_4A[UV], 2) .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT, 2) .inputItems(wireGtDouble, RutheniumTriniumAmericiumNeutronate) .inputItems(wireGtOctal, Europium, 2) - .outputItems(ENERGY_INPUT_HATCH_16A[4]) + .outputItems(ENERGY_INPUT_HATCH_16A[UV]) .duration(200).EUt(VA[UV]).save(provider); // 4A Dynamo Hatches @@ -457,7 +460,7 @@ public static void init(Consumer provider) { .inputItems(POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_EV) .inputItems(wireGtQuadruple, Aluminium, 2) - .outputItems(ENERGY_OUTPUT_HATCH_4A[0]) + .outputItems(ENERGY_OUTPUT_HATCH_4A[EV]) .duration(100).EUt(VA[HV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("dynamo_hatch_4a_iv") @@ -466,7 +469,7 @@ public static void init(Consumer provider) { .inputItems(HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_IV) .inputItems(wireGtQuadruple, Tungsten, 2) - .outputItems(ENERGY_OUTPUT_HATCH_4A[1]) + .outputItems(ENERGY_OUTPUT_HATCH_4A[IV]) .duration(100).EUt(VA[EV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("dynamo_hatch_4a_luv") @@ -475,7 +478,7 @@ public static void init(Consumer provider) { .inputItems(HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_LuV) .inputItems(wireGtQuadruple, NiobiumTitanium, 2) - .outputItems(ENERGY_OUTPUT_HATCH_4A[2]) + .outputItems(ENERGY_OUTPUT_HATCH_4A[LuV]) .duration(100).EUt(VA[IV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("dynamo_hatch_4a_zpm") @@ -484,7 +487,7 @@ public static void init(Consumer provider) { .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_ZPM) .inputItems(wireGtQuadruple, VanadiumGallium, 2) - .outputItems(ENERGY_OUTPUT_HATCH_4A[3]) + .outputItems(ENERGY_OUTPUT_HATCH_4A[ZPM]) .duration(100).EUt(VA[LuV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("dynamo_hatch_4a_uv") @@ -493,7 +496,7 @@ public static void init(Consumer provider) { .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(VOLTAGE_COIL_UV) .inputItems(wireGtQuadruple, YttriumBariumCuprate, 2) - .outputItems(ENERGY_OUTPUT_HATCH_4A[4]) + .outputItems(ENERGY_OUTPUT_HATCH_4A[UV]) .duration(100).EUt(VA[ZPM]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("dynamo_hatch_4a_uhv") @@ -501,7 +504,7 @@ public static void init(Consumer provider) { .inputItems(ULTRA_HIGH_POWER_INTEGRATED_CIRCUIT) .inputItems(wireGtDouble, RutheniumTriniumAmericiumNeutronate) .inputItems(wireGtQuadruple, Europium, 2) - .outputItems(ENERGY_OUTPUT_HATCH_4A[5]) + .outputItems(ENERGY_OUTPUT_HATCH_4A[UHV]) .duration(100).EUt(VA[UV]).save(provider); // 16A Dynamo Hatches @@ -571,7 +574,7 @@ public static void init(Consumer provider) { .inputItems(CONVEYOR_MODULE_EV, 4) .inputItems(gear, Tungsten, 4) .circuitMeta(2) - .outputItems(LARGE_MINER[0]) + .outputItems(LARGE_MINER[EV]) .duration(400).EUt(VA[EV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("iv_large_miner") @@ -583,7 +586,7 @@ public static void init(Consumer provider) { .inputItems(CONVEYOR_MODULE_IV, 4) .inputItems(gear, Iridium, 4) .circuitMeta(2) - .outputItems(LARGE_MINER[1]) + .outputItems(LARGE_MINER[IV]) .duration(400).EUt(VA[IV]).save(provider); ASSEMBLER_RECIPES.recipeBuilder("luv_large_miner") @@ -595,44 +598,44 @@ public static void init(Consumer provider) { .inputItems(CONVEYOR_MODULE_LuV, 4) .inputItems(gear, Ruridit, 4) .circuitMeta(2) - .outputItems(LARGE_MINER[2]) + .outputItems(LARGE_MINER[LuV]) .duration(400).EUt(VA[LuV]).save(provider); // Multiblock Fluid Drills // TODO Multiblock fluid rigs -/* - ASSEMBLER_RECIPES.recipeBuilder() + + ASSEMBLER_RECIPES.recipeBuilder("mv_fluid_drilling_rig") .inputItems(HULL[MV]) .inputItems(frameGt, Steel, 4) - .inputItems(circuit, Tier.MV, 4) + .inputItems(CustomTags.MV_CIRCUITS, 4) .inputItems(ELECTRIC_MOTOR_MV, 4) .inputItems(ELECTRIC_PUMP_MV, 4) .inputItems(gear, VanadiumSteel, 4) .circuitMeta(2) - .outputItems(BASIC_FLUID_DRILLING_RIG) + .outputItems(FLUID_DRILLING_RIG[MV]) .duration(400).EUt(VA[MV]).save(provider); - ASSEMBLER_RECIPES.recipeBuilder() + ASSEMBLER_RECIPES.recipeBuilder("hv_fluid_drilling_rig") .inputItems(HULL[EV]) .inputItems(frameGt, Titanium, 4) - .inputItems(circuit, Tier.EV, 4) + .inputItems(CustomTags.EV_CIRCUITS, 4) .inputItems(ELECTRIC_MOTOR_EV, 4) .inputItems(ELECTRIC_PUMP_EV, 4) .inputItems(gear, TungstenCarbide, 4) .circuitMeta(2) - .outputItems(FLUID_DRILLING_RIG) + .outputItems(FLUID_DRILLING_RIG[HV]) .duration(400).EUt(VA[EV]).save(provider); - ASSEMBLER_RECIPES.recipeBuilder() + ASSEMBLER_RECIPES.recipeBuilder("ev_fluid_drilling_rig") .inputItems(HULL[LuV]) .inputItems(frameGt, TungstenSteel, 4) - .inputItems(circuit, Tier.LuV, 4) + .inputItems(CustomTags.LuV_CIRCUITS, 4) .inputItems(ELECTRIC_MOTOR_LuV, 4) .inputItems(ELECTRIC_PUMP_LuV, 4) .inputItems(gear, Osmiridium, 4) .circuitMeta(2) - .outputItems(ADVANCED_FLUID_DRILLING_RIG) + .outputItems(FLUID_DRILLING_RIG[EV]) .duration(400).EUt(VA[LuV]).save(provider); - */ + } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/alloyblast/AlloyBlastRecipeProducer.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/alloyblast/AlloyBlastRecipeProducer.java new file mode 100644 index 0000000000..87c44af1a5 --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/alloyblast/AlloyBlastRecipeProducer.java @@ -0,0 +1,183 @@ +package com.gregtechceu.gtceu.data.recipe.misc.alloyblast; + +import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.info.MaterialFlags; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.BlastProperty; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; +import com.gregtechceu.gtceu.api.data.chemical.material.stack.MaterialStack; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; +import com.gregtechceu.gtceu.common.data.GCyMRecipeTypes; +import com.gregtechceu.gtceu.common.data.GTItems; +import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.common.data.GTRecipeTypes; +import com.gregtechceu.gtceu.data.recipe.CraftingComponent; +import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; +import com.gregtechceu.gtceu.utils.GTUtil; +import com.lowdragmc.lowdraglib.side.fluid.FluidStack; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.world.level.material.Fluid; + +import javax.annotation.Nonnull; +import java.util.function.Consumer; + +public class AlloyBlastRecipeProducer { + + public static final AlloyBlastRecipeProducer DEFAULT_PRODUCER = new AlloyBlastRecipeProducer(); + + /** + * Generates alloy blast recipes for a material + * + * @param material the material to generate for + * @param property the blast property of the material + */ + public void produce(@Nonnull Material material, @Nonnull BlastProperty property, Consumer provider) { + // do not generate for disabled materials + if (material.hasFlag(MaterialFlags.DISABLE_ALLOY_BLAST)) return; + + final int componentAmount = material.getMaterialComponents().size(); + + // ignore non-alloys + if (componentAmount < 2) return; + + // get the output fluid + Fluid molten = GTUtil.getMoltenFluid(material); + if (molten == null) return; + + GTRecipeBuilder builder = createBuilder(property, material); + + int outputAmount = addInputs(material, builder); + if (outputAmount <= 0) return; + + buildRecipes(property, molten, outputAmount, componentAmount, builder, provider); + + // if the material does not need a vacuum freezer, exit + if (!TagPrefix.ingotHot.doGenerateItem(material)) return; + + addFreezerRecipes(material, molten, property.getBlastTemperature(), provider); + } + + /** + * Creates the recipeBuilder with duration and EUt + * + * @param property the blast property of the material + * @param material the material + * @return the builder + */ + @SuppressWarnings("MethodMayBeStatic") + @Nonnull + protected GTRecipeBuilder createBuilder(@Nonnull BlastProperty property, @Nonnull Material material) { + GTRecipeBuilder builder = GCyMRecipeTypes.ALLOY_BLAST_RECIPES.recipeBuilder(material.getName()); + // apply the duration override + int duration = property.getDurationOverride(); + if (duration < 0) duration = Math.max(1, (int) (material.getMass() * property.getBlastTemperature() / 100L)); + builder.duration(duration); + + // apply the EUt override + int EUt = property.getEUtOverride(); + if (EUt < 0) EUt = GTValues.VA[GTValues.MV]; + builder.EUt(EUt); + + return builder.blastFurnaceTemp(property.getBlastTemperature()); + } + + /** + * @param material the material to start recipes for + * @param builder the recipe builder to append to + * @return the outputAmount if the recipe is valid, otherwise -1 + */ + protected int addInputs(@Nonnull Material material, @Nonnull GTRecipeBuilder builder) { + // calculate the output amount and add inputs + int outputAmount = 0; + int fluidAmount = 0; + for (MaterialStack materialStack : material.getMaterialComponents()) { + final Material msMat = materialStack.material(); + final int msAmount = (int) materialStack.amount(); + + if (msMat.hasProperty(PropertyKey.DUST)) { + builder.inputItems(TagPrefix.dust, msMat, msAmount); + } else if (msMat.hasProperty(PropertyKey.FLUID)) { + if (fluidAmount >= 2) return -1; // more than 2 fluids won't fit in the machine + fluidAmount++; + // assume all fluids have 1000mB/mol, since other quantities should be as an item input + builder.inputFluids(msMat.getFluid(1000L * msAmount)); + } else return -1; // no fluid or item prop means no valid recipe + outputAmount += msAmount; + } + return outputAmount; + } + + /** + * Builds the alloy blast recipes + * + * @param property the blast property to utilize + * @param molten the molten fluid + * @param outputAmount the amount of material to output + * @param componentAmount the amount of different components in the material + * @param builder the builder to continue + */ + protected void buildRecipes(@Nonnull BlastProperty property, @Nonnull Fluid molten, int outputAmount, int componentAmount, + @Nonnull GTRecipeBuilder builder, Consumer provider) { + // add the fluid output with the correct amount + builder.outputFluids(FluidStack.create(molten, (long) GTValues.L * outputAmount)); + + // apply alloy blast duration reduction: 3/4 + int duration = builder.duration * outputAmount * 3 / 4; + + // build the gas recipe if it exists + if (property.getGasTier() != null) { + GTRecipeBuilder builderGas = builder.copy(builder.id.getPath() + "_gas"); + FluidStack gas = CraftingComponent.EBF_GASES.get(property.getGasTier()); + builderGas.circuitMeta(getGasCircuitNum(componentAmount)) + .inputFluids(FluidStack.create(gas, gas.getAmount() * outputAmount)) + .duration((int) (duration * 0.67)) + .save(provider); + } + + // build the non-gas recipe + builder.circuitMeta(getCircuitNum(componentAmount)) + .duration(duration) + .save(provider); + } + + /** + * @param componentAmount the amount of different components in the material + * @return the circuit number for the regular recipe + */ + protected int getCircuitNum(int componentAmount) { + return componentAmount; + } + + /** + * @param componentAmount the amount of different components in the material + * @return the circuit number for the gas-boosted recipe + */ + protected int getGasCircuitNum(int componentAmount) { + return componentAmount + 10; + } + + /** + * Add the freezer recipes for the material + * + * @param material the material to generate for + * @param molten the molten fluid + * @param temperature the temperature of the material + */ + @SuppressWarnings("MethodMayBeStatic") + protected void addFreezerRecipes(@Nonnull Material material, @Nonnull Fluid molten, int temperature, Consumer provider) { + + // build the freezer recipe + GTRecipeBuilder freezerBuilder = GTRecipeTypes.VACUUM_RECIPES.recipeBuilder(material.getName()) + .inputFluids(FluidStack.create(molten, GTValues.L)) + .duration((int) material.getMass() * 3) + .notConsumable(GTItems.SHAPE_MOLD_INGOT.asStack()) + .outputItems(TagPrefix.ingot, material); + + // helium for when >= 5000K temperature + if (temperature >= 5000) { + freezerBuilder.inputFluids(GTMaterials.LiquidHelium.getFluid(500)) + .outputFluids(GTMaterials.Helium.getFluid(250)); + } + freezerBuilder.save(provider); + } +} \ No newline at end of file diff --git a/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/alloyblast/CustomAlloyBlastRecipeProducer.java b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/alloyblast/CustomAlloyBlastRecipeProducer.java new file mode 100644 index 0000000000..9d5918e75a --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/data/recipe/misc/alloyblast/CustomAlloyBlastRecipeProducer.java @@ -0,0 +1,43 @@ +package com.gregtechceu.gtceu.data.recipe.misc.alloyblast; + +import com.google.common.base.Preconditions; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.data.recipe.builder.GTRecipeBuilder; + +import javax.annotation.Nonnull; + +public class CustomAlloyBlastRecipeProducer extends AlloyBlastRecipeProducer { + + private final int circuitNum; + private final int gasCircuitNum; + private final int outputAmount; + + /** + * @param circuitNum the custom circuit number to use + * @param gasCircuitNum the custom gas circuit number to use + * @param outputAmount the custom output amount in quantities of {@link com.gregtechceu.gtceu.api.data.tag.TagPrefix#ingot} + * / {@link com.gregtechceu.gtceu.api.GTValues#M}) to use + */ + public CustomAlloyBlastRecipeProducer(int circuitNum, int gasCircuitNum, int outputAmount) { + this.circuitNum = circuitNum; + this.gasCircuitNum = gasCircuitNum; + Preconditions.checkArgument(outputAmount != 0, "output amount cannot be zero"); + this.outputAmount = outputAmount; + } + + @Override + protected int addInputs(@Nonnull Material material, @Nonnull GTRecipeBuilder builder) { + int amount = super.addInputs(material, builder); // always must be called + return this.outputAmount < 0 ? amount : this.outputAmount; + } + + @Override + protected int getCircuitNum(int componentAmount) { + return this.circuitNum < 0 ? super.getCircuitNum(componentAmount) : this.circuitNum; + } + + @Override + protected int getGasCircuitNum(int componentAmount) { + return this.gasCircuitNum < 0 ? super.getGasCircuitNum(componentAmount) : this.gasCircuitNum; + } +} \ No newline at end of file diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeTypeEmiCategory.java b/common/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeTypeEmiCategory.java index cd54b6e6fb..24c3dcefb6 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeTypeEmiCategory.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/emi/recipe/GTRecipeTypeEmiCategory.java @@ -37,8 +37,12 @@ public static void registerDisplays(EmiRegistry registry) { public static void registerWorkStations(EmiRegistry registry) { for (GTRecipeType gtRecipeType : GTRegistries.RECIPE_TYPES) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeType() == gtRecipeType) { - registry.addWorkstation(GTRecipeTypeEmiCategory.CATEGORIES.apply(gtRecipeType), EmiStack.of(machine.asStack())); + if (machine.getRecipeTypes() != null) { + for (GTRecipeType type : machine.getRecipeTypes()){ + if (type == gtRecipeType) { + registry.addWorkstation(GTRecipeTypeEmiCategory.CATEGORIES.apply(gtRecipeType), EmiStack.of(machine.asStack())); + } + } } } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeTypeCategory.java b/common/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeTypeCategory.java index 96eda2d338..98ef837c52 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeTypeCategory.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/jei/recipe/GTRecipeTypeCategory.java @@ -72,8 +72,12 @@ public static void registerRecipes(IRecipeRegistration registration) { public static void registerRecipeCatalysts(IRecipeCatalystRegistration registration) { for (GTRecipeType gtRecipeType : GTRegistries.RECIPE_TYPES) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeType() == gtRecipeType) { - registration.addRecipeCatalyst(machine.asStack(), GTRecipeTypeCategory.TYPES.apply(gtRecipeType)); + if (machine.getRecipeTypes() != null) { + for (GTRecipeType type : machine.getRecipeTypes()){ + if (type == gtRecipeType) { + registration.addRecipeCatalyst(machine.asStack(), GTRecipeTypeCategory.TYPES.apply(gtRecipeType)); + } + } } } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java index 262897e026..f27b7e87cd 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/GregTechKubeJSPlugin.java @@ -29,6 +29,9 @@ import com.gregtechceu.gtceu.common.CommonProxy; import com.gregtechceu.gtceu.common.data.*; import com.gregtechceu.gtceu.integration.kjs.builders.*; +import com.gregtechceu.gtceu.integration.kjs.builders.block.CoilBlockBuilder; +import com.gregtechceu.gtceu.integration.kjs.builders.block.RendererBlockBuilder; +import com.gregtechceu.gtceu.integration.kjs.builders.block.RendererGlassBlockBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.machine.*; import com.gregtechceu.gtceu.integration.kjs.builders.prefix.BasicTagPrefixBuilder; import com.gregtechceu.gtceu.integration.kjs.builders.prefix.OreTagPrefixBuilder; @@ -89,6 +92,8 @@ public void init() { GTRegistryObjectBuilderTypes.TAG_PREFIX.addType("ore", OreTagPrefixBuilder.class, OreTagPrefixBuilder::new, false); RegistryInfo.BLOCK.addType("gtceu:coil", CoilBlockBuilder.class, CoilBlockBuilder::new); + RegistryInfo.BLOCK.addType("gtceu:renderer", RendererBlockBuilder.class, RendererBlockBuilder::new); + RegistryInfo.BLOCK.addType("gtceu:renderer_glass", RendererGlassBlockBuilder.class, RendererGlassBlockBuilder::new); } @Override diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/CoilBlockBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java similarity index 72% rename from common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/CoilBlockBuilder.java rename to common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java index b65c3c1316..de457378e0 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/CoilBlockBuilder.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/CoilBlockBuilder.java @@ -1,56 +1,37 @@ -package com.gregtechceu.gtceu.integration.kjs.builders; +package com.gregtechceu.gtceu.integration.kjs.builders.block; import com.gregtechceu.gtceu.api.block.SimpleCoilType; import com.gregtechceu.gtceu.api.data.chemical.material.Material; import com.gregtechceu.gtceu.common.block.CoilBlock; import com.gregtechceu.gtceu.common.data.GTBlocks; import com.gregtechceu.gtceu.common.data.GTMaterials; +import com.gregtechceu.gtceu.integration.kjs.builders.RendererBlockItemBuilder; import dev.latvian.mods.kubejs.block.BlockBuilder; import dev.latvian.mods.kubejs.block.BlockItemBuilder; import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; +import lombok.Setter; +import lombok.experimental.Accessors; import net.minecraft.client.renderer.texture.MissingTextureAtlasSprite; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; +@Accessors(chain = true, fluent = true) public class CoilBlockBuilder extends BlockBuilder { + @Setter public transient int temperature = 0, level = 0, energyDiscount = 1, tier = 0; public transient Material material = GTMaterials.Air; + @Setter public transient ResourceLocation texture = MissingTextureAtlasSprite.getLocation(); public CoilBlockBuilder(ResourceLocation i) { super(i); } - public CoilBlockBuilder temperature(int temperature) { - this.temperature = temperature; - return this; - } - - public CoilBlockBuilder level(int level) { - this.level = level; - return this; - } - - public CoilBlockBuilder energyDiscount(int energyDiscount) { - this.energyDiscount = energyDiscount; - return this; - } - - public CoilBlockBuilder tier(int tier) { - this.tier = tier; - return this; - } - public CoilBlockBuilder coilMaterial(Material material) { this.material = material; return this; } - public CoilBlockBuilder texture(ResourceLocation texture) { - this.texture = texture; - return this; - } - @Override public void generateAssetJsons(AssetJsonGenerator generator) { diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/RendererBlockBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/RendererBlockBuilder.java new file mode 100644 index 0000000000..5ceb2e574f --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/RendererBlockBuilder.java @@ -0,0 +1,63 @@ +package com.gregtechceu.gtceu.integration.kjs.builders.block; + +import com.gregtechceu.gtceu.api.block.RendererBlock; +import com.gregtechceu.gtceu.client.renderer.block.CTMModelRenderer; +import com.gregtechceu.gtceu.client.renderer.block.TextureOverrideRenderer; +import com.gregtechceu.gtceu.integration.kjs.builders.RendererBlockItemBuilder; +import com.lowdragmc.lowdraglib.client.renderer.IRenderer; +import dev.latvian.mods.kubejs.block.BlockBuilder; +import dev.latvian.mods.kubejs.block.BlockItemBuilder; +import dev.latvian.mods.kubejs.client.ModelGenerator; +import dev.latvian.mods.kubejs.generator.AssetJsonGenerator; +import lombok.Setter; +import lombok.experimental.Accessors; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; + +import javax.annotation.ParametersAreNonnullByDefault; +import java.util.Map; + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +@Accessors(chain = true, fluent = true) +public class RendererBlockBuilder extends BlockBuilder { + @Setter + public transient IRenderer renderer; + + public RendererBlockBuilder(ResourceLocation i) { + super(i); + } + + @Override + protected void generateItemModelJson(ModelGenerator m) { + + } + + @Override + protected void generateBlockModelJsons(AssetJsonGenerator generator) { + + } + + public RendererBlockBuilder textureOverrideRenderer(ResourceLocation modelPath, Map textures) { + this.renderer = new TextureOverrideRenderer(modelPath, textures); + return this; + } + + public RendererBlockBuilder ctmRenderer(ResourceLocation modelPath) { + this.renderer = new CTMModelRenderer(modelPath); + return this; + } + + @Override + protected BlockItemBuilder getOrCreateItemBuilder() { + return itemBuilder == null ? (itemBuilder = new RendererBlockItemBuilder(id)) : itemBuilder; + } + + @Override + public Block createObject() { + return new RendererBlock(this.createProperties(), renderer); + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/RendererGlassBlockBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/RendererGlassBlockBuilder.java new file mode 100644 index 0000000000..287ec5a64f --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/block/RendererGlassBlockBuilder.java @@ -0,0 +1,25 @@ +package com.gregtechceu.gtceu.integration.kjs.builders.block; + +import com.gregtechceu.gtceu.api.block.RendererGlassBlock; +import net.minecraft.FieldsAreNonnullByDefault; +import net.minecraft.MethodsReturnNonnullByDefault; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; + +import javax.annotation.ParametersAreNonnullByDefault; + + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +@FieldsAreNonnullByDefault +public class RendererGlassBlockBuilder extends RendererBlockBuilder { + + public RendererGlassBlockBuilder(ResourceLocation i) { + super(i); + } + + @Override + public Block createObject() { + return new RendererGlassBlock(this.createProperties(), renderer); + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/CustomMultiblockBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/CustomMultiblockBuilder.java index 93b46678d2..44f31e572b 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/CustomMultiblockBuilder.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/CustomMultiblockBuilder.java @@ -22,6 +22,7 @@ import com.gregtechceu.gtceu.api.registry.GTRegistries; import com.gregtechceu.gtceu.api.registry.registrate.MachineBuilder; import com.gregtechceu.gtceu.api.registry.registrate.MultiblockMachineBuilder; +import com.gregtechceu.gtceu.common.data.GTRecipeTypes; import com.gregtechceu.gtceu.common.machine.multiblock.primitive.PrimitiveFancyUIWorkableMachine; import com.lowdragmc.lowdraglib.client.renderer.IRenderer; import com.tterrag.registrate.builders.BlockBuilder; @@ -60,12 +61,11 @@ protected CustomMultiblockBuilder(String name, Function factory, Integer... tiers) { - CustomMultiblockBuilder[] builders = new CustomMultiblockBuilder[tiers.length]; - for (int i = 0; i < tiers.length; i++) { - int tier = tiers[i]; + CustomMultiblockBuilder[] builders = new CustomMultiblockBuilder[GTValues.TIER_COUNT]; + for (int tier : tiers) { var builder = new CustomMultiblockBuilder(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> factory.apply(holder, tier)) .tier(tier); - builders[i] = builder; + builders[tier] = builder; } return builders; } @@ -110,6 +110,7 @@ public static CustomMultiblockBuilder tieredBuilder(String name, CustomMultibloc @Override public MultiblockMachineBuilder pattern(Function pattern) { for (var builder : builders) { + if (builder == null) continue; builder.pattern(pattern); } return this; @@ -118,6 +119,7 @@ public MultiblockMachineBuilder pattern(Function partSorter) { for (var builder : builders) { + if (builder == null) continue; builder.partSorter(partSorter); } return this; @@ -126,6 +128,7 @@ public MultiblockMachineBuilder partSorter(Comparator partSorter) { @Override public MultiblockMachineBuilder partAppearance(TriFunction partAppearance) { for (var builder : builders) { + if (builder == null) continue; builder.partAppearance(partAppearance); } return this; @@ -134,6 +137,7 @@ public MultiblockMachineBuilder partAppearance(TriFunction> additionalDisplay) { for (var builder : builders) { + if (builder == null) continue; builder.additionalDisplay(additionalDisplay); } return this; @@ -141,6 +145,7 @@ public MultiblockMachineBuilder additionalDisplay(BiConsumer shape) { for (var builder : builders) { + if (builder == null) continue; builder.shapeInfo(shape); } return this; @@ -148,6 +153,7 @@ public MultiblockMachineBuilder shapeInfo(Function> shapes) { for (var builder : builders) { + if (builder == null) continue; builder.shapeInfos(shapes); } return this; @@ -155,6 +161,7 @@ public MultiblockMachineBuilder shapeInfos(Function items) { for (var builder : builders) { + if (builder == null) continue; builder.recoveryItems(items); } return this; @@ -162,6 +169,7 @@ public MultiblockMachineBuilder recoveryItems(Supplier items) { public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { for (var builder : builders) { + if (builder == null) continue; builder.recoveryStacks(stacks); } return this; @@ -169,6 +177,7 @@ public MultiblockMachineBuilder recoveryStacks(Supplier stacks) { public CustomMultiblockBuilder renderer(@Nullable Supplier renderer) { for (var builder : builders) { + if (builder == null) continue; builder.renderer(renderer); } return this; @@ -177,6 +186,7 @@ public CustomMultiblockBuilder renderer(@Nullable Supplier renderer) @Override public CustomMultiblockBuilder shape(VoxelShape shape) { for (var builder : builders) { + if (builder == null) continue; builder.shape(shape); } return this; @@ -185,6 +195,7 @@ public CustomMultiblockBuilder shape(VoxelShape shape) { @Override public CustomMultiblockBuilder rotationState(RotationState rotationState) { for (var builder : builders) { + if (builder == null) continue; builder.rotationState(rotationState); } return this; @@ -193,6 +204,7 @@ public CustomMultiblockBuilder rotationState(RotationState rotationState) { @Override public CustomMultiblockBuilder hasTESR(boolean hasTESR) { for (var builder : builders) { + if (builder == null) continue; builder.hasTESR(hasTESR); } return this; @@ -201,6 +213,7 @@ public CustomMultiblockBuilder hasTESR(boolean hasTESR) { @Override public CustomMultiblockBuilder blockProp(NonNullUnaryOperator blockProp) { for (var builder : builders) { + if (builder == null) continue; builder.blockProp(blockProp); } return this; @@ -209,6 +222,7 @@ public CustomMultiblockBuilder blockProp(NonNullUnaryOperator itemProp) { for (var builder : builders) { + if (builder == null) continue; builder.itemProp(itemProp); } return this; @@ -217,6 +231,7 @@ public CustomMultiblockBuilder itemProp(NonNullUnaryOperator it @Override public CustomMultiblockBuilder blockBuilder(Consumer> blockBuilder) { for (var builder : builders) { + if (builder == null) continue; builder.blockBuilder(blockBuilder); } return this; @@ -225,6 +240,7 @@ public CustomMultiblockBuilder blockBuilder(Consumer> itemBuilder) { for (var builder : builders) { + if (builder == null) continue; builder.itemBuilder(itemBuilder); } return this; @@ -233,19 +249,28 @@ public CustomMultiblockBuilder itemBuilder(Consumer> onBlockEntityRegister) { for (var builder : builders) { + if (builder == null) continue; builder.onBlockEntityRegister(onBlockEntityRegister); } return this; } @Override - public CustomMultiblockBuilder recipeType(GTRecipeType recipeType) { + public CustomMultiblockBuilder recipeTypes(GTRecipeType... recipeTypes) { for (var builder : builders) { - builder.recipeType(recipeType); + if (builder == null) continue; + for(GTRecipeType type : recipeTypes){ + builder.recipeType(type); + } } return this; } + @Override + public CustomMultiblockBuilder recipeType(GTRecipeType recipeType) { + return recipeTypes(recipeType); + } + @Override public CustomMultiblockBuilder tier(int tier) { return this; @@ -254,6 +279,7 @@ public CustomMultiblockBuilder tier(int tier) { @Override public CustomMultiblockBuilder paintingColor(int paintingColor) { for (var builder : builders) { + if (builder == null) continue; builder.paintingColor(paintingColor); } return this; @@ -262,6 +288,7 @@ public CustomMultiblockBuilder paintingColor(int paintingColor) { @Override public CustomMultiblockBuilder itemColor(BiFunction itemColor) { for (var builder : builders) { + if (builder == null) continue; builder.itemColor(itemColor); } return this; @@ -270,6 +297,7 @@ public CustomMultiblockBuilder itemColor(BiFunction @Override public CustomMultiblockBuilder abilities(PartAbility... abilities) { for (var builder : builders) { + if (builder == null) continue; builder.abilities(abilities); } return this; @@ -277,6 +305,7 @@ public CustomMultiblockBuilder abilities(PartAbility... abilities) { public CustomMultiblockBuilder tooltips(Component... tooltips) { for (var builder : builders) { + if (builder == null) continue; builder.tooltips(tooltips); } return this; @@ -285,6 +314,7 @@ public CustomMultiblockBuilder tooltips(Component... tooltips) { @Override public CustomMultiblockBuilder tooltipBuilder(BiConsumer> tooltipBuilder) { for (var builder : builders) { + if (builder == null) continue; builder.tooltipBuilder(tooltipBuilder); } return this; @@ -293,6 +323,7 @@ public CustomMultiblockBuilder tooltipBuilder(BiConsumer recipeModifier) { for (var builder : builders) { + if (builder == null) continue; builder.recipeModifier(recipeModifier); } return this; @@ -301,6 +332,7 @@ public CustomMultiblockBuilder recipeModifier(BiFunction appearance) { for (var builder : builders) { + if (builder == null) continue; builder.appearance(appearance); } return this; @@ -317,6 +350,7 @@ public CustomMultiblockBuilder appearance(Supplier appearance) { @Override public CustomMultiblockBuilder editableUI(@Nullable EditableMachineUI editableUI) { for (var builder : builders) { + if (builder == null) continue; builder.editableUI(editableUI); } return this; @@ -325,6 +359,7 @@ public CustomMultiblockBuilder editableUI(@Nullable EditableMachineUI editableUI @Override public CustomMultiblockBuilder langValue(String langValue) { for (var builder : builders) { + if (builder == null) continue; builder.langValue(langValue); } return this; @@ -338,6 +373,7 @@ public CustomMultiblockBuilder recipeModifier(BiFunction machineConstructor, Integer... tiers) { - CustomTieredMachineBuilder[] builders = new CustomTieredMachineBuilder[tiers.length]; - for (int i = 0; i < tiers.length; i++) { - int tier = tiers[i]; + CustomTieredMachineBuilder[] builders = new CustomTieredMachineBuilder[GTValues.TIER_COUNT]; + for (int tier : tiers) { CustomTieredMachineBuilder register = new CustomTieredMachineBuilder(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> machineConstructor.apply(holder, tier)).tier(tier); - builders[i] = register; + builders[tier] = register; } return builders; } diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/GeneratorBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/GeneratorBuilder.java index dfdc11c4b4..a9664d955b 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/GeneratorBuilder.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/GeneratorBuilder.java @@ -41,12 +41,11 @@ public GeneratorBuilder tier(int tier) { private static GeneratorBuilder[] tieredMachines(String name, BiConsumer builderConsumer, Integer... tiers) { - GeneratorBuilder[] builders = new GeneratorBuilder[tiers.length]; - for (int i = 0; i < tiers.length; i++) { - int tier = tiers[i]; + GeneratorBuilder[] builders = new GeneratorBuilder[GTValues.TIER_COUNT]; + for (int tier : tiers) { var register = new GeneratorBuilder(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> new SimpleGeneratorMachine(holder, tier, defaultTankSizeFunction)).tier(tier); builderConsumer.accept(register, tier); - builders[i] = register; + builders[tier] = register; } return builders; } diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KineticMachineBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KineticMachineBuilder.java index 69b4b14358..2f998e9ba0 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KineticMachineBuilder.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/KineticMachineBuilder.java @@ -75,15 +75,14 @@ public KineticMachineBuilder onBlockEntityRegister(NonNullConsumer, Integer> builderConsumer, Integer... tiers) { - KineticMachineBuilder[] builders = new KineticMachineBuilder[tiers.length]; - for (int i = 0; i < tiers.length; i++) { - int tier = tiers[i]; + KineticMachineBuilder[] builders = new KineticMachineBuilder[GTValues.TIER_COUNT]; + for (int tier : tiers) { var register = new KineticMachineBuilder(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, false, tier) .tier(tier) .hasTESR(true) .onBlockEntityRegister(type -> KineticMachineBlockEntity.onBlockEntityRegister(type, () -> SplitShaftInstance::new, false)); builderConsumer.accept(register, tier); - builders[i] = register; + builders[tier] = register; } return builders; } diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineFunctionPresets.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineFunctionPresets.java index 3d8e983e5c..66d252613d 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineFunctionPresets.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/MachineFunctionPresets.java @@ -71,6 +71,7 @@ public static > Machine return new MachineBuilder(GTRegistries.REGISTRATE, name, definitionFactory, holder -> null, blockFactory, MetaMachineItem::new, blockEntityFactory) { public MachineBuilder renderer(@Nullable Supplier renderer) { for (var builder : builders) { + if (builder == null) continue; builder.renderer(renderer); } return this; @@ -79,6 +80,7 @@ public MachineBuilder renderer(@Nullable Supplier renderer) { @Override public MachineBuilder shape(VoxelShape shape) { for (var builder : builders) { + if (builder == null) continue; builder.shape(shape); } return this; @@ -87,6 +89,7 @@ public MachineBuilder shape(VoxelShape shape) { @Override public MachineBuilder rotationState(RotationState rotationState) { for (var builder : builders) { + if (builder == null) continue; builder.rotationState(rotationState); } return this; @@ -95,6 +98,7 @@ public MachineBuilder rotationState(RotationState rotationState) { @Override public MachineBuilder hasTESR(boolean hasTESR) { for (var builder : builders) { + if (builder == null) continue; builder.hasTESR(hasTESR); } return this; @@ -103,6 +107,7 @@ public MachineBuilder hasTESR(boolean hasTESR) { @Override public MachineBuilder blockProp(NonNullUnaryOperator blockProp) { for (var builder : builders) { + if (builder == null) continue; builder.blockProp(blockProp); } return this; @@ -111,6 +116,7 @@ public MachineBuilder blockProp(NonNullUnaryOperator itemProp(NonNullUnaryOperator itemProp) { for (var builder : builders) { + if (builder == null) continue; builder.itemProp(itemProp); } return this; @@ -119,6 +125,7 @@ public MachineBuilder itemProp(NonNullUnaryOperator itemProp @Override public MachineBuilder blockBuilder(Consumer> blockBuilder) { for (var builder : builders) { + if (builder == null) continue; builder.blockBuilder(blockBuilder); } return this; @@ -127,6 +134,7 @@ public MachineBuilder blockBuilder(Consumer> @Override public MachineBuilder itemBuilder(Consumer> itemBuilder) { for (var builder : builders) { + if (builder == null) continue; builder.itemBuilder(itemBuilder); } return this; @@ -135,15 +143,26 @@ public MachineBuilder itemBuilder(Consumer onBlockEntityRegister(NonNullConsumer> onBlockEntityRegister) { for (var builder : builders) { + if (builder == null) continue; builder.onBlockEntityRegister(onBlockEntityRegister); } return this; } @Override - public MachineBuilder recipeType(GTRecipeType recipeType) { + public MachineBuilder recipeType(GTRecipeType type) { for (var builder : builders) { - builder.recipeType(recipeType); + if (builder == null) continue; + return builder.recipeType(type); + } + return this; + } + + @Override + public MachineBuilder recipeTypes(GTRecipeType... recipeTypes) { + for (var builder : builders) { + if (builder == null) continue; + builder.recipeTypes(recipeTypes); } return this; } @@ -156,6 +175,7 @@ public MachineBuilder tier(int tier) { @Override public MachineBuilder paintingColor(int paintingColor) { for (var builder : builders) { + if (builder == null) continue; builder.paintingColor(paintingColor); } return this; @@ -164,6 +184,7 @@ public MachineBuilder paintingColor(int paintingColor) { @Override public MachineBuilder itemColor(BiFunction itemColor) { for (var builder : builders) { + if (builder == null) continue; builder.itemColor(itemColor); } return this; @@ -172,6 +193,7 @@ public MachineBuilder itemColor(BiFunction itemC @Override public MachineBuilder abilities(PartAbility... abilities) { for (var builder : builders) { + if (builder == null) continue; builder.abilities(abilities); } return this; @@ -179,6 +201,7 @@ public MachineBuilder abilities(PartAbility... abilities) { public MachineBuilder tooltips(Component... tooltips) { for (var builder : builders) { + if (builder == null) continue; builder.tooltips(tooltips); } return this; @@ -187,6 +210,7 @@ public MachineBuilder tooltips(Component... tooltips) { @Override public MachineBuilder tooltipBuilder(BiConsumer> tooltipBuilder) { for (var builder : builders) { + if (builder == null) continue; builder.tooltipBuilder(tooltipBuilder); } return this; @@ -195,6 +219,7 @@ public MachineBuilder tooltipBuilder(BiConsumer> t @Override public MachineBuilder recipeModifier(BiFunction recipeModifier) { for (var builder : builders) { + if (builder == null) continue; builder.recipeModifier(recipeModifier); } return this; @@ -203,6 +228,7 @@ public MachineBuilder recipeModifier(BiFunction alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { for (var builder : builders) { + if (builder == null) continue; builder.alwaysTryModifyRecipe(alwaysTryModifyRecipe); } return this; @@ -211,6 +237,7 @@ public MachineBuilder alwaysTryModifyRecipe(boolean alwaysTryModifyRecipe) { @Override public MachineBuilder appearance(Supplier appearance) { for (var builder : builders) { + if (builder == null) continue; builder.appearance(appearance); } return this; @@ -219,6 +246,7 @@ public MachineBuilder appearance(Supplier appearance) { @Override public MachineBuilder editableUI(@Nullable EditableMachineUI editableUI) { for (var builder : builders) { + if (builder == null) continue; builder.editableUI(editableUI); } return this; @@ -227,6 +255,7 @@ public MachineBuilder editableUI(@Nullable EditableMachineUI editableUI) { @Override public MachineBuilder langValue(String langValue) { for (var builder : builders) { + if (builder == null) continue; builder.langValue(langValue); } return this; @@ -235,6 +264,7 @@ public MachineBuilder langValue(String langValue) { @Override public MachineBuilder modelRenderer(Supplier model) { for (var builder : builders) { + if (builder == null) continue; builder.modelRenderer(model); } return this; @@ -248,6 +278,7 @@ public MachineBuilder defaultModelRenderer() { @Override public MachineBuilder overlayTieredHullRenderer(String name) { for (var builder : builders) { + if (builder == null) continue; builder.overlayTieredHullRenderer(name); } return this; @@ -256,6 +287,7 @@ public MachineBuilder overlayTieredHullRenderer(String name) { @Override public MachineBuilder overlaySteamHullRenderer(String name) { for (var builder : builders) { + if (builder == null) continue; builder.overlaySteamHullRenderer(name); } return this; @@ -264,6 +296,7 @@ public MachineBuilder overlaySteamHullRenderer(String name) { @Override public MachineBuilder workableTieredHullRenderer(ResourceLocation workableModel) { for (var builder : builders) { + if (builder == null) continue; builder.workableTieredHullRenderer(workableModel); } return this; @@ -272,6 +305,7 @@ public MachineBuilder workableTieredHullRenderer(ResourceLocation workableMod @Override public MachineBuilder workableSteamHullRenderer(boolean isHighPressure, ResourceLocation workableModel) { for (var builder : builders) { + if (builder == null) continue; builder.workableSteamHullRenderer(isHighPressure, workableModel); } return this; @@ -280,6 +314,7 @@ public MachineBuilder workableSteamHullRenderer(boolean isHighPressure, Resou @Override public MachineBuilder workableCasingRenderer(ResourceLocation baseCasing, ResourceLocation workableModel) { for (var builder : builders) { + if (builder == null) continue; builder.workableCasingRenderer(baseCasing, workableModel); } return this; @@ -288,6 +323,7 @@ public MachineBuilder workableCasingRenderer(ResourceLocation baseCasing, Res @Override public MachineBuilder workableCasingRenderer(ResourceLocation baseCasing, ResourceLocation workableModel, boolean tint) { for (var builder : builders) { + if (builder == null) continue; builder.workableCasingRenderer(baseCasing, workableModel, tint); } return this; @@ -296,6 +332,7 @@ public MachineBuilder workableCasingRenderer(ResourceLocation baseCasing, Res @Override public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLocation overlayModel, boolean tint) { for (var builder : builders) { + if (builder == null) continue; builder.sidedWorkableCasingRenderer(basePath, overlayModel, tint); } return this; @@ -303,6 +340,7 @@ public MachineBuilder sidedWorkableCasingRenderer(String basePath, ResourceLo public MachineBuilder tier(int tier, BuilderConsumer consumer) { for (var builder : builders) { + if (builder == null) continue; if (builder.tier() == tier) { consumer.accept(builder); } @@ -312,6 +350,7 @@ public MachineBuilder tier(int tier, BuilderConsumer consumer) { public MachineBuilder allTiers(TieredBuilderConsumer consumer) { for (var builder : builders) { + if (builder == null) continue; consumer.accept(builder.tier(), builder); } return this; @@ -330,6 +369,7 @@ public MachineBuilder tankScalingFunction(Function tankScalin Method method = builderClass.getDeclaredMethod("tankScalingFunction", Function.class); for (var builder : builders) { + if (builder == null) continue; method.invoke(builder, tankScalingFunction); } } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException ignored) { @@ -353,6 +393,7 @@ public Function getTankScalingFunction(B builder) { public MachineBuilder workableTooltip(GTRecipeType recipeType) { for (var builder : builders) { + if (builder == null) continue; int tier = builder.tier(); Function tankScalingFunction = getTankScalingFunction(builder); builder.tooltips(GTMachines.workableTiered(tier, GTValues.V[tier], GTValues.V[tier] * 64, recipeType, tankScalingFunction != null ? tankScalingFunction.apply(tier) : GTMachines.defaultTankSizeFunction.apply(tier), true)); @@ -382,6 +423,7 @@ public MachineBuilder recipeType(GTRecipeType recipeType, boolean applyWorkab public MachineBuilder isSource(boolean isSource) { if (KineticMachineBuilder.class.isAssignableFrom(builderClass)) { for (var builder : builders) { + if (builder == null) continue; ((KineticMachineBuilder) builder).isSource(isSource); } } @@ -391,6 +433,7 @@ public MachineBuilder isSource(boolean isSource) { @Override public D register() { for (var builder : builders) { + if (builder == null) continue; value = builder.register(); } return value; diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/SimpleMachineBuilder.java b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/SimpleMachineBuilder.java index 9ba9798e91..cfb167ab0c 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/SimpleMachineBuilder.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/kjs/builders/machine/SimpleMachineBuilder.java @@ -55,12 +55,11 @@ public SimpleMachineBuilder tier(int tier) { private static SimpleMachineBuilder[] tieredMachines(String name, BiConsumer builderConsumer, Integer... tiers) { - SimpleMachineBuilder[] builders = new SimpleMachineBuilder[tiers.length]; - for (int i = 0; i < tiers.length; i++) { - int tier = tiers[i]; + SimpleMachineBuilder[] builders = new SimpleMachineBuilder[GTValues.TIER_COUNT]; + for (int tier : tiers) { SimpleMachineBuilder register = new SimpleMachineBuilder(GTValues.VN[tier].toLowerCase(Locale.ROOT) + "_" + name, holder -> new SimpleTieredMachine(holder, tier, defaultTankSizeFunction)).tier(tier); builderConsumer.accept(register, tier); - builders[i] = register; + builders[tier] = register; } return builders; } diff --git a/common/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeTypeDisplayCategory.java b/common/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeTypeDisplayCategory.java index f3568b1758..9bc57ca18d 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeTypeDisplayCategory.java +++ b/common/src/main/java/com/gregtechceu/gtceu/integration/rei/recipe/GTRecipeTypeDisplayCategory.java @@ -75,8 +75,12 @@ public static void registerDisplays(DisplayRegistry registry) { public static void registerWorkStations(CategoryRegistry registry) { for (GTRecipeType gtRecipeType : GTRegistries.RECIPE_TYPES) { for (MachineDefinition machine : GTRegistries.MACHINES) { - if (machine.getRecipeType() == gtRecipeType) { - registry.addWorkstations(GTRecipeTypeDisplayCategory.CATEGORIES.apply(gtRecipeType), EntryStacks.of(machine.asStack())); + if (machine.getRecipeTypes() != null) { + for (GTRecipeType type : machine.getRecipeTypes()){ + if (type == gtRecipeType) { + registry.addWorkstations(GTRecipeTypeDisplayCategory.CATEGORIES.apply(gtRecipeType), EntryStacks.of(machine.asStack())); + } + } } } } diff --git a/common/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java b/common/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java new file mode 100644 index 0000000000..4a28460e27 --- /dev/null +++ b/common/src/main/java/com/gregtechceu/gtceu/syncdata/GTRecipeTypeAccessor.java @@ -0,0 +1,37 @@ +package com.gregtechceu.gtceu.syncdata; + +import com.gregtechceu.gtceu.api.recipe.GTRecipeType; +import com.gregtechceu.gtceu.api.registry.GTRegistries; +import com.lowdragmc.lowdraglib.syncdata.AccessorOp; +import com.lowdragmc.lowdraglib.syncdata.accessor.CustomObjectAccessor; +import com.lowdragmc.lowdraglib.syncdata.payload.FriendlyBufPayload; +import com.lowdragmc.lowdraglib.syncdata.payload.ITypedPayload; +import io.netty.buffer.Unpooled; +import net.minecraft.network.FriendlyByteBuf; + +/** + * @author Screret + * @implNote GTRecipeTypeAccessor + */ +public class GTRecipeTypeAccessor extends CustomObjectAccessor { + + public GTRecipeTypeAccessor() { + super(GTRecipeType.class, true); + } + + @Override + public ITypedPayload serialize(AccessorOp accessorOp, GTRecipeType recipeType) { + FriendlyByteBuf serializedHolder = new FriendlyByteBuf(Unpooled.buffer()); + serializedHolder.writeResourceLocation(recipeType.registryName); + return FriendlyBufPayload.of(serializedHolder); + } + + @Override + public GTRecipeType deserialize(AccessorOp accessorOp, ITypedPayload payload) { + if (payload instanceof FriendlyBufPayload buffer) { + var id = buffer.getPayload().readResourceLocation(); + return GTRegistries.RECIPE_TYPES.get(id); + } + return null; + } +} diff --git a/common/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java b/common/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java index 42d4dfe757..d8564b5e61 100644 --- a/common/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java +++ b/common/src/main/java/com/gregtechceu/gtceu/utils/GTUtil.java @@ -1,6 +1,9 @@ package com.gregtechceu.gtceu.utils; import com.gregtechceu.gtceu.api.GTValues; +import com.gregtechceu.gtceu.api.data.chemical.material.Material; +import com.gregtechceu.gtceu.api.data.chemical.material.properties.PropertyKey; +import com.gregtechceu.gtceu.api.data.tag.TagPrefix; import com.lowdragmc.lowdraglib.LDLib; import com.lowdragmc.lowdraglib.side.fluid.FluidStack; import com.mojang.blaze3d.platform.InputConstants; @@ -13,8 +16,10 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.material.Fluid; import org.lwjgl.glfw.GLFW; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.awt.*; import java.lang.reflect.ParameterizedType; @@ -252,4 +257,17 @@ public static long getPumpBiomeModifier(Holder biome) { throw new AssertionError(); } + /** + * @param material the material to use + * @return the correct "molten" fluid for a material + */ + @Nullable + public static Fluid getMoltenFluid(@Nonnull Material material) { + if (material.hasProperty(PropertyKey.ALLOY_BLAST)) + return material.getProperty(PropertyKey.ALLOY_BLAST).getFluid(); + if (!TagPrefix.ingotHot.doGenerateItem(material) && material.hasProperty(PropertyKey.FLUID)) + return material.getProperty(PropertyKey.FLUID).getFluid(); + return null; + } + } diff --git a/common/src/main/resources/assets/gtceu/models/item/material_sets/lignite/raw_ore.json b/common/src/main/resources/assets/gtceu/models/item/material_sets/lignite/raw_ore.json deleted file mode 100644 index 2a4468ee66..0000000000 --- a/common/src/main/resources/assets/gtceu/models/item/material_sets/lignite/raw_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { - "layer0": "gtceu:item/material_sets/lignite/raw_ore" - } -} diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/atomic_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/atomic_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..6833faf0dec33434d2c727bb3f534bbe8b4999f8 GIT binary patch literal 6659 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 K$-bFOSN$8DyODwb literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/blank_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/blank_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..30799b472da84e23875ebd4d528a78a399ec524e GIT binary patch literal 6059 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 GlK3y1&W^_b literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/corrosion_proof_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/corrosion_proof_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c900836c0ceee835a91df3e4d0dd2b3d0f3a86 GIT binary patch literal 6754 zcmeHMc~n!^*1v%;Dky?bfwnPKi~=&gb1shWy|v!*t*`%iSU2b9oV|bNw|{$|lY18# z0sdYl#@5CNf|&Sty9a`PCcF&w!RM#_lR^a1D@qOu(*_C?2r9KwDvL!4+9VZ9KoezB z1W9Zz3R!)|e&O`7nAzbv`x70~w;Wr%w5IPC|4NfnTZq5n(V`Sag?H`+yVz&t6P>Ly zKL4iHx=n1%#qZd2)j_jmU*||<|G|@o%SSIA?`0`&;KkmmgU`Q7+VkL}bipXMn~>Mh zP@fSL{URp!faAuCd)C~YTd=}wsqV4acg~Gpj-OvfS9g>?+v)1xD_>vqtVS^-zpZ1w zx@SvnWwF>sTvKAc+GjGQF?8aapY&7dGj(+OuYOmJg3fR$ID^I9isM3>rR;`m{QC%}(VU+s42q^FIF* zCT$a4oTRusbM>R1^^b#ANG1XjKTo?{cJqFUU#i0T!eMYB~DBY?TAr-Ub zlmPh`)Kfd{?}+Rf4Y3~iQ6+Th&)ts;S03{pDhoaCUEh1%ETMH>SZlP7PgY0HntMMN zY7Q(B%(}9&U|V)iZJM-+Um5IsZq8jpzpRHlzt7#+PjilH8ZERV9ySfB*^z#8Uz%N= zvm#92vrri@jt?vT{r88#6*)&K3u8-~t}d}USl|^&%dlKB@N@C;f~Ir2%f77pq;~IS zoQ*eMPhycZ&usH@LLni}vfAn+LU-w0pLinfaSm^$O}G0YzdQZbo}sg2uK4XWRGhKc z`y@MkW3FFaK<}d?Lr%j_Gk^aDZ}eTC>vrLfZL{poKNWAME-=?D@!9X^lxDHYm;3d# z@VZ}8J&&{=&^YM1OygUXMU~_n*g-D6_oP@=Wgm4XGT+syA$X13E@nfdU&{g$y+2%c zkj~!wO~B66Uby?<&)o^<`=fYyjrkXzr97=4xUC_lpA~c*>{wIcd6@a_@?B}YCEMyh zYS7yi|HvRFdgsSmdJG#YKKjy;^Fu~<%cXk{r?;6Mzf9jhur=FrE0yw8A$riR`YDUP ztasC&*RL>=S|)$Xo^yMAZ)tH^YITH7f%}o2MKs%-2$$z^|C_eTMeCayQG4dWwuTEY zY=_gAGTUnZG~AcMpO?Iru}x)r-#X3NB-JKmdjHu7dHXGMY{i z=HqiF&D$K?*IRNsx0iL7E(fEF(SqRrOZmjkB1B}mRWZ`j^L?p)eeFf=fxp!s$?p2< zS*7fnz5SOwukcVZ`jA15%d!*thX1hCQ66=5fC?0)vkvdi9%C)3UfhPJoNGRa~} z8cUlKvh)0}su_%Z7D43;bWJaH{T7#|&k`8#cp4tl${B+xI=tua^-@>9WMFWP3wB>=t;HL zI&UAp*_10?5Rtgy>hfWpO=H=YR)xdW@rnFjE$5yIsIq(VsNJ*qhxz1ALDHh9&-O1k zcc&897~I^P70Ge@dwo3n(2a#r>E)S)qIuS#rJGy7quZPs)izW#2mcTlhtJ#{@5awA z+Wyq*mu%O7B|atzC%*ExH#%ByvBj^sqr4Fi6LfpKpdkU{_EQ_x~oS|4ppSG=|tEc764CfL3Q@J|l zN7h%<$X_Lz#-?sMn%!=DY(}J@{>F}&ts_fS?9>&LwH605Y1w-cJj%*_Za8MrB(> z1dLj(IS zZ^#*~+Tir-<~oPElS^+5oo->Q*!+;L%KvG+L7y_}lYFtrWB29>`NK!&ix#C+JTavV zNNT?C^mRGpdJHK$TF-v6`O@l~gzFteXZPGPAh<=@DK~F*i!SrN)8W+pti7}A0ljEq zBNB2)eb{eB1`k0@SIfZfXqaF*Ppp(X2qj7p>X0Z`f!|pK;X5a)gyQw6mLNi7WC}-O z_l0sIK_+n|hB5^dfyxbCEAviPqpOnrgT%?}#as!|*~yrn$O8a!R4XJT%3~E8UZNur z!{vc{I7}uIFca;1M`D;DfZ(Q7qXdQn!+}EbNR-9Xh)%`?zFH#X1-g5_gaF?hiEFi5 z6^~3#NJwxn;C{&TD4ivInPJY`%qxFafATJ61TMtbTcpM=I zq8eqKT8w(cqYCZ3w;?3r*Z!(Fbu1Q+L`+6wQ8_TxfK{pQEa~MV2zc!QC5Vy9RhSnL z`yETIO!`KwceueBES$HA0Qc9p?^wTz9Ww@20s+rmDUO5meB2$0aDARcDV9li*sVyy zVbMi&HVI`iXe0)M!Xj~n94Se{<#5;%wum7Vao&RRQE0S6g&2iU0NgJkHV1X_Xe#Iz!Oh9zpzyId01qA&{-8kIz0l4z_T zDxJrm^Jr`mg$)HG|MelV#UciZa)cy_hyyl^R73|MN+=`=okpXuC|sJ9%6*sge;Fd3 zM4^%XwI*JM$S1>N@l{g!R*O0Uq=c!26&$nsOSvOX`dK zyxfsV_?L6BAQOxjsl3BA2;wjgUbw`3=Xfw^p!E@W7_{kFn9s$fH!fCyp*dQQFs++X z4qrSF?0FcK5E5kCwFLM)9JEVGtY`Cco ztUh%Qdj!$Z(Lr=|b&-jQ3G9A!bPO3C9YyfaIWW)%86JLt^!E=S`uh5am6ZkZ{P_@Y z&_Tw>Cy=3`A;ipVCSqu4fb{hZ0NY_?aBv8ztgJFL8(@9yryLWI;IGZ+qB z9Mb@<3J3J{^^nfaXCOWU3;=>ap}M+yu(wxK zILv}BR#mX??d^N5GNcK!0DCATtjbsEgSO9~k6=I;gMoqP*s5>@>HsN1XUGCNO^r`r z^#V&90(N)zV&giH229tLD_1f4AY)kkMn(o08>kNy4^oG^Krvw{!;*&$50!>HjYeC7 zn3zn*;(`+`Ep4y^b2w}siVXJ(+&AF;4$B&3gX8m=lMofg1>=MbPE6$)rV8f!RS#}K dgSIdXc-MhzI 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 OJumhN_RjH)Uj8reS0AbX literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/industrial_steam_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/industrial_steam_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..248e72511938170accf94de1246372761c40aed2 GIT binary patch literal 7044 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 N)6LuUi1U)9e*^JA9x?y` literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/large_scale_assembling_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/large_scale_assembling_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..75f3058bfea8ab7afcfb2b652de95878da920a92 GIT binary patch literal 707 zcmV;!0zCbRP)}Zb@oM-R+*~&I}AVi@b)xU@!z?@Wz`!7GC%X@=6J05yF7M;77^E;KdL; zNl%Yj|0v%=ezZ(*ROx^T5G~E0zfGRfcGAy6yAFPf6Pfu^acs)7$6{v-&)h`YPb zynp`(tJM?YctKenac-dNT1151?)pqMQ4~41x4+?>!x%%LlwueL-n@BB7>0-lkB@tz zC}y|2CXN%l_biud4u?I~_B?<7Bg0@Bh5>QTv0SdPwkOM0hzM6#H>7Ds949SST zfc&3&)6{tHdHVDR0Gt~r%OlqI1VMn-0zeeS)b)wNdr#oKr|Vk6Fk-vC!uyGfi!A_M z*O2E2#?b*#mPfkobZ{Q8QVJ16maUkkiS71^x~|R_bO6+Kg)xTpdV?|H{723T0T&lr zrfDRKV#@M(c5dkV6Pbvhl$v#tBt=9{3*hqdJB%^3ZA07ER8>h;6=d0pBuTNhrzmnn z3~{^wAdVL}=MWL0stU9g4u}8dl);l_OQvbU+8(Wiu50Gki=sU#0345xv-dPjBuPq= zWarRM8^>{EwR(bc4r_b%`}X0zF{UT=uw1#R09 zh9S4Nzt1Yt_Z>l?dG_ojo6RN84FG)l^!MCCt@TWBclVhWFMeXVTr-Xi_3G8n-WY?3 pL2EtZep}~nYYiYGSleT*0vbd>!Kr$aTp&UQl0c$ZisFP*tvGAd zT7f#CqBx_16VzGJinM4|5J8lO6Cl$&JAmSQZ>_g{>-C?9b#l(#XYX%+=iBGrn=H~o zg2(o>>~D!-SkJ%!zfd&VK<{RbJ_o*TBQVT-;N0*?T_~Zasx_)8c^paA%~6w7(jbq* zFhgl}#I!XpT&$X-`%aBCc__KHdU;u|fr(m?gUgcNv+rGQXR3%Mz%`L1= zTa~pS>mRzcJKsGoPOe%wVy5fuZjShkqg587AEhgc4%F|ly*Q#uD$m{%eZXZ-Yu-3V z-(BT(&+lj2akeeWo{)cd<>;ge4_C_`H>D-DNkg4o&NvB|&#W}~S6$k!C6AJMTUhEd zg39QzoAalIq}kZWCy%{2fcdb*!=Xjpa{bVVt#6X7l5^g5D-Ro3nU;KTua$Ld?<42G zyFL4f{Cj!ULDy2Jmkp1OMei z_QZnZ1y<^?%JM_8!PHeEUb)lu$e5GYif0VTxmGg9;qt=YVun}GeDG9n@y<(=R&=?* zGQKWEwDX|p`?0CStc52R^moZ`YMtBjTPFvrK2Zgf<)^Q1er)+>=@s!#Cv)>$x97un zKVdcn38R_i`6(;QDgJ(IH}}P7j|u3 zCaCK@IH>oJBZg=bhdvzSJmGNp)^YQT7i{WrhVBq@`QnCC&3*S9GREzX+aEe;dv)xu zIhn(G_ii6QvDj3Vli`9N(-ij{R@Q2*&nw3DXT~kLbMpC_B?FS!Gv>amIGCB6e5%bP zcGtc-*=(!vOL&oCrC~RRx)N&hOC^1}O_n)GB6rIkj(^UB+hC3gN_}bg%ncri3{^BjR{kuIJ zQ2J{1z^o&Tg**4Yz_f4g_uOO`qmAr2v*73Q+Xcl=2krM?eSEKeliVz(Y-(1o{_OOP zN7!4l>@wrB%yyO^U++XeIdS3dn!UPSX$K5Jm+QCvvGAyb(BI87k9Hiao4PkSq(b-p zS%i(3@8M;&X5FrxTU~E4@8HbkcV`g%Y9~CJ$nCW-<$+JrC*`z%HVLp1-deA#ANY+LCOXGcb~`mO=pce^LmQv^=^6i z$>W%2TiO72Q^cZC0WTt{IY)=77*jSzm|ISq{PQH6E7dJH`$6NR0qZK{>|V!66{OUbXf7+#T7LTtJitevoGoG3S-19UaG&UMNj(N;x-TuQ+3X@Rm!f=)@vL(A)Z@l?#P# zOZqJr2#-H%TwS`a_o=e`cx@=#@y2HHJ=KUofeYFG0mIUv9vLd9FeJhZ|lN9r?*dQ{DE!r-GQ~6?-ZAw~bG(6*cCiX5V}D)AZBF zRr5+)?4Fd~kmoZR_SQPj{$+QYnmD^H`1;e9w_MFD>b}rea>JX&-v_MIPY$X%+&Frh zo7>`-!Fy^_SKQy+B6#+ zqhrE1MkQRt#K*4bXmnD$H}qLwil5aiyVaY>s~Mqz4XX|$nKsP*x?)OeWvkg zgEGf>h#e>LetNZNU*Ygd{QA_4OH=F18CI2V*OB{+9la^bBYiA;+uaEnW9Ggyw|ZA( zKymV)g`;ZThn0sGO)_^br0ls#J(c{AQ4M9;lQwRCv*uj+ED6=NWd$Z5aSl;$q{EC!< zX*=}So@XEVq1b}zJ7b6{CDnIUUcmk5UbQc)YF<3#WVa?`lkaP`jGK@q!Z7P;a`fho z6pt54RSG&GQ%Oj=L7_%(b`0|vWl$5+SW-uokkN9bC$09>SsGO?^Q1-a#7wc;myD4I z%+-)#bA!XBb7Q4K8Eur8rH4U;02HK-pc)i$O0CG?Ni*V#&>YMR8rA5ci}j>MibJTr zDh)~H(z$dd?r)GMvT0tHR1b|TN)+lhrUL?9dD3EZI<<(w(ChVdJ%_H+L^D`Ip^(93 zGuUh#dEnYPN*!Uqm0D+jXvgp)wNi~-t&^*iRKO%8ssx=UjfU2#o%|GPvG@bLQrn>d z(t}|j)C?A#$xtX5T_dzQ|3n1RLFhk5Xv5JLAVw&uRV8Soq<|?&)0GGc|A706 zcjw-X&d5tF7Wt{92|zE<&yxoEMKYCCE)yB25}ClABjNCIlE-D^TrSfc7ZQRfTqYC< z_%gnPOGpG=paPXz9ifzx0ENKma)iU>@;DL+A;5X=sG?jJ>5fbId?C(cl2J0DkWKPA zT_GlD@N9IlATcVi+;7k`yZ9yRB`dBe>^ z^=L17fLx36&oP?X@2D^`zWu8GGEQ#1m8ewXO(7zr?OV_iiKNWP6JfP4Nn;3QG>M)b z9mloPF8>clLCE3rctQyicaM_raIS>I#Dx;B0GGNm2@Z$J=d(Efg059X>GXt#^o~Y4 zBCXKzG-^d1YAn>SPr2x0NT>pn&BB>Hob4XY;)u8$5u1-Q`5+kM@82RfiZ9?1QG7g# zCz0V?lFP>l9$Sh_ghB~RB4m+Ke95Pz|HmzIa3&l7cqRlLXQE?^9t?Oab{5rx@o!~s zcj)pQMbfm}(DNBR?inAR_Z^zSll560TzsU7PuFq27vz))2t}k+Z zmI9yU{N;50-{i9V_=}NLqAz-S^n38Vu+9Ze5bR-Y zj=gVd!``88hOTWX6s!TwAqWB*(cB8z%+cDr)>fl0*ovE*F$!d^MaElAO;~s2017}b zWN1PiKp+?zuz|H3$QOVimI9PpkdcE}e1!mj(OU#)itIg6ATWZ~4b35YGxBvYH8m!H zB&L7_i?CpUM#yE29AFN?Z(6_&GmfxDpbpGnI{_EFS8vue0TKi{*h(OH(^)|E!ibDoypbIp(23}Al7{RZdPsbK|pasYREFjBkBpht1 zlNnS78t4Ht&;~d{hiVxq0}BX%K*$I{-H;8Ofk{2;-~&QKgVC52P#}PUy0QKpK|tQP zEi}TB?Mz_Ij(j?`FfyozG9f2uus?8u;I5)UHeduJFnWVxpiy7|$2;hFc8Ukv01(gw zD$>2o={Vu2OK=V8f+8nP=#7#cSR@F$OZwL3`Msy slm?JHO9T6d4%b~rbZKk=XuO>fz=d<>V`jfgs)B_;|6srUKC>456Y_}X*8l(j literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/nonconducting_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/nonconducting_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1927f34dcbe04c6f7504b74d031ad75e8ed120 GIT binary patch literal 6604 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/reaction_safe_mixing_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/reaction_safe_mixing_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..a3bb39f1322837b3f488a9d09040fb9c8bf01688 GIT binary patch literal 6949 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 TSzH(4g!oMI_dYUl{?h*famiZF literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/secure_maceration_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/secure_maceration_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5b05c377937f2fd4a2a3ad873fedd6c6f9fa27 GIT binary patch literal 6853 zcmeHKcUV)|wm%68AOeDl6*LpYGI&U@f^;bg(o{fwa#Dbdkc1SfB6gWk$5EK8sMtnv zR2W5_5y66h*c-|?Dn$hgiVZb{UaTns6+YqEsp3WQkIWCS56|NYi9-2$FWY zXy&|iZ^qg7Tp8bK8Bku8oOa7zy~N!(hN3JjJGru8BkJ!kL>wsDO_COyjM`16rb@^1 zSKkC)WW>y$-?_1`Q1oZv<+&wU#@5yKTmC#M=r_d2wrJKL8?`;B`MO`;MsK-VaMH$U z8u|E3w{d_KpqC$A7Ndl+h_1edW)xDu!>+ zh?50LL5!WW#0A8H1*8n#<=W7w?1DuLP8Kpn_b>c(s7t$MX0Ckx7MDZlgN9W(?Ps1S z@=whQ&9SqS&G4@tLH9VAPS;gF;$0|Fs^*GcTg>~>vq8sq*Hs=p-*jM1*vO;2B5pxv zO|sRUt65EJMjGEtXiLjlUBWF ze6NG%OkQ#h`ny*|Jy#Or=P_W3ev_N_TTLzJ&SaZ!GEVTfOXbV!9S5$>E%h4Q+;jBt z!{(BwA(S7uoMxx3Q3=N`)y^4pu>MxahVvvb+o7W$t^H2UTX$8?+4B`v$*)3%I}VU^ z{!3)BOXXzF)aO}xn?`S>~>y9?y+HruhPlRT0oB- zRqAPP@BGl0L?M$LmR`QBCYuc;rjpJzlv=9RI=x(-+W*q8j%hYK_X-uWmDik=>*o-n z8!R4=O<%M;NLjJMP88tfZR>oD&!n9h=%4O-&Uvf%_v4)z;|r-F<)oZ-zN4p{+w62c z_3YW&34%xAO@~jZD(;X61pPXDP6y{kR775WFlzH!c4FC}S>Ih(xojzW8t`&NX6tn| zZSb76*IRy5R=dnmwd}jQ_I8_m;fje3=kBT=l{wbs)+zpMj9s0}DVVxC=gEQP*K&XF zGpuE__2pATGKu&4>|eyN%v8oLD}PjRx5-*>UqYoXwqCM1WC?@*n08-TdoN@o%k!1# z^rk>&`h$fRHV?gFSXcU@+)x!WvdnkWsv@@IwwM*q%EmkVeEP_3m+;(VaZ+n@$TYJK@UMGj|5<_PJVjc+~BRKCwrNbH|QLT)5LC=+$ATQ{R_eT*Vf# zwxpPq44U>(9M+G&uvx(TuJw2O*R7me8^%n>RqnvHkwG?gPl4wK_`r-Pu0HVS2I4 zf!j5Y35@)bu~(Om�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 ZL9^W~aGTA^+C3UB1^R{f7JJ7o{x?V68<+q9 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/shock_proof_cutting_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/shock_proof_cutting_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..eda713b45094ecd5dffaabe40d5a6f6ecea0187b GIT binary patch literal 6948 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/sifter_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/sifter_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..b0483c7adb0a7b862828adf46cf075dff7d6e8e5 GIT binary patch literal 6928 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/stress_proof_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/stress_proof_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..a4046ab2043b59b3f3167077dc4c2d989c23c17f GIT binary patch literal 563 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/watertight_casing.png b/common/src/main/resources/assets/gtceu/textures/block/casings/gcym/watertight_casing.png new file mode 100644 index 0000000000000000000000000000000000000000..b16d77724fe8340a9803a54e42f39b2647968e60 GIT binary patch literal 6836 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 K{~_Ob-~AgMybvS+ literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/bottom.png b/common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..ba1a5782de70821a86fa88e5002b8547c35105a5 GIT binary patch literal 374 zcmV-+0g3*JP)r-f{60o&Mv+Vaj=UR-rEE@a6ojYgdA6V)lQLAP z%iv8CM5##O4_#p&Lh(vX8d|&EZX-DDTjm8_rOVS(m)1r2aVn(+offp~_K3bgmX7xR zMf-$4AM<@Q+oS}YNx^LP{a^NHN)a;jUU&BGbdl;JyGpzD+AVc9J8iB6 z{6`2CGB~{t!7J=z%zlS5UEWi#HyckalYWs>NI^`H&5N>gZMjs1M(lr U7!EEo-v9sr07*qoM6N<$f=ghi8~^|S literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/side.png b/common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/side.png new file mode 100644 index 0000000000000000000000000000000000000000..ba1a5782de70821a86fa88e5002b8547c35105a5 GIT binary patch literal 374 zcmV-+0g3*JP)r-f{60o&Mv+Vaj=UR-rEE@a6ojYgdA6V)lQLAP z%iv8CM5##O4_#p&Lh(vX8d|&EZX-DDTjm8_rOVS(m)1r2aVn(+offp~_K3bgmX7xR zMf-$4AM<@Q+oS}YNx^LP{a^NHN)a;jUU&BGbdl;JyGpzD+AVc9J8iB6 z{6`2CGB~{t!7J=z%zlS5UEWi#HyckalYWs>NI^`H&5N>gZMjs1M(lr U7!EEo-v9sr07*qoM6N<$f=ghi8~^|S literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/top.png b/common/src/main/resources/assets/gtceu/textures/block/casings/slicing_blades/top.png new file mode 100644 index 0000000000000000000000000000000000000000..8e8fcc9aeb489729022e6322ff382411730f9ae4 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GGLLkg|>2BR0pdfpR zr>`sfV^%IsHk0PGBPu{4wj^(N7l!{JxM1({$v}||PZ!4!3;(s34Y>{ka4=t(pewg% zul=9Ts>#+@gj@XlWmuFy&G{U2{qL4bW+qPBa}!jy7+J5J>S-Xg#fWoDuiLF-IU2pY zn=b59mUq3(JPiw+u3z@Qgtbnz7207wNd{dAyY=^>O_D{+UxcDJ)h6tT0fu9 z@BMz?>(1M89GEIqMP=gdg!|n)Z&gWFaU6!4vD*C~9>LC=yVE1cOlBr##&MlEtJrzV zn&*zu@!rXre5+795LI^G4pmfznMqaB-RV8<-g(O^G7B|BL|N?-M09rEB7#1~In_Ba zTf;hg=dG%!%Jah>tTr=Lg`GDu!{nN377@XSe)rC=|6pRKh^}{@L^#n0J8$mi)xO^( z^NWZg@*wlP>dxDold58j!5D+pW`>Bc^Cl{Y2w6#05j_}V+`aQQb5fa@81i_qdctH literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/electrolytic_cell.png b/common/src/main/resources/assets/gtceu/textures/block/electrolytic_cell.png new file mode 100644 index 0000000000000000000000000000000000000000..5e9e3e96c11ac603db1c1b0e4b6710d31a3b3dde GIT binary patch literal 5415 zcmeHKXH-+!77l{+qJW?jiJ>DQm5>A?CDaijB_b%6o8%@0NHGZzn2~111~P)8jtD9u z2r8BV0TBm$h@gz(AUGCKDT*)*O;GXO1Z?ZgAJ=;G&t%=?-hKA|_TJywXPPG4?7);C0*E1OUpC`Lim7!m=kq-b2rgT1$9wrF};^9J(fX$5o;gSR)2nVHHHVh{1 zJh^JkYJuCEaxZv5{GNw9Yh1pl`FhbfmAuC&1m8(BU^)G}Zg0aJsIpJ~Z60 z-e<^B+nD!U$$fO=iTAY5!HHq&iY{J6soIUqx_c(B4La{hw5b+dOW#43@81U>Jhm<{ z9e=@yBw|hHQ*C|=G})$Uria%&!Ccenqt=Uz8I$Hz>X97o3v}b{A3eatPx2HCR++q8 z*b~(l`DaICK6A>e$-=)i$*Ee$onSREQE934+?Mughg%z&{>^}=CIicgNc`j=f>DFd2eWu+c=}EP#m);$xFb!`eZt2VjXek}g9VJxsm3h@2 zZC5z3IsIJT{8R7}TyTEh8K)z;2uxoT>vUj&cWg4dDJ8PfPJ7-#T;I#hj5$8HkL}<6 z+S*au>JUR|H@lUOZqm?r%|CuSYQpNT2-RYLw0GFwuR`9(xkuON@3?p-Ou4W|=s&2&b&fvy9tg6~9x*+gY64a9DkO zkJEH*^J&^6RBqMCc>U`Bv-#DyI69zHOeng#`f1+WkzhgEs`brUb0uJc~~_23&<=0@%AYcJ@hwb-@-+%HlKDAk2B~VOH3&OQk=QwPi4lx*x zU>QV&u1XvDGqsjuo;{`B;TvaqVw5`;Mr^MxShMFU!U?O@@{!CbZzzN^)C?FqbW9bJx0BjUm4$T8BuUDsck7Ovs=%iKJfjSm$fP-Nfn7{ zWs~=hvz@V|(4af{6%FBqKTNk)w;k}M?cp*s%3LI=eQowPvvUpIr$vNl@H%dCMrS>O|A*1lp=EYk4?k6I>M~cKPUTt_e}Fk}Z%ujI z+mir;DQw|Vseyh}>c{2;#!E;&S-^k`ycj~H-D!`Nd#{%xp?n`*+gbF~rMyzJf6ROf>Ffm`;dmXd7^bT69m zy3B;{bu0Bn3$8VuPtnCUmYKcNNs5mKt#8zv*q|Soyzxi|06(YEX18}_(*W_3-n9>! z5&c@pr`7$Fv(|AVyUdTp8&_2DBbycrD-}mw7nR#qW#tuSw#*sgj0SLz4H@)Bj3kx} zJsVZ<4PG^D{PgL(g*Su76L-bO<0r<4aubtXGiyW_DA@u!w83IXCa^`3L;V>5t31;`1p8-c$|Yk#6e+5BoYdZMPac>NCPQO z;7b50k}o!wLCj!yf?}qKE0k~re7Fn~UpB~M&#*y83<(l3HK}QkGad0 zA+3M_vZsIC$j`hE{iO`#go_|o;&B)vlHtUF9!Y3NfB@of zL>%@DC_lbf0`Qrj3lKpM?9Kv_hhY#vG>Q2& zx>&%L!~-JGodabGWdjwEJR7);oJ!lTwc{f}8Bb^|1__k_21mzY$T%l54v$1TlF?`c zYBph%Y*l~E*ah`JoVdspzGwrG-HZ%sFHpBaeQH;;oXKeX7eBLe@h^ISpuao$CVs!u z^_{M7V&I#UzgO3Hy1t2lZ&LnVUH><_)IT41KtA*q6b~I|8YY^TKt~~E#&RD|n2PM% z>igUelBfxN!^JR|hOX>VxceyS9VAqd_yu^WywK2|V~H^LGJg!6cisIw-RZc6(G$Vkh}CD^=At@6!cdWZg|d^P-=<@JAWNqDtyqNQySzT$GGhS|g9(#&Y#- zTsHq%P`Y68gE4k_^OB{mo-UoH7v`?sAu?R`e&-5v?!3J9c{Z1AEP`Sw4<~o4s0AHU dijo|uPqw=?6lSn;m;~_)^Yfy4mU(PQ`!6&WNZ$Ye literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/fluids/fluid.molten.autogenerated.png b/common/src/main/resources/assets/gtceu/textures/block/fluids/fluid.molten.autogenerated.png new file mode 100644 index 0000000000000000000000000000000000000000..85c70f67658db23e241c0442e4a0fe484c680e1e GIT binary patch literal 6098 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 Y0F6O$_U4$7?f?J)07*qoM6N<$g7??-rT_o{ literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/fluids/fluid.molten.autogenerated.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/fluids/fluid.molten.autogenerated.png.mcmeta new file mode 100644 index 0000000000..7ceb363941 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/fluids/fluid.molten.autogenerated.png.mcmeta @@ -0,0 +1,45 @@ +{ + "animation": { + "frametime": 2, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/heat_vent.png b/common/src/main/resources/assets/gtceu/textures/block/heat_vent.png new file mode 100644 index 0000000000000000000000000000000000000000..5efe551526d70976ea4af33c5fed4aed66622ddf GIT binary patch literal 5586 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 e;^qkqsue8XCgObB2Y!W6VRSne+d^x@Tj8z literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..c7aa7e09fe --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":8 + } +} diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..eb94b3afd07a4d96e0dbce70c49dcfd2c63ed7d4 GIT binary patch literal 5571 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 OMz9^+SS5BpZTb(Fm~j^X literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_emissive.png.mcmeta new file mode 100644 index 0000000000..c7aa7e09fe --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk1/overlay_front_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":8 + } +} diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front.png b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front.png new file mode 100644 index 0000000000000000000000000000000000000000..b86ef643595c24ee200310ac653501e065d082ae GIT binary patch literal 990 zcmV<410np0P)EX>4Tx04R}tkv&MmP!xqvQ>CI62Rn!;WT;LSL`5963Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgb8}L3krMAq3N2!MaCsl+y>qzlK0v6KnPzp21DbA| zsYG1NWLL$|D|#@DAXPwSmN6$uN%*d>dj$A?7vov}_x@bHYR+OnKqQ`JhG`RT5KnK~ z2Iqa^2rJ4e@j3CBNevP|a$WKGjdQ_efoDd{bZVYBLM#^ASZQNcG&SNW;;5?WlrLmF zRyl8R*2-1Z?32GRoYPm9xlT2N1QxLb2_h6!Q9>CuVzld|SV+-%+{ZuY`XzEH)%)c|G7 ziVYIo%%bl-kJ5RCf`rt>X=$6rkc7n~qg;ETR1}!AvMm4qvE}&7Iq;`Ll!NJXnmdkj zk|>U2=JUA#u*yltaqxW~DJ4mgu-Rx zVHjAJg_M$Swhf~Z_r8DFKonvj1X4;|*JU^y^3ip19EZVRK$@m)gE)?BUszwHX-XW& zN7wyNaf3XFq6noFkLxw;_xKeabVZ8?s^Ech4IUgN(r@8G#?u?`;(tc&{K ztJa`3#<@Hw>jUdt9(+*>qlX7a4Z<*lOLUF#RHV$b4R}*PUV4fpguTi z@OSnLHG{4!RUUl5yJIq$^dA8rD>535e!(vKh1b8@FSxGD{lCeBpFH#G2gN#t-v9sr M07*qoM6N<$f;^Ye2><{9 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front.png.mcmeta new file mode 100644 index 0000000000..c7aa7e09fe --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":8 + } +} diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..459dfe1b7ad9595dd48273a49f992cad227836d5 GIT binary patch literal 849 zcmV-X1FrmuP)EX>4Tx04R}tkv&MmP!xqvQ>CI62Rn!;WT;LSL`5963Pq?8YK2xEOkVm2O&XFE z7e~Rh;NZ_<)xpJCR|i)?5c~mgb8}L3krMAq3N2!MaCsl+y>qzlK0v6KnPzp21DbA| zsYG1NWLL$|D|#@DAXPwSmN6$uN%*d>dj$A?7vov}_x@bHYR+OnKqQ`JhG`RT5KnK~ z2Iqa^2rJ4e@j3CBNevP|a$WKGjdQ_efoDd{bZVYBLM#^ASZQNcG&SNW;;5?WlrLmF zRyl8R*2-1Z?32GRoYPm9xlT2N1QxLb2_h6!Q9>CuVzld|SV+-%+{ZuY`XzEH2wd%UHY%5C&+VtK0ouY z+d)}k%aRbn*=dddS(ZVbLzeOAJyaFcHGe{&ZUFKYU_PJY@|>b508mZ-Quh3K(F?J;2ene5HKS|y2d?qKkKP9#8@&&1$_I6m@A}}M_XqCF&I`Y-g(Ttr+VjHQ b_w~UG4d>57_s5Ic00000NkvXXu0mjf3Vw@c literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active.png.mcmeta new file mode 100644 index 0000000000..c7aa7e09fe --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":8 + } +} diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_active_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..ad78af2b6d1c54641ceeadf44b768ff213ca7bf7 GIT binary patch literal 6121 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_emissive.png.mcmeta new file mode 100644 index 0000000000..c7aa7e09fe --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk2/overlay_front_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":8 + } +} diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front.png b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk3/overlay_front.png new file mode 100644 index 0000000000000000000000000000000000000000..36d35c2a7a6f8c16eb475ad29dc44852877e3f08 GIT binary patch literal 1061 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..c7aa7e09fe --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":8 + } +} diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..2c31138ff63b2a7c39c57c453b589d529eafa443 GIT binary patch literal 6943 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_emissive.png.mcmeta new file mode 100644 index 0000000000..c7aa7e09fe --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/machines/parallel_hatch_mk4/overlay_front_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":8 + } +} diff --git a/common/src/main/resources/assets/gtceu/textures/block/molybdenum_disilicide_coil_block.png b/common/src/main/resources/assets/gtceu/textures/block/molybdenum_disilicide_coil_block.png new file mode 100644 index 0000000000000000000000000000000000000000..f270c2df55bf055372e6e7e84d662ae42a04466d GIT binary patch literal 1265 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/blast_alloy_smelter/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_arc_smelter/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_assembler/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_autoclave/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_brewer/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_centrifuge/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_chemical_bath/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_circuit_assembler/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_cutter/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_distillery/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_electrolyzer/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_engraving_laser/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extractor/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_extruder/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_maceration_tower/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_material_press/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_mixer/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_packer/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_sifting_funnel/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_solidifier/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wire_factory/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/large_wiremill/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 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 E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_blast_furnace/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 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 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active.png new file mode 100644 index 0000000000000000000000000000000000000000..cad1bcaa2bb1df1a41c393c86b0c3c2682ec45b4 GIT binary patch literal 10058 zcmeHsXH=6}*LJ9(BUQRIrAQzNB@n6*dXX+gfe->jI)vV&7paO0BGROa^dh}U8>&c` zB1M{10i}s=aOQbtW_|CUS?hcMP1d?|-}l+qx%S@I+2^dBlNencRZ21zG5`QTsji05 z$K9{sE-(o(?wiT-^bP>P;OJ*)g4IWQbGo{_*kT;foLFC1G$+~zV+#QI%)EJyac7fy z6!CMJ-h&X3a3pCmxJvACe!}s{M!k5m7Lv}W$@_#k2JmTkA(Y?yVy(68Oypuk_n~He z?WpGdxw`C;af z_5Q>1md`k-`z?Qpg@Z9Fv0uTf{8gDNs>b;v%aM7?q>uQ;!1boHZ{CdzEU@{I zn<%UDHolw>bwA%twz92T+>#?)kUJw3O1(1{DN1Rivrr!!8h#d^doFQ&_GMVU__bd9 zd2M|~+v1vCbXw=t+HfBK2npeV^YcTq!ZQazZM45Zz_(DcV_Kmo+JN|q$Tm5NO;M)8 z_hN4Pp-CRI1JE0}=Jy@-zORakH#wjZGM_C9ktM$|$rGC+uF<%{dR$Z#lAR1Hc;V3} zUN?KdZ>-;!mtuwp$~Ds#pVW77s+oLWlK0dcQzJg<$13X;#^xc?{B6SjT39-j3P*sS zYde#uPC91Q)HcKEn-t@oDdw}0@x8$}E!_zpC1fi4OB=UadPsr%8Q8A^1uwl$nXeY! zYus2hcW&PPCLL7FIP1{3S6BAaf4swceCc(HaEZLpa&Ao!H4TE#R6N%jLL_Kmga=?Z z5?xT#cwdAqPTNf`?M*hdWv~Mp#gXOHS+^_}cm*5n)HT$nTv&QOTzKLkI2WAbu9J6m z^~st4+(q_%^ZQjz^>?^xvL(h@w|j^R;w23hgCIlg^ILP%-GfmEjRG$+WJGdCi#igr z2fmbUo9tv1xIG@2khn>pgP1nXoa~U@voO(h$`2{+m8Sl27v|Ppuk_63>Q=SIgk(zV zWG1x)>cd)Xm50n)IFel>_nE^zgD{;^$D^%sQ_aLJyf^(S&!X%!`&Big0_tb`tXRGL9c?0$pj9r*`uQ3%;!;GKwk#hsX7=_ z)~ZQwRc&O?OV2VNksV~!a25JyR(z>Xx?(6lL>NOOq-;4dr;)e?y(RcoHWx|$Ta0F% z>)O!Q9fp3j5|#tkDb%J}Psv!K?{0<*3&|jJ6MIKVt*}WEsJc<`j+xi94wW562lF1+ zkm2NyZzIy*8k(JP(swG;Q;I_^#LZe8~doz{5UV2Vj?>GSeotUBgk5Qp? zz3*0bE=zA1(=zo&e|wsdhUw9-VVsyMOJQV6NEaORbC=tmvECeb3=usZUK|VZ2L=cM zAL!`1IN4o+`{t?-4tx5RjY7b=;PLm1*w-!&zuj%j2M&7eHo~lOp-wLXCDt{Z9FIv( zj`AAb3xn#fEQs;j3D(}($?4UC_0$TkJ7vWR?pEEW|Cjq<7#Wz9I?-FZyxhg1RM_d;%s?jJ_Tl_d1$YK z(-n?4tO!~U-c^8vz3+qv8<(EGs$i&6;(IVL6a#i(%d$0%?rxbAUv02TZcSF%04j=L zEORH5Zm_MxZ>u=f-E}Tg)vZe%G7&0&I+xhS9`WTlnCC%+7lji2EK|wbV?2QftIE1< zcdIG!C49oWA&@6$+r6^ZM`%|_ahYmYY)X-<_HzPL__z@gu*J9lWK*hGumsVWb7zLFu`b*s+c~4RM z%EA1Vm1izWK_QI3);;Sz+Gdz3lrgXEqXJEWVFb_U4Paq0RS60Bj`r@WWPrvi%uI$Z z|J!EzDysQMqS|W2v5FZqy{0U@j2&4AJ@byDGm>eLnC0ZV?Q>i4?Sch#0Vk4ysz9u! z=7BsA__&flG_^#zY(G2B7w@@bZa1$Ct4gC6Mam3GNLP{*_F;FO?&J*lV?_fdv#qy1 zI=Kj?XBH<{j1A?%A1axrnZSdL!mLvG*TsxAT=>dErrrVd)EI`G<=6M>+1LiHH4-N{ zgTo>`NX04^{O8=wy7zY>{51Z=Zl>YBf`$*1H0r0UZ6(tr$GhbOMgMv>`ubOOD1hGZdxzF3+Qn5jtuH;Tch^IM&f{L>+bVvSKU#26$t=nmL`-;1&@fbfjEx7ddxf#$&t6e* zw$v2tx8W)ck?*(z(*N3H3Z{7{no#knq=sh)YzkaFgr!x>*NmwTECe+KA9b(sIg&nk zM)BcI{@gh?yXD2#@RQ^Oe^+NYebKQNFGpGX^!qFd*b2eaP&|@-L<4r^i?5yl{$v`w zd-_^5tCZk;G@LwOX=rs7--Pto7r~DureqRp>vdiRr;fL&4gi$UMA7Q%r}vy4quF*G z{MoHF`H$CAclxOPB2D86AFeOjD}vyY2}6?j98<3fOj@0>G&i`dGF62MWLpKCWB>ys zzI1mvVJXB2c3rY_k)34$`(6%)D1Vlbr2IBj@W>#L2w8)d<)ckq>hn`f&CXnpWphgd zZ@eLHg4x*-oMsMbM^?14H0k?(!DtFWP>%+&PU*BoIIX+YO`N~4szVc4CIabrkIY} zyA_38%0LKQ*pIgJ2}9UE3iov#(_WXrSDAQytr9~>Yg!*k2TW~LZ8M)$LG-t`o<1Ou zt|?R}D^6I*W+F}^j>W)bU)wdCIwPEohC%9lyo`<;Uhsa?pooaH+}2d(h-IE{BtI*` zSs{-!X+pN=n}&&>ghx>Ik}h+08WL^02$ICKBywjVrCnLdSt*S_lP29Yx%S}za1ZU0 z+;<%awHUJ&eN(Gd=F9oLmSGdm;vEbw=RK3M6KYn0A-SE@JqccP=6_=IF8I}6OxycX zjFe4<$;?5thst}h|$SC_4wf&#@$I!-e zz2}dKBxUBCd6MNduQHIumfN9T8Hxy)IYxM9nXn5rGHpG|FE1Bir_bjI(^1TtK?NzA zv2J&&Vmt6kDDXDU!)9!AKG~Q9&Paz4GWQr)-d|Lu`}n^~{HEme2_Qy`J{l(>CRA0R zZoj?PieSCZjURo}!YOSE{l0qWAX-6pna}2ea^EngLL-4S_uK?t{3;t+#qm{ z7JC@`Bd5F2q%+N`=CowdtGWj}lej$RZZPKM*~G}0%0Ht(d0(yLL0>i=!R^`t&^H2v z_HWln%pdO|3}4vrSc#XragBPp0cB~U4`=kXgt6{ZnVoc_!K;}juZ>u;BVJq^6`#Is zlDygDbkpidMH-g6uZ4$Lcv$IzuSuwTTMz?`7KAH?%})xoO4Y=>3(>`?NMj27G`~ES^hp z98?e3(-_Q>wN)L3oF`Dnd?Cog1{ zaoHa-`urVPv}S4T(_=P2pBx!L`ZkGyW9(70*=_l&zBGd&s0O^!zI9$uy#bv6WA641 zIz*87M+5sX{*iCgDwrWzl4Cwq<{_caoaLj+D%R6E+xU&i`ACwuZ_*U0J9J)}rjKA& z+HFzmU^aoGMN<7^!?MEC!q;}Bj;6YI8(41;WvLgi!&#KR@FP_)@Ij5zNDF(a@<42L zL6Ryt!JDiLDLr9!VkAvENqfKzcKAKMZN>>o?d)m9rU7CU1P!JY5)7@BUkm@-5vfQP z!Wq%7m9&+WYjT5aWvW3-e)&q|>9BWS_0R*AQ4CRhD03?7OYYe(y>XBSi>YohydnJ! z;kiR2SrpE3o^2gAiS36Y+?8Cb4CB)Wql%CXpXlzJgp@K6Qhc-AH-@^wcdvhR^l4q* z_4ET!ycVp{eC~&c{QjV(5uZ}x#fyEJ6&KpuygHK=1A;#_Uu5Hf7r{!`N4#g{*29I} z+ZT9p;ae>5KIWe`&U3BeHS(*BQh{H=V{^N=K0zu!_h{Tiv?t}fl-PgJ`JucCpOw3heUj8S_5?Zz$3Dh9aaES2 zsb=|Nk)06Bb4!Bg>Z7zZ;@+ur%7ls}rq2}L!i{&7&bu`0j|t^Ag-Fd~;2%g#f~h|n zCe4P$U44*6PGUH~Y@TS4o&DJ&|DrFd-|JPgvR8D$*`sorq%l93D&czFF2{kW+~hbc zE?)A=(^{>!mHCgR+OK_HGf!8J=!}*&A+1%Yvwcg9TGUv$Hmm`Ac z+rtS$6iU92{IqyLvKXWw;dRA;Y6~Ex6{ad<8bWBd=~+l=oS#5d=fy!z?_~qEx>BGS zz;nmjr!9u0m}9pj(GPi)y>g(_e&l*HT&WI0pD@07O}{?;ZOp-at|jf6(KKuMYf>{` z1Gi|syQn*F=kq;JbSt(Z%)RZ zPYsx&T-KwI$b3{nZm%j!nM}QN&k1%U=CCBHzLDvpv$adYNi>l?s{FC^W%kpuMDd_S z)Tv?7tF+A9Qq>H+O^IAVaOSZDLK#UN=t#^`GI3Xq9bKT^Z9~OV;PM^)=o&7SCxaHn zd@m*`DOSVUpZRa`B~h2J9eRuwaM>^I=Fq5L`OO-EadcNb1s)3vi?WZO;8m?-gA0nT zC(|E_eO6Bxz9syrZAF=H8_s3J8(;&OO0?Z9y&L`!(aWqx$xg9O%9&1e)r#k9NZQ^P zKCU^svYlH^zzLI7s=65`5I3#8{8k+{H2IJMFeBHPd~Vvc7D8xqmDI3)<2+qRtu`&X zU)F|0fdX~gT~?32;6c2#oe2+sd*kRVfp&k!ZwTyJ+7^!OrMRkl<>X~+!fY$m>^;N4 z$NI!1PrO>J%y~(X3On(OSz{%+ZU`E3A~g5gR6A^C*_t%xHPs`mRwE`y3%`Gsc04yD ziT*ihtE=bP>9lfSG!Zha%g!?DfTO?9HtJh_WD~)?Tfw@U(qU(B=Q6NQe@yBz``96a zr9P|u-u`YdtEV=3hMTq#?#XA ze*4iasW>$&wyJ?Gb@}`#@er6vw+O)1|0e*jDxgO#J@O&px4W{uZQS_vvFmgbT+%Do zq7n(l$Ch(D0OikaPFbD{wL3ly&$iebm*x!~tup}ecI6v?RGaRDA2o>ci$DIRDWDhC z;p$~hHdatk898e~Tv~5&-8+?T7%wDwC4Byc=T>+_MQE*Dm%JonetH4Hp#phX+`WPt znD`NUpy~bEud*;A9}SuycZ&Fz7|o0mCTzC?KPW?WWA`c1okcsy*s-`vS+BI-24%P7 z{E6OZw%dYV1H+esi4Tn*4%Z(&AOPK|VQt~c8>U)py}_B0k-WMF37KDt54GYu*686! zjxu#_tn7()lwEyJRUG4c*q+{%o^mdOO?0@$m`Ftws~4EBGvZjGWu@ME&mjEw#HA0k1mpA1v99Y6p8UN}ZcNmpG-=|AVLxYO1bfyuIJoeFGS zmgbtug52AjU0h0@m7IcIdarfE$+C^@$JhF~`&Mo!rX_njFmQnS>Bba9FUJ<^waD*QcKAN5GJ9S1P4G({|2D*e0(cy|Y& zbi2VuErC93L*&VW@1m#q_*d$QPL1d0XU-%80q$c)tHhF$gev_h&8z!6^E>kwvLAMK zf$1>!y5g;KC*1is3kG)%ZlbLPN4Yo&BW+x)(ZW7XuDEk@06<3G#}$ckKw~+r(RLVT zS?=A&R&Gv=jV$*aac!`+s}kBCqvq$1Ht^FiMEN2N&JzqA9aC82GU>#(+O|*46m0aA>oMOUa!eEfH55^11El0*F<8EUM*GH)Q zL4kXd<+jISUEv}k-rnBA-lD=T?sg&&DJdxtFjNEz1>q1N4_{|2(g)=1!E;IRI|l;o zfpW*VVlghxoR^$PYZp(fEH^jK&iSACoLsfF|4Z-e@rMdHJw$wvt|Aa&u!xhB$X|PS zV3oaaB!2|-zxMDj#QmKhqL21)@pMO_mA%l;Sf0O9sH$u0{+Ho0B|D6h>#wA6;{DB; z4eGx*S5J4xUl<#d2-*?tgd_F9#RvHt9*eR4Q>?$mc4_&Q&R+w;x%)5w-_ZZb{TCRA z($ayHWVep?Vx{gS!t&6*pEVmZM+0*AwgCWKVZGc5yiUyH@Lc!uv;-XLq zF)0`r@+Zg`?e2jqxJyn5SQsky%VL9qtKb-sxWd6WA??s2uFiJ9441|#of@w#Zi{~GFHw@%3tNpDf9cFs9`*C2;a+!|D)y&&~CrK{XPX8 zF~3ZloWIHzjzs*ZP!Jdf2ZOmq{zzEla#sH*V;PbEM-!P}fWIsQxPHI4 z;g%QNY9;dDZ)ey0RWKGUS4>k zb3y00Mj%#QTN(J7h=rbrlT)Ne8UVmAQb*h}RO{JJ8Frw%Mc*SY+Ndru7yrgcj}W6w zRKXrhKO^Y3w>kb(K~^9(hh%B`wW>%gUvu#%?OXet(eit$lN=1ex}p>okmi0GhvSMv@(M!&#VqEK=RTfE#91=06AczI$IKye}{p+=E%RFAXP$l7;Ee}OaJ8}Wd` zrER7y`jRZUps)~1CKT@-4^wsu+7qi23j)OCGyUsZt(Hh?5>p0HZ_@j+n(q57*1+_+zEw1gaO^D%KmqNfI8vk<)!fl zAEJ1uI2L--cxn=AEH2uknUfX!RP90;gDgrWSyv9E?oM`@J)C&XUks6zeZ%OPL<_!i zgfYFA5*9sjKTkfK-n`BkHP>+DxX|)gUtqm9X>~$Z+AWix+{gWp$@J;|`Iz0;6Sjn9 z-6G>c!<#AnpBK!hWT3)DjjBY-g2hW&q6`mR_kZour&i>JML4ANAUm z;b)ZXX!k%|&#bF+f$TE)_#l#U2fO>_ z%)r1c48n{Iv*t(u1=&kHeO=j~F>wiNasSVKxd|wA)YHW=#N+teDI2*C8A!C~Z#;V; zP2lCc@&bXHpo8Tb&MRzfZl0Wf;poAY&3tQb6>G41u1t^#IiqXe@>~DEuKb7eTMY_7 zeyHU72V`|Q1*UcFZD4M=^Xc|HHMS#i3tq|_#GVy6Dp<5;K1++b;T46IY8MvDt=r*y zyY5?!=Sw3+2AOic(|3c!FP)XYRN;8&^k;^KGa^r2cYkhRlbG8$Tbn;4tI+jr<%i0R zpJG1PEYJ{X4%+?MLBzqhzM1{)^{vkjPA@q4hgtmH-tEm_ZsqhI2YQIX)78&qol`;+ E07zAP)c^nh literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png.mcmeta b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 0000000000..cfcef74876 --- /dev/null +++ b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,10 @@ +{ + "animation": { + "frametime": 16, + "frames": [ + 0, + 1, + 2 + ] + } +} \ No newline at end of file diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..0486a073200cbdd7ea5c25aafd12fc79ca526154 GIT binary patch literal 219 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4rY@E?b97f^(=z$3Dl zfq`2Xgc%uT&5-~KvX^-Jy0SlG;u6*t|5VEak-aXL9cB67j%)vy2G+gtr# zx!Z7|w$+g{U;Z;HKmOnBz2*cGYtUs6IsB5tmtv$2ox8374fE;efhhAutrfPV*`zXICH;OXk; Jvd$@?2>^hePFw&0 literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused.png new file mode 100644 index 0000000000000000000000000000000000000000..901e9e1e126f760029b545ab5778d0651e726e6f GIT binary patch literal 571 zcmV-B0>u4^P)6FA;xuGr6h*vv+++Sof$dE=yinxj zlX#WqdCCt$IzQWdX?Lr8Vxn& zKx>Wf2Pmb`S|cJ12E*S%isj{#q{mrpS_=gda1ZHwCc1^};btTP^u*}3(NbUKA$ z7<6_!bap$m+wDI`u&fM*VN3zSaDZWGwAP6;-w&wQ>x%!PegX1csdutq75e}H002ov JPDHLkV1kRp^iu!; literal 0 HcmV?d00001 diff --git a/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive.png b/common/src/main/resources/assets/gtceu/textures/block/multiblock/gcym/mega_vacuum_freezer/overlay_front_paused_emissive.png new file mode 100644 index 0000000000000000000000000000000000000000..f18b9aa38996663d172c29d334a3e325a2dc0d2f GIT binary patch literal 569 zcmV-90>=G`P)6FbX(FBmV#Z0mey0 zK~y-)&5}QF(@+$}fA85zY~mJ*K#CZmq+Kc$r+`EPl!<-=R+vCt5CftUGeaj9R2C|x zsuB}?0$5={MTwOGAqoT*Kp~aV#CHDpG8l)32#F2u^3HoY=iGCo2mg9h0!pP4j*|so zI2>Y{CIH=T56|;Be+FzT=K2A=*om>37&uOrdacGnJ^&yD-oDSUbb1Nbb+Ijv$M=!r zM`7jauf<~n5n&-8u(^)R=V7-At9L@Bl*02oE?tPpCtML+}(goD#lX= zT5EPcXIZ(@9mjjuv?$Mk>$;4L4A?nRjzjqE4e&bFCFCfIc(&D**&_uu*O9|>MV@a5 z0^oTbeh||B-cp~MAJt$mobFPsR#>hUc=GU=Ts&9g>nmirTA)%n3&bf7p5x>PFHawQ zkb93Db^BUJF5fJwwd?z$wf?(*;JPl^>>)%15g`%wdOqoN3ez-+q6n=uoz6auMq@I8 z)*9arP)eb-MnvfM2S1Gzi;E}8QT7Rx!Ss4t&m>`52BR0pdfpR zr>`sfV^%IsHk0PGBPu{4wj^(N7l!{JxM1({$v}||PZ!4!3;(s34Y>{ka4=t(pewg% zul=9Ts>#+@gj@XlWmuFy&G{U2{qL4bW+qPBa}!jy7+J5J>S-Xg#fWoDuiLF-IU2pY zn=b59