11package net .neganote .gtutilities .common .machine ;
22
33import com .gregtechceu .gtceu .api .GTValues ;
4+ import com .gregtechceu .gtceu .api .capability .compat .FeCompat ;
45import com .gregtechceu .gtceu .api .data .RotationState ;
6+ import com .gregtechceu .gtceu .api .machine .IMachineBlockEntity ;
57import com .gregtechceu .gtceu .api .machine .MachineDefinition ;
8+ import com .gregtechceu .gtceu .api .machine .MetaMachine ;
69import com .gregtechceu .gtceu .api .machine .multiblock .CleanroomType ;
710import com .gregtechceu .gtceu .api .machine .multiblock .PartAbility ;
11+ import com .gregtechceu .gtceu .api .registry .registrate .MachineBuilder ;
12+ import com .gregtechceu .gtceu .client .renderer .machine .ConverterRenderer ;
813import com .gregtechceu .gtceu .client .renderer .machine .MaintenanceHatchPartRenderer ;
14+ import com .gregtechceu .gtceu .common .machine .electric .ConverterMachine ;
915import com .gregtechceu .gtceu .common .machine .multiblock .part .CleaningMaintenanceHatchPartMachine ;
1016
1117import net .minecraft .ChatFormatting ;
1218import net .minecraft .network .chat .Component ;
1319import net .neganote .gtutilities .GregTechModernUtilities ;
1420
21+ import java .util .Locale ;
22+ import java .util .function .BiFunction ;
23+
24+ import static com .gregtechceu .gtceu .api .GTValues .*;
25+ import static com .gregtechceu .gtceu .api .GTValues .V ;
1526import static net .neganote .gtutilities .GregTechModernUtilities .REGISTRATE ;
1627
1728@ SuppressWarnings ("unused" )
@@ -25,6 +36,7 @@ public class UtilMachines {
2536 public static final MachineDefinition STERILE_CLEANING_MAINTENANCE_HATCH = REGISTRATE
2637 .machine ("sterile_cleaning_maintenance_hatch" ,
2738 holder -> new CleaningMaintenanceHatchPartMachine (holder , CleanroomType .STERILE_CLEANROOM ))
39+ .langValue ("Sterile Cleaning Maintenance Hatch" )
2840 .rotationState (RotationState .ALL )
2941 .abilities (PartAbility .MAINTENANCE )
3042 .tooltips (Component .translatable ("gtceu.universal.disabled" ),
@@ -41,5 +53,46 @@ public class UtilMachines {
4153 // changed later
4254 .register ();
4355
56+ // Copied from GTMachineUtils
57+ public static MachineDefinition [] registerConverter (int amperage ) {
58+ return registerTieredMachines (amperage + "a_energy_converter" ,
59+ (holder , tier ) -> new ConverterMachine (holder , tier , amperage ),
60+ (tier , builder ) -> builder
61+ .rotationState (RotationState .ALL )
62+ .langValue ("%s %s§eA§r Energy Converter" .formatted (VCF [tier ] + VN [tier ] + ChatFormatting .RESET ,
63+ amperage ))
64+ .renderer (() -> new ConverterRenderer (tier , amperage ))
65+ .tooltips (Component .translatable ("gtceu.machine.energy_converter.description" ),
66+ Component .translatable ("gtceu.machine.energy_converter.tooltip_tool_usage" ),
67+ Component .translatable ("gtceu.machine.energy_converter.tooltip_conversion_native" ,
68+ FeCompat .toFeLong (V [tier ] * amperage ,
69+ FeCompat .ratio (true )),
70+ amperage , V [tier ], GTValues .VNF [tier ]),
71+ Component .translatable ("gtceu.machine.energy_converter.tooltip_conversion_eu" , amperage ,
72+ V [tier ], GTValues .VNF [tier ],
73+ FeCompat .toFeLong (V [tier ] * amperage ,
74+ FeCompat .ratio (false ))))
75+ .register (),
76+ ALL_TIERS );
77+ }
78+
79+ // Copied from GTMachineUtils
80+ public static MachineDefinition [] registerTieredMachines (String name ,
81+ BiFunction <IMachineBlockEntity , Integer , MetaMachine > factory ,
82+ BiFunction <Integer , MachineBuilder <MachineDefinition >, MachineDefinition > builder ,
83+ int ... tiers ) {
84+ MachineDefinition [] definitions = new MachineDefinition [GTValues .TIER_COUNT ];
85+ for (int tier : tiers ) {
86+ var register = REGISTRATE
87+ .machine (GTValues .VN [tier ].toLowerCase (Locale .ROOT ) + "_" + name ,
88+ holder -> factory .apply (holder , tier ))
89+ .tier (tier );
90+ definitions [tier ] = builder .apply (tier , register );
91+ }
92+ return definitions ;
93+ }
94+
95+ public static final MachineDefinition [] ENERGY_CONVERTER_64A = registerConverter (64 );
96+
4497 public static void init () {}
4598}
0 commit comments