diff --git a/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java b/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java index cdbc8171ce3..2da6fd0d304 100644 --- a/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java +++ b/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java @@ -2,7 +2,6 @@ import gregtech.api.GTValues; import gregtech.api.GregTechAPI; -import gregtech.api.capability.FeCompat; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.metatileentity.SimpleGeneratorMetaTileEntity; import gregtech.api.metatileentity.SimpleMachineMetaTileEntity; @@ -10,17 +9,10 @@ import gregtech.api.metatileentity.multiblock.MultiblockAbility; import gregtech.api.metatileentity.multiblock.MultiblockControllerBase; import gregtech.api.recipes.RecipeMap; -import gregtech.api.recipes.RecipeMaps; -import gregtech.api.unification.material.Materials; import gregtech.api.util.GTLog; import gregtech.api.util.GTUtility; import gregtech.api.util.Mods; -import gregtech.client.particle.VanillaParticleEffects; import gregtech.client.renderer.ICubeRenderer; -import gregtech.client.renderer.texture.Textures; -import gregtech.common.ConfigHolder; -import gregtech.common.blocks.BlockTurbineCasing; -import gregtech.common.blocks.MetaBlocks; import gregtech.common.metatileentities.converter.MetaTileEntityConverter; import gregtech.common.metatileentities.electric.MetaTileEntityAlarm; import gregtech.common.metatileentities.electric.MetaTileEntityBatteryBuffer; @@ -35,12 +27,8 @@ import gregtech.common.metatileentities.electric.MetaTileEntityMiner; import gregtech.common.metatileentities.electric.MetaTileEntityPump; import gregtech.common.metatileentities.electric.MetaTileEntityRockBreaker; -import gregtech.common.metatileentities.electric.MetaTileEntitySingleCombustion; -import gregtech.common.metatileentities.electric.MetaTileEntitySingleTurbine; import gregtech.common.metatileentities.electric.MetaTileEntityTransformer; import gregtech.common.metatileentities.electric.MetaTileEntityWorldAccelerator; -import gregtech.common.metatileentities.electric.SimpleMachineMetaTileEntityResizable; -import gregtech.common.metatileentities.multi.BoilerType; import gregtech.common.metatileentities.multi.MetaTileEntityCokeOven; import gregtech.common.metatileentities.multi.MetaTileEntityCokeOvenHatch; import gregtech.common.metatileentities.multi.MetaTileEntityLargeBoiler; @@ -92,12 +80,6 @@ import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityReservoirHatch; import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityRotorHolder; import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntitySubstationEnergyHatch; -import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEInputBus; -import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEInputHatch; -import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEOutputBus; -import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEOutputHatch; -import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEStockingBus; -import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEStockingHatch; import gregtech.common.metatileentities.multi.multiblockpart.hpca.MetaTileEntityHPCABridge; import gregtech.common.metatileentities.multi.multiblockpart.hpca.MetaTileEntityHPCAComputation; import gregtech.common.metatileentities.multi.multiblockpart.hpca.MetaTileEntityHPCACooler; @@ -143,9 +125,9 @@ import java.util.function.BiFunction; import java.util.function.Function; -import static gregtech.api.util.GTUtility.gregtechId; +public final class MetaTileEntities { -public class MetaTileEntities { + private MetaTileEntities() {} // spotless:off @@ -187,7 +169,6 @@ public class MetaTileEntities { public static final SimpleMachineMetaTileEntity[] MIXER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; public static final SimpleMachineMetaTileEntity[] ORE_WASHER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; public static final SimpleMachineMetaTileEntity[] PACKER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; - public static final SimpleMachineMetaTileEntity[] UNPACKER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; public static final SimpleMachineMetaTileEntity[] POLARIZER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; public static final SimpleMachineMetaTileEntity[] LASER_ENGRAVER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; public static final SimpleMachineMetaTileEntity[] SIFTER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; @@ -211,20 +192,20 @@ public class MetaTileEntities { public static final MetaTileEntityItemBus[] ITEM_EXPORT_BUS = new MetaTileEntityItemBus[GTValues.V.length - 1]; public static final MetaTileEntityFluidHatch[] FLUID_IMPORT_HATCH = new MetaTileEntityFluidHatch[GTValues.V.length - 1]; public static final MetaTileEntityFluidHatch[] FLUID_EXPORT_HATCH = new MetaTileEntityFluidHatch[GTValues.V.length - 1]; - public static final MetaTileEntityMultiFluidHatch[] QUADRUPLE_IMPORT_HATCH = new MetaTileEntityMultiFluidHatch[11]; // EV+ - public static final MetaTileEntityMultiFluidHatch[] NONUPLE_IMPORT_HATCH = new MetaTileEntityMultiFluidHatch[11]; // EV+ - public static final MetaTileEntityMultiFluidHatch[] QUADRUPLE_EXPORT_HATCH = new MetaTileEntityMultiFluidHatch[11]; // EV+ - public static final MetaTileEntityMultiFluidHatch[] NONUPLE_EXPORT_HATCH = new MetaTileEntityMultiFluidHatch[11]; // EV+ + public static final MetaTileEntityMultiFluidHatch[] QUADRUPLE_IMPORT_HATCH = new MetaTileEntityMultiFluidHatch[GTValues.V.length - 1]; + public static final MetaTileEntityMultiFluidHatch[] NONUPLE_IMPORT_HATCH = new MetaTileEntityMultiFluidHatch[GTValues.V.length - 1]; + public static final MetaTileEntityMultiFluidHatch[] QUADRUPLE_EXPORT_HATCH = new MetaTileEntityMultiFluidHatch[GTValues.V.length - 1]; + public static final MetaTileEntityMultiFluidHatch[] NONUPLE_EXPORT_HATCH = new MetaTileEntityMultiFluidHatch[GTValues.V.length - 1]; public static final MetaTileEntityEnergyHatch[] ENERGY_INPUT_HATCH = new MetaTileEntityEnergyHatch[GTValues.V.length]; - public static final MetaTileEntityEnergyHatch[] ENERGY_INPUT_HATCH_4A = new MetaTileEntityEnergyHatch[11]; // EV+ - public static final MetaTileEntityEnergyHatch[] ENERGY_INPUT_HATCH_16A = new MetaTileEntityEnergyHatch[10]; // IV+ + public static final MetaTileEntityEnergyHatch[] ENERGY_INPUT_HATCH_4A = new MetaTileEntityEnergyHatch[GTValues.V.length]; + public static final MetaTileEntityEnergyHatch[] ENERGY_INPUT_HATCH_16A = new MetaTileEntityEnergyHatch[GTValues.V.length]; public static final MetaTileEntityEnergyHatch[] ENERGY_OUTPUT_HATCH = new MetaTileEntityEnergyHatch[GTValues.V.length]; - public static final MetaTileEntityEnergyHatch[] ENERGY_OUTPUT_HATCH_4A = new MetaTileEntityEnergyHatch[11]; // EV+ - public static final MetaTileEntityEnergyHatch[] ENERGY_OUTPUT_HATCH_16A = new MetaTileEntityEnergyHatch[10]; // IV+ - public static final MetaTileEntitySubstationEnergyHatch[] SUBSTATION_ENERGY_INPUT_HATCH = new MetaTileEntitySubstationEnergyHatch[10]; // IV+ - public static final MetaTileEntitySubstationEnergyHatch[] SUBSTATION_ENERGY_OUTPUT_HATCH = new MetaTileEntitySubstationEnergyHatch[10]; // IV+ - public static final MetaTileEntityRotorHolder[] ROTOR_HOLDER = new MetaTileEntityRotorHolder[6]; // HV, EV, IV, LuV, ZPM, UV - public static final MetaTileEntityMufflerHatch[] MUFFLER_HATCH = new MetaTileEntityMufflerHatch[GTValues.UHV + 1]; // LV-UHV + public static final MetaTileEntityEnergyHatch[] ENERGY_OUTPUT_HATCH_4A = new MetaTileEntityEnergyHatch[GTValues.V.length]; + public static final MetaTileEntityEnergyHatch[] ENERGY_OUTPUT_HATCH_16A = new MetaTileEntityEnergyHatch[GTValues.V.length]; + public static final MetaTileEntitySubstationEnergyHatch[] SUBSTATION_ENERGY_INPUT_HATCH = new MetaTileEntitySubstationEnergyHatch[GTValues.V.length]; + public static final MetaTileEntitySubstationEnergyHatch[] SUBSTATION_ENERGY_OUTPUT_HATCH = new MetaTileEntitySubstationEnergyHatch[GTValues.V.length]; + public static final MetaTileEntityRotorHolder[] ROTOR_HOLDER = new MetaTileEntityRotorHolder[GTValues.V.length - 1]; + public static final MetaTileEntityMufflerHatch[] MUFFLER_HATCH = new MetaTileEntityMufflerHatch[GTValues.V.length - 1]; public static final MetaTileEntityFusionReactor[] FUSION_REACTOR = new MetaTileEntityFusionReactor[3]; public static MetaTileEntityQuantumStorageController QUANTUM_STORAGE_CONTROLLER; public static MetaTileEntityQuantumProxy QUANTUM_STORAGE_PROXY; @@ -236,7 +217,7 @@ public class MetaTileEntities { public static final MetaTileEntityBlockBreaker[] BLOCK_BREAKER = new MetaTileEntityBlockBreaker[4]; public static final MetaTileEntityItemCollector[] ITEM_COLLECTOR = new MetaTileEntityItemCollector[4]; public static final MetaTileEntityFisher[] FISHER = new MetaTileEntityFisher[4]; - public static final MetaTileEntityWorldAccelerator[] WORLD_ACCELERATOR = new MetaTileEntityWorldAccelerator[8]; // LV-UV + public static final MetaTileEntityWorldAccelerator[] WORLD_ACCELERATOR = new MetaTileEntityWorldAccelerator[GTValues.V.length]; public static MetaTileEntityMachineHatch MACHINE_HATCH; public static MetaTileEntityPassthroughHatchItem PASSTHROUGH_HATCH_ITEM; public static MetaTileEntityPassthroughHatchFluid PASSTHROUGH_HATCH_FLUID; @@ -246,12 +227,12 @@ public class MetaTileEntities { public static MetaTileEntityDataAccessHatch CREATIVE_DATA_HATCH; public static MetaTileEntityOpticalDataHatch OPTICAL_DATA_HATCH_RECEIVER; public static MetaTileEntityOpticalDataHatch OPTICAL_DATA_HATCH_TRANSMITTER; - public static MetaTileEntityLaserHatch[] LASER_INPUT_HATCH_256 = new MetaTileEntityLaserHatch[10]; // IV+ - public static MetaTileEntityLaserHatch[] LASER_INPUT_HATCH_1024 = new MetaTileEntityLaserHatch[10]; // IV+ - public static MetaTileEntityLaserHatch[] LASER_INPUT_HATCH_4096 = new MetaTileEntityLaserHatch[10]; // IV+ - public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_256 = new MetaTileEntityLaserHatch[10]; // IV+ - public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_1024 = new MetaTileEntityLaserHatch[10]; // IV+ - public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_4096 = new MetaTileEntityLaserHatch[10]; // IV+ + public static MetaTileEntityLaserHatch[] LASER_INPUT_HATCH_256 = new MetaTileEntityLaserHatch[GTValues.V.length - 1]; + public static MetaTileEntityLaserHatch[] LASER_INPUT_HATCH_1024 = new MetaTileEntityLaserHatch[GTValues.V.length - 1]; + public static MetaTileEntityLaserHatch[] LASER_INPUT_HATCH_4096 = new MetaTileEntityLaserHatch[GTValues.V.length - 1]; + public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_256 = new MetaTileEntityLaserHatch[GTValues.V.length - 1]; + public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_1024 = new MetaTileEntityLaserHatch[GTValues.V.length - 1]; + public static MetaTileEntityLaserHatch[] LASER_OUTPUT_HATCH_4096 = new MetaTileEntityLaserHatch[GTValues.V.length - 1]; public static MetaTileEntityComputationHatch COMPUTATION_HATCH_RECEIVER; public static MetaTileEntityComputationHatch COMPUTATION_HATCH_TRANSMITTER; public static MetaTileEntityObjectHolder OBJECT_HOLDER; @@ -379,864 +360,33 @@ public class MetaTileEntities { public static MetaTileEntityLDFluidEndpoint LONG_DIST_FLUID_ENDPOINT; public static MetaTileEntityAlarm ALARM; - // todo public static MetaTileEntityConverter[][] ENERGY_CONVERTER = new MetaTileEntityConverter[4][GTValues.V.length]; //spotless:on public static void init() { - GTLog.logger.info("Registering MetaTileEntities"); - - STEAM_BOILER_COAL_BRONZE = registerMetaTileEntity(1, - new SteamCoalBoiler(gregtechId("steam_boiler_coal_bronze"), false)); - STEAM_BOILER_COAL_STEEL = registerMetaTileEntity(2, - new SteamCoalBoiler(gregtechId("steam_boiler_coal_steel"), true)); - - STEAM_BOILER_SOLAR_BRONZE = registerMetaTileEntity(3, - new SteamSolarBoiler(gregtechId("steam_boiler_solar_bronze"), false)); - STEAM_BOILER_SOLAR_STEEL = registerMetaTileEntity(4, - new SteamSolarBoiler(gregtechId("steam_boiler_solar_steel"), true)); - - STEAM_BOILER_LAVA_BRONZE = registerMetaTileEntity(5, - new SteamLavaBoiler(gregtechId("steam_boiler_lava_bronze"), false)); - STEAM_BOILER_LAVA_STEEL = registerMetaTileEntity(6, - new SteamLavaBoiler(gregtechId("steam_boiler_lava_steel"), true)); - - STEAM_EXTRACTOR_BRONZE = registerMetaTileEntity(7, - new SteamExtractor(gregtechId("steam_extractor_bronze"), false)); - STEAM_EXTRACTOR_STEEL = registerMetaTileEntity(8, - new SteamExtractor(gregtechId("steam_extractor_steel"), true)); - - STEAM_MACERATOR_BRONZE = registerMetaTileEntity(9, - new SteamMacerator(gregtechId("steam_macerator_bronze"), false)); - STEAM_MACERATOR_STEEL = registerMetaTileEntity(10, - new SteamMacerator(gregtechId("steam_macerator_steel"), true)); - - STEAM_COMPRESSOR_BRONZE = registerMetaTileEntity(11, - new SteamCompressor(gregtechId("steam_compressor_bronze"), false)); - STEAM_COMPRESSOR_STEEL = registerMetaTileEntity(12, - new SteamCompressor(gregtechId("steam_compressor_steel"), true)); - - STEAM_HAMMER_BRONZE = registerMetaTileEntity(13, new SteamHammer(gregtechId("steam_hammer_bronze"), false)); - STEAM_HAMMER_STEEL = registerMetaTileEntity(14, new SteamHammer(gregtechId("steam_hammer_steel"), true)); - - STEAM_FURNACE_BRONZE = registerMetaTileEntity(15, new SteamFurnace(gregtechId("steam_furnace_bronze"), false)); - STEAM_FURNACE_STEEL = registerMetaTileEntity(16, new SteamFurnace(gregtechId("steam_furnace_steel"), true)); - - STEAM_ALLOY_SMELTER_BRONZE = registerMetaTileEntity(17, - new SteamAlloySmelter(gregtechId("steam_alloy_smelter_bronze"), false)); - STEAM_ALLOY_SMELTER_STEEL = registerMetaTileEntity(18, - new SteamAlloySmelter(gregtechId("steam_alloy_smelter_steel"), true)); - - STEAM_ROCK_BREAKER_BRONZE = registerMetaTileEntity(19, - new SteamRockBreaker(gregtechId("steam_rock_breaker_bronze"), false)); - STEAM_ROCK_BREAKER_STEEL = registerMetaTileEntity(20, - new SteamRockBreaker(gregtechId("steam_rock_breaker_steel"), true)); - - STEAM_MINER = registerMetaTileEntity(21, new SteamMiner(gregtechId("steam_miner"), 320, 4, 0)); - - // Electric Furnace, IDs 50-64 - registerSimpleMetaTileEntity(ELECTRIC_FURNACE, 50, "electric_furnace", RecipeMaps.FURNACE_RECIPES, - Textures.ELECTRIC_FURNACE_OVERLAY, true); - - // Macerator, IDs 65-79 - registerMetaTileEntities(MACERATOR, 65, "macerator", - (tier, voltageName) -> new SimpleMachineMetaTileEntityResizable( - gregtechId(String.format("%s.%s", "macerator", voltageName)), - RecipeMaps.MACERATOR_RECIPES, - -1, - switch (tier) { - case 1, 2 -> 1; - case 3 -> 3; - default -> 4; - }, - tier <= GTValues.MV ? Textures.MACERATOR_OVERLAY : Textures.PULVERIZER_OVERLAY, - tier, - true, - GTUtility.defaultTankSizeFunction, - VanillaParticleEffects.TOP_SMOKE_SMALL, null)); - - // Alloy Smelter, IDs 80-94 - registerSimpleMetaTileEntity(ALLOY_SMELTER, 80, "alloy_smelter", RecipeMaps.ALLOY_SMELTER_RECIPES, - Textures.ALLOY_SMELTER_OVERLAY, true); - - // Arc Furnace, IDs 95-109 - registerMetaTileEntities(ARC_FURNACE, 95, "arc_furnace", - (tier, voltageName) -> new SimpleMachineMetaTileEntityResizable( - gregtechId(String.format("%s.%s", "arc_furnace", voltageName)), - RecipeMaps.ARC_FURNACE_RECIPES, - -1, - tier >= GTValues.EV ? 9 : 4, - Textures.ARC_FURNACE_OVERLAY, - tier, - false, - GTUtility.hvCappedTankSizeFunction)); - - // Assembler, IDs 110-124 - registerSimpleMetaTileEntity(ASSEMBLER, 110, "assembler", RecipeMaps.ASSEMBLER_RECIPES, - Textures.ASSEMBLER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); - - // Autoclave, IDs 125-139 - registerSimpleMetaTileEntity(AUTOCLAVE, 125, "autoclave", RecipeMaps.AUTOCLAVE_RECIPES, - Textures.AUTOCLAVE_OVERLAY, false, GTUtility.hvCappedTankSizeFunction); - - // Bender, IDs 140-154 - registerSimpleMetaTileEntity(BENDER, 140, "bender", RecipeMaps.BENDER_RECIPES, Textures.BENDER_OVERLAY, true); - - // Brewery, IDs 155-169 - registerSimpleMetaTileEntity(BREWERY, 155, "brewery", RecipeMaps.BREWING_RECIPES, Textures.BREWERY_OVERLAY, - true, GTUtility.hvCappedTankSizeFunction); - - // Canner, IDs 170-184 - registerSimpleMetaTileEntity(CANNER, 170, "canner", RecipeMaps.CANNER_RECIPES, Textures.CANNER_OVERLAY, true); - - // Centrifuge, IDs 185-199 - registerSimpleMetaTileEntity(CENTRIFUGE, 185, "centrifuge", RecipeMaps.CENTRIFUGE_RECIPES, - Textures.CENTRIFUGE_OVERLAY, false, GTUtility.largeTankSizeFunction); - - // Chemical Bath, IDs 200-214 - registerSimpleMetaTileEntity(CHEMICAL_BATH, 200, "chemical_bath", RecipeMaps.CHEMICAL_BATH_RECIPES, - Textures.CHEMICAL_BATH_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); - - // Chemical Reactor, IDs 215-229 - registerSimpleMetaTileEntity(CHEMICAL_REACTOR, 215, "chemical_reactor", RecipeMaps.CHEMICAL_RECIPES, - Textures.CHEMICAL_REACTOR_OVERLAY, true, tier -> 16000); - - // Compressor, IDs 230-244 - registerSimpleMetaTileEntity(COMPRESSOR, 230, "compressor", RecipeMaps.COMPRESSOR_RECIPES, - Textures.COMPRESSOR_OVERLAY, true); - - // Cutter, IDs 245-259 - registerSimpleMetaTileEntity(CUTTER, 245, "cutter", RecipeMaps.CUTTER_RECIPES, Textures.CUTTER_OVERLAY, true); - - // Distillery, IDs 260-274 - registerSimpleMetaTileEntity(DISTILLERY, 260, "distillery", RecipeMaps.DISTILLERY_RECIPES, - Textures.DISTILLERY_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); - - // Electrolyzer, IDs 275-289 - registerSimpleMetaTileEntity(ELECTROLYZER, 275, "electrolyzer", RecipeMaps.ELECTROLYZER_RECIPES, - Textures.ELECTROLYZER_OVERLAY, false, GTUtility.largeTankSizeFunction); - - // Electromagnetic Separator, IDs 290-304 - registerSimpleMetaTileEntity(ELECTROMAGNETIC_SEPARATOR, 290, "electromagnetic_separator", - RecipeMaps.ELECTROMAGNETIC_SEPARATOR_RECIPES, Textures.ELECTROMAGNETIC_SEPARATOR_OVERLAY, true); - - // Extractor, IDs 305-319 - registerSimpleMetaTileEntity(EXTRACTOR, 305, "extractor", RecipeMaps.EXTRACTOR_RECIPES, - Textures.EXTRACTOR_OVERLAY, true); - - // Extruder, IDs 320-334 - registerSimpleMetaTileEntity(EXTRUDER, 320, "extruder", RecipeMaps.EXTRUDER_RECIPES, Textures.EXTRUDER_OVERLAY, - true); - - // Fermenter, IDs 335-349 - registerSimpleMetaTileEntity(FERMENTER, 335, "fermenter", RecipeMaps.FERMENTING_RECIPES, - Textures.FERMENTER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); - - // TODO Replication system - // Mass Fabricator, IDs 350-364 - // registerSimpleMetaTileEntity(MASS_FABRICATOR, 350, "mass_fabricator", RecipeMaps.MASS_FABRICATOR_RECIPES, - // Textures.MASS_FABRICATOR_OVERLAY, true); - - // TODO Should anonymously override SimpleMachineMetaTileEntity#getCircuitSlotOverlay() to display the data - // stick overlay - // Replicator, IDs 365-379 - // registerSimpleMetaTileEntity(REPLICATOR, 365, "replicator", RecipeMaps.REPLICATOR_RECIPES, - // Textures.REPLICATOR_OVERLAY, true); - - // Fluid Heater, IDs 380-394 - registerSimpleMetaTileEntity(FLUID_HEATER, 380, "fluid_heater", RecipeMaps.FLUID_HEATER_RECIPES, - Textures.FLUID_HEATER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); - - // Fluid Solidifier, IDs 395-409 - registerSimpleMetaTileEntity(FLUID_SOLIDIFIER, 395, "fluid_solidifier", RecipeMaps.FLUID_SOLIDFICATION_RECIPES, - Textures.FLUID_SOLIDIFIER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); - - // Forge Hammer, IDs 410-424 - registerSimpleMetaTileEntity(FORGE_HAMMER, 410, "forge_hammer", RecipeMaps.FORGE_HAMMER_RECIPES, - Textures.FORGE_HAMMER_OVERLAY, true); - - // Forming Press, IDs 425-439 - registerSimpleMetaTileEntity(FORMING_PRESS, 425, "forming_press", RecipeMaps.FORMING_PRESS_RECIPES, - Textures.FORMING_PRESS_OVERLAY, true); - - // Lathe, IDs 440-454 - registerSimpleMetaTileEntity(LATHE, 440, "lathe", RecipeMaps.LATHE_RECIPES, Textures.LATHE_OVERLAY, true); - - // Scanner, IDs 455-469 - registerSimpleMetaTileEntity(SCANNER, 455, "scanner", RecipeMaps.SCANNER_RECIPES, Textures.SCANNER_OVERLAY, - true); - - // Mixer, IDs 470-484 - registerSimpleMetaTileEntity(MIXER, 470, "mixer", RecipeMaps.MIXER_RECIPES, Textures.MIXER_OVERLAY, false, - GTUtility.hvCappedTankSizeFunction); - - // Ore Washer, IDs 485-499 - registerSimpleMetaTileEntity(ORE_WASHER, 485, "ore_washer", RecipeMaps.ORE_WASHER_RECIPES, - Textures.ORE_WASHER_OVERLAY, true); - - // Packer, IDs 500-514 - registerSimpleMetaTileEntity(PACKER, 500, "packer", RecipeMaps.PACKER_RECIPES, Textures.PACKER_OVERLAY, true); - - // FREE, IDs 515-529 - - // Gas Collectors, IDs 530-544 - registerMetaTileEntities(GAS_COLLECTOR, 530, "gas_collector", - (tier, voltageName) -> new MetaTileEntityGasCollector( - gregtechId(String.format("%s.%s", "gas_collector", voltageName)), - RecipeMaps.GAS_COLLECTOR_RECIPES, Textures.GAS_COLLECTOR_OVERLAY, tier, false, - GTUtility.largeTankSizeFunction)); - // Polarizer, IDs 545-559 - registerSimpleMetaTileEntity(POLARIZER, 545, "polarizer", RecipeMaps.POLARIZER_RECIPES, - Textures.POLARIZER_OVERLAY, true); - - // Laser Engraver, IDs 560-574 - registerSimpleMetaTileEntity(LASER_ENGRAVER, 560, "laser_engraver", RecipeMaps.LASER_ENGRAVER_RECIPES, - Textures.LASER_ENGRAVER_OVERLAY, true); - - // Sifter, IDs 575-589 - registerSimpleMetaTileEntity(SIFTER, 575, "sifter", RecipeMaps.SIFTER_RECIPES, Textures.SIFTER_OVERLAY, true); - - // FREE, IDs 590-604 - - // Thermal Centrifuge, IDs 605-619 - registerSimpleMetaTileEntity(THERMAL_CENTRIFUGE, 605, "thermal_centrifuge", - RecipeMaps.THERMAL_CENTRIFUGE_RECIPES, Textures.THERMAL_CENTRIFUGE_OVERLAY, true); - - // Wire Mill, IDs 620-634 - registerSimpleMetaTileEntity(WIREMILL, 620, "wiremill", RecipeMaps.WIREMILL_RECIPES, Textures.WIREMILL_OVERLAY, - true); - - // Circuit Assembler, IDs 650-664 - registerSimpleMetaTileEntity(CIRCUIT_ASSEMBLER, 635, "circuit_assembler", RecipeMaps.CIRCUIT_ASSEMBLER_RECIPES, - Textures.CIRCUIT_ASSEMBLER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); - - // Rock Breaker, IDs 665-679 - registerMetaTileEntities(ROCK_BREAKER, 665, "rock_breaker", - (tier, voltageName) -> new MetaTileEntityRockBreaker( - gregtechId(String.format("%s.%s", "rock_breaker", voltageName)), - RecipeMaps.ROCK_BREAKER_RECIPES, Textures.ROCK_BREAKER_OVERLAY, tier)); - - // Some space here for more SimpleMachines - - // Space left for these just in case - - // Chunk Miner, IDs 920-934 - - MINER[0] = registerMetaTileEntity(920, new MetaTileEntityMiner(gregtechId("miner.lv"), 1, 160, 8, 1)); - MINER[1] = registerMetaTileEntity(921, new MetaTileEntityMiner(gregtechId("miner.mv"), 2, 80, 16, 2)); - MINER[2] = registerMetaTileEntity(922, new MetaTileEntityMiner(gregtechId("miner.hv"), 3, 40, 24, 3)); - - // Diesel Generator, IDs 935-949 - COMBUSTION_GENERATOR[0] = registerMetaTileEntity(935, - new MetaTileEntitySingleCombustion(gregtechId("combustion_generator.lv"), - RecipeMaps.COMBUSTION_GENERATOR_FUELS, Textures.COMBUSTION_GENERATOR_OVERLAY, 1, - GTUtility.genericGeneratorTankSizeFunction)); - COMBUSTION_GENERATOR[1] = registerMetaTileEntity(936, - new MetaTileEntitySingleCombustion(gregtechId("combustion_generator.mv"), - RecipeMaps.COMBUSTION_GENERATOR_FUELS, Textures.COMBUSTION_GENERATOR_OVERLAY, 2, - GTUtility.genericGeneratorTankSizeFunction)); - COMBUSTION_GENERATOR[2] = registerMetaTileEntity(937, - new MetaTileEntitySingleCombustion(gregtechId("combustion_generator.hv"), - RecipeMaps.COMBUSTION_GENERATOR_FUELS, Textures.COMBUSTION_GENERATOR_OVERLAY, 3, - GTUtility.genericGeneratorTankSizeFunction)); - - // Steam Turbine, IDs 950-964 - STEAM_TURBINE[0] = registerMetaTileEntity(950, - new MetaTileEntitySingleTurbine(gregtechId("steam_turbine.lv"), RecipeMaps.STEAM_TURBINE_FUELS, - Textures.STEAM_TURBINE_OVERLAY, 1, GTUtility.steamGeneratorTankSizeFunction)); - STEAM_TURBINE[1] = registerMetaTileEntity(951, - new MetaTileEntitySingleTurbine(gregtechId("steam_turbine.mv"), RecipeMaps.STEAM_TURBINE_FUELS, - Textures.STEAM_TURBINE_OVERLAY, 2, GTUtility.steamGeneratorTankSizeFunction)); - STEAM_TURBINE[2] = registerMetaTileEntity(952, - new MetaTileEntitySingleTurbine(gregtechId("steam_turbine.hv"), RecipeMaps.STEAM_TURBINE_FUELS, - Textures.STEAM_TURBINE_OVERLAY, 3, GTUtility.steamGeneratorTankSizeFunction)); - - // Gas Turbine, IDs 965-979 - GAS_TURBINE[0] = registerMetaTileEntity(965, - new MetaTileEntitySingleTurbine(gregtechId("gas_turbine.lv"), RecipeMaps.GAS_TURBINE_FUELS, - Textures.GAS_TURBINE_OVERLAY, 1, GTUtility.genericGeneratorTankSizeFunction)); - GAS_TURBINE[1] = registerMetaTileEntity(966, - new MetaTileEntitySingleTurbine(gregtechId("gas_turbine.mv"), RecipeMaps.GAS_TURBINE_FUELS, - Textures.GAS_TURBINE_OVERLAY, 2, GTUtility.genericGeneratorTankSizeFunction)); - GAS_TURBINE[2] = registerMetaTileEntity(967, - new MetaTileEntitySingleTurbine(gregtechId("gas_turbine.hv"), RecipeMaps.GAS_TURBINE_FUELS, - Textures.GAS_TURBINE_OVERLAY, 3, GTUtility.genericGeneratorTankSizeFunction)); - - // Item Collector, IDs 980-983 - ITEM_COLLECTOR[0] = registerMetaTileEntity(980, - new MetaTileEntityItemCollector(gregtechId("item_collector.lv"), 1, 8)); - ITEM_COLLECTOR[1] = registerMetaTileEntity(981, - new MetaTileEntityItemCollector(gregtechId("item_collector.mv"), 2, 16)); - ITEM_COLLECTOR[2] = registerMetaTileEntity(982, - new MetaTileEntityItemCollector(gregtechId("item_collector.hv"), 3, 32)); - ITEM_COLLECTOR[3] = registerMetaTileEntity(983, - new MetaTileEntityItemCollector(gregtechId("item_collector.ev"), 4, 64)); - - MAGIC_ENERGY_ABSORBER = registerMetaTileEntity(984, - new MetaTileEntityMagicEnergyAbsorber(gregtechId("magic_energy_absorber"))); - - // Hulls, IDs 985-999 - int endPos = GregTechAPI.isHighTier() ? HULL.length : Math.min(HULL.length - 1, GTValues.UV + 2); - for (int i = 0; i < endPos; i++) { - HULL[i] = new MetaTileEntityHull(gregtechId("hull." + GTValues.VN[i].toLowerCase()), i); - registerMetaTileEntity(985 + i, HULL[i]); - } - - // MULTIBLOCK START: IDs 1000-1149. Space left for addons to register Multiblocks grouped with the rest in JEI - PRIMITIVE_BLAST_FURNACE = registerMetaTileEntity(1000, - new MetaTileEntityPrimitiveBlastFurnace(gregtechId("primitive_blast_furnace.bronze"))); - ELECTRIC_BLAST_FURNACE = registerMetaTileEntity(1001, - new MetaTileEntityElectricBlastFurnace(gregtechId("electric_blast_furnace"))); - VACUUM_FREEZER = registerMetaTileEntity(1002, new MetaTileEntityVacuumFreezer(gregtechId("vacuum_freezer"))); - IMPLOSION_COMPRESSOR = registerMetaTileEntity(1003, - new MetaTileEntityImplosionCompressor(gregtechId("implosion_compressor"))); - PYROLYSE_OVEN = registerMetaTileEntity(1004, new MetaTileEntityPyrolyseOven(gregtechId("pyrolyse_oven"))); - DISTILLATION_TOWER = registerMetaTileEntity(1005, - new MetaTileEntityDistillationTower(gregtechId("distillation_tower"), true)); - MULTI_FURNACE = registerMetaTileEntity(1006, new MetaTileEntityMultiSmelter(gregtechId("multi_furnace"))); - LARGE_COMBUSTION_ENGINE = registerMetaTileEntity(1007, - new MetaTileEntityLargeCombustionEngine(gregtechId("large_combustion_engine"), GTValues.EV)); - EXTREME_COMBUSTION_ENGINE = registerMetaTileEntity(1008, - new MetaTileEntityLargeCombustionEngine(gregtechId("extreme_combustion_engine"), GTValues.IV)); - CRACKER = registerMetaTileEntity(1009, new MetaTileEntityCrackingUnit(gregtechId("cracker"))); - - LARGE_STEAM_TURBINE = registerMetaTileEntity(1010, - new MetaTileEntityLargeTurbine(gregtechId("large_turbine.steam"), RecipeMaps.STEAM_TURBINE_FUELS, 3, - MetaBlocks.TURBINE_CASING.getState(BlockTurbineCasing.TurbineCasingType.STEEL_TURBINE_CASING), - MetaBlocks.TURBINE_CASING.getState(BlockTurbineCasing.TurbineCasingType.STEEL_GEARBOX), - Textures.SOLID_STEEL_CASING, false, Textures.LARGE_STEAM_TURBINE_OVERLAY)); - LARGE_GAS_TURBINE = registerMetaTileEntity(1011, new MetaTileEntityLargeTurbine(gregtechId("large_turbine.gas"), - RecipeMaps.GAS_TURBINE_FUELS, 4, - MetaBlocks.TURBINE_CASING.getState(BlockTurbineCasing.TurbineCasingType.STAINLESS_TURBINE_CASING), - MetaBlocks.TURBINE_CASING.getState(BlockTurbineCasing.TurbineCasingType.STAINLESS_STEEL_GEARBOX), - Textures.CLEAN_STAINLESS_STEEL_CASING, true, Textures.LARGE_GAS_TURBINE_OVERLAY)); - LARGE_PLASMA_TURBINE = registerMetaTileEntity(1012, - new MetaTileEntityLargeTurbine(gregtechId("large_turbine.plasma"), RecipeMaps.PLASMA_GENERATOR_FUELS, 5, - MetaBlocks.TURBINE_CASING - .getState(BlockTurbineCasing.TurbineCasingType.TUNGSTENSTEEL_TURBINE_CASING), - MetaBlocks.TURBINE_CASING.getState(BlockTurbineCasing.TurbineCasingType.TUNGSTENSTEEL_GEARBOX), - Textures.ROBUST_TUNGSTENSTEEL_CASING, false, Textures.LARGE_PLASMA_TURBINE_OVERLAY)); - - LARGE_BRONZE_BOILER = registerMetaTileEntity(1013, - new MetaTileEntityLargeBoiler(gregtechId("large_boiler.bronze"), BoilerType.BRONZE)); - LARGE_STEEL_BOILER = registerMetaTileEntity(1014, - new MetaTileEntityLargeBoiler(gregtechId("large_boiler.steel"), BoilerType.STEEL)); - LARGE_TITANIUM_BOILER = registerMetaTileEntity(1015, - new MetaTileEntityLargeBoiler(gregtechId("large_boiler.titanium"), BoilerType.TITANIUM)); - LARGE_TUNGSTENSTEEL_BOILER = registerMetaTileEntity(1016, - new MetaTileEntityLargeBoiler(gregtechId("large_boiler.tungstensteel"), BoilerType.TUNGSTENSTEEL)); - - COKE_OVEN = registerMetaTileEntity(1017, new MetaTileEntityCokeOven(gregtechId("coke_oven"))); - COKE_OVEN_HATCH = registerMetaTileEntity(1018, new MetaTileEntityCokeOvenHatch(gregtechId("coke_oven_hatch"))); - - ASSEMBLY_LINE = registerMetaTileEntity(1019, new MetaTileEntityAssemblyLine(gregtechId("assembly_line"))); - FUSION_REACTOR[0] = registerMetaTileEntity(1020, - new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.luv"), GTValues.LuV)); - FUSION_REACTOR[1] = registerMetaTileEntity(1021, - new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.zpm"), GTValues.ZPM)); - FUSION_REACTOR[2] = registerMetaTileEntity(1022, - new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.uv"), GTValues.UV)); - - LARGE_CHEMICAL_REACTOR = registerMetaTileEntity(1023, - new MetaTileEntityLargeChemicalReactor(gregtechId("large_chemical_reactor"))); - - STEAM_OVEN = registerMetaTileEntity(1024, new MetaTileEntitySteamOven(gregtechId("steam_oven"))); - STEAM_GRINDER = registerMetaTileEntity(1025, new MetaTileEntitySteamGrinder(gregtechId("steam_grinder"))); - - BASIC_LARGE_MINER = registerMetaTileEntity(1026, - new MetaTileEntityLargeMiner(gregtechId("large_miner.ev"), GTValues.EV, 16, 3, 4, Materials.Steel, 8)); - LARGE_MINER = registerMetaTileEntity(1027, new MetaTileEntityLargeMiner(gregtechId("large_miner.iv"), - GTValues.IV, 4, 5, 5, Materials.Titanium, 16)); - ADVANCED_LARGE_MINER = registerMetaTileEntity(1028, new MetaTileEntityLargeMiner(gregtechId("large_miner.luv"), - GTValues.LuV, 1, 7, 6, Materials.TungstenSteel, 32)); - - CENTRAL_MONITOR = registerMetaTileEntity(1029, new MetaTileEntityCentralMonitor(gregtechId("central_monitor"))); - - PROCESSING_ARRAY = registerMetaTileEntity(1030, - new MetaTileEntityProcessingArray(gregtechId("processing_array"), 0)); - ADVANCED_PROCESSING_ARRAY = registerMetaTileEntity(1031, - new MetaTileEntityProcessingArray(gregtechId("advanced_processing_array"), 1)); - - BASIC_FLUID_DRILLING_RIG = registerMetaTileEntity(1032, - new MetaTileEntityFluidDrill(gregtechId("fluid_drilling_rig.mv"), 2)); - FLUID_DRILLING_RIG = registerMetaTileEntity(1033, - new MetaTileEntityFluidDrill(gregtechId("fluid_drilling_rig.hv"), 3)); - ADVANCED_FLUID_DRILLING_RIG = registerMetaTileEntity(1034, - new MetaTileEntityFluidDrill(gregtechId("fluid_drilling_rig.ev"), 4)); - - CLEANROOM = registerMetaTileEntity(1035, new MetaTileEntityCleanroom(gregtechId("cleanroom"))); - - CHARCOAL_PILE_IGNITER = registerMetaTileEntity(1036, - new MetaTileEntityCharcoalPileIgniter(gregtechId("charcoal_pile"))); - - DATA_BANK = registerMetaTileEntity(1037, new MetaTileEntityDataBank(gregtechId("data_bank"))); - RESEARCH_STATION = registerMetaTileEntity(1038, - new MetaTileEntityResearchStation(gregtechId("research_station"))); - HIGH_PERFORMANCE_COMPUTING_ARRAY = registerMetaTileEntity(1039, - new MetaTileEntityHPCA(gregtechId("high_performance_computing_array"))); - NETWORK_SWITCH = registerMetaTileEntity(1040, new MetaTileEntityNetworkSwitch(gregtechId("network_switch"))); - - POWER_SUBSTATION = registerMetaTileEntity(1041, - new MetaTileEntityPowerSubstation(gregtechId("power_substation"))); - ACTIVE_TRANSFORMER = registerMetaTileEntity(1042, - new MetaTileEntityActiveTransformer(gregtechId("active_transformer"))); - - // MISC MTE's START: IDs 1150-2000 - - // Import/Export Buses/Hatches, IDs 1150-1209 - endPos = GregTechAPI.isHighTier() ? ITEM_IMPORT_BUS.length : GTValues.UHV + 1; - for (int i = 0; i < endPos; i++) { - String voltageName = GTValues.VN[i].toLowerCase(); - ITEM_IMPORT_BUS[i] = new MetaTileEntityItemBus(gregtechId("item_bus.import." + voltageName), i, false); - ITEM_EXPORT_BUS[i] = new MetaTileEntityItemBus(gregtechId("item_bus.export." + voltageName), i, true); - FLUID_IMPORT_HATCH[i] = new MetaTileEntityFluidHatch(gregtechId("fluid_hatch.import." + voltageName), i, - false); - FLUID_EXPORT_HATCH[i] = new MetaTileEntityFluidHatch(gregtechId("fluid_hatch.export." + voltageName), i, - true); - - if (i <= GTValues.UHV) { - registerMetaTileEntity(1150 + i, ITEM_IMPORT_BUS[i]); - registerMetaTileEntity(1165 + i, ITEM_EXPORT_BUS[i]); - registerMetaTileEntity(1180 + i, FLUID_IMPORT_HATCH[i]); - registerMetaTileEntity(1195 + i, FLUID_EXPORT_HATCH[i]); - } else { - registerMetaTileEntity(1850 + i, ITEM_IMPORT_BUS[i]); - registerMetaTileEntity(1855 + i, ITEM_EXPORT_BUS[i]); - registerMetaTileEntity(1860 + i, FLUID_IMPORT_HATCH[i]); - registerMetaTileEntity(1865 + i, FLUID_EXPORT_HATCH[i]); - } - } - - // IDs 1190, 1191, 1205, and 1206 reserved for multi-fluid hatches - - // Energy Input/Output Hatches, IDs 1210-1269, 1800-1829 - endPos = GregTechAPI.isHighTier() ? ENERGY_INPUT_HATCH.length - 1 : - Math.min(ENERGY_INPUT_HATCH.length - 1, GTValues.UV + 2); - for (int i = 0; i < endPos; i++) { - String voltageName = GTValues.VN[i].toLowerCase(); - ENERGY_INPUT_HATCH[i] = registerMetaTileEntity(1210 + i, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input." + voltageName), i, 2, false)); - ENERGY_OUTPUT_HATCH[i] = registerMetaTileEntity(1225 + i, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output." + voltageName), i, 2, true)); - - if (i >= GTValues.IV) { - int baseId = (i <= GTValues.UHV ? 1240 : 1820); - - ENERGY_INPUT_HATCH_4A[i + 1 - GTValues.IV] = registerMetaTileEntity(baseId + i - GTValues.IV, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input_4a." + voltageName), i, 4, false)); - ENERGY_INPUT_HATCH_16A[i - GTValues.IV] = registerMetaTileEntity(baseId + 5 + i - GTValues.IV, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input_16a." + voltageName), i, 16, - false)); - ENERGY_OUTPUT_HATCH_4A[i + 1 - GTValues.IV] = registerMetaTileEntity(baseId + 10 + i - GTValues.IV, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output_4a." + voltageName), i, 4, true)); - ENERGY_OUTPUT_HATCH_16A[i - GTValues.IV] = registerMetaTileEntity(baseId + 15 + i - GTValues.IV, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output_16a." + voltageName), i, 16, - true)); - SUBSTATION_ENERGY_INPUT_HATCH[i - GTValues.IV] = registerMetaTileEntity(baseId + 20 + i - GTValues.IV, - new MetaTileEntitySubstationEnergyHatch(gregtechId("substation_hatch.input_64a." + voltageName), - i, 64, false)); - SUBSTATION_ENERGY_OUTPUT_HATCH[i - GTValues.IV] = registerMetaTileEntity(baseId + 25 + i - GTValues.IV, - new MetaTileEntitySubstationEnergyHatch( - gregtechId("substation_hatch.output_64a." + voltageName), i, 64, true)); - } - } - ENERGY_INPUT_HATCH_4A[0] = registerMetaTileEntity(1399, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input_4a.ev"), GTValues.EV, 4, false)); - ENERGY_OUTPUT_HATCH_4A[0] = registerMetaTileEntity(1400, - new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output_4a.ev"), GTValues.EV, 4, true)); - - // Transformer, IDs 1270-1299 - endPos = GregTechAPI.isHighTier() ? TRANSFORMER.length - 1 : Math.min(TRANSFORMER.length - 1, GTValues.UV); - for (int i = 0; i <= endPos; i++) { - // 1A <-> 4A - MetaTileEntityTransformer transformer = new MetaTileEntityTransformer( - gregtechId("transformer." + GTValues.VN[i].toLowerCase()), i); - TRANSFORMER[i] = registerMetaTileEntity(1270 + (i), transformer); - // 2A <-> 8A and 4A <-> 16A - MetaTileEntityTransformer adjustableTransformer = new MetaTileEntityTransformer( - gregtechId("transformer.hi_amp." + GTValues.VN[i].toLowerCase()), i, 2, 4); - HI_AMP_TRANSFORMER[i] = registerMetaTileEntity(1730 + i, adjustableTransformer); - // 16A <-> 64A (can do other amperages because of legacy compat) - adjustableTransformer = new MetaTileEntityTransformer( - gregtechId("transformer.adjustable." + GTValues.VN[i].toLowerCase()), i, 1, 2, 4, 16); - POWER_TRANSFORMER[i] = registerMetaTileEntity(1285 + (i), adjustableTransformer); - } - - // Diode, IDs 1300-1314 - endPos = GregTechAPI.isHighTier() ? DIODES.length - 1 : Math.min(DIODES.length - 1, GTValues.UV + 2); - for (int i = 0; i < endPos; i++) { - String diodeId = "diode." + GTValues.VN[i].toLowerCase(); - MetaTileEntityDiode diode = new MetaTileEntityDiode(gregtechId(diodeId), i, 16); - DIODES[i] = registerMetaTileEntity(1300 + i, diode); - } - - // Battery Buffer, IDs 1315-1360 - endPos = GregTechAPI.isHighTier() ? BATTERY_BUFFER[0].length : GTValues.UHV + 1; - int[] batteryBufferSlots = new int[] { 4, 8, 16 }; - for (int slot = 0; slot < batteryBufferSlots.length; slot++) { - BATTERY_BUFFER[slot] = new MetaTileEntityBatteryBuffer[endPos]; - for (int i = 0; i < endPos; i++) { - String bufferId = "battery_buffer." + GTValues.VN[i].toLowerCase() + "." + batteryBufferSlots[slot]; - MetaTileEntityBatteryBuffer batteryBuffer = new MetaTileEntityBatteryBuffer(gregtechId(bufferId), i, - batteryBufferSlots[slot]); - BATTERY_BUFFER[slot][i] = registerMetaTileEntity(1315 + BATTERY_BUFFER[slot].length * slot + i, - batteryBuffer); - } - } - - // Charger, IDs 1375-1389 - endPos = GregTechAPI.isHighTier() ? CHARGER.length : GTValues.UHV + 1; - for (int i = 0; i < endPos; i++) { - String chargerId = "charger." + GTValues.VN[i].toLowerCase(); - MetaTileEntityCharger charger = new MetaTileEntityCharger(gregtechId(chargerId), i, 4); - CHARGER[i] = registerMetaTileEntity(1375 + i, charger); - } - - // World Accelerators, IDs 1390-1404 - if (ConfigHolder.machines.enableWorldAccelerators) { - WORLD_ACCELERATOR[0] = registerMetaTileEntity(1390, - new MetaTileEntityWorldAccelerator(gregtechId("world_accelerator.lv"), 1)); - WORLD_ACCELERATOR[1] = registerMetaTileEntity(1391, - new MetaTileEntityWorldAccelerator(gregtechId("world_accelerator.mv"), 2)); - WORLD_ACCELERATOR[2] = registerMetaTileEntity(1392, - new MetaTileEntityWorldAccelerator(gregtechId("world_accelerator.hv"), 3)); - WORLD_ACCELERATOR[3] = registerMetaTileEntity(1393, - new MetaTileEntityWorldAccelerator(gregtechId("world_accelerator.ev"), 4)); - WORLD_ACCELERATOR[4] = registerMetaTileEntity(1394, - new MetaTileEntityWorldAccelerator(gregtechId("world_accelerator.iv"), 5)); - WORLD_ACCELERATOR[5] = registerMetaTileEntity(1395, - new MetaTileEntityWorldAccelerator(gregtechId("world_accelerator.luv"), 6)); - WORLD_ACCELERATOR[6] = registerMetaTileEntity(1396, - new MetaTileEntityWorldAccelerator(gregtechId("world_accelerator.zpm"), 7)); - WORLD_ACCELERATOR[7] = registerMetaTileEntity(1397, - new MetaTileEntityWorldAccelerator(gregtechId("world_accelerator.uv"), 8)); - } - - MACHINE_HATCH = registerMetaTileEntity(1398, new MetaTileEntityMachineHatch(gregtechId("machine_hatch"), 5)); - - // 1399 and 1400 are taken by the EV 4A hatches, and are grouped near the other registration rather than here - // 1401 is taken by the Cleanroom Maintenance hatches, and is grouped with the maintenance hatch registration - // rather than here - - PASSTHROUGH_HATCH_ITEM = registerMetaTileEntity(1402, - new MetaTileEntityPassthroughHatchItem(gregtechId("passthrough_hatch_item"), 3)); - PASSTHROUGH_HATCH_FLUID = registerMetaTileEntity(1403, - new MetaTileEntityPassthroughHatchFluid(gregtechId("passthrough_hatch_fluid"), 3)); - - DATA_ACCESS_HATCH = registerMetaTileEntity(1404, - new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch"), GTValues.EV, false)); - ADVANCED_DATA_ACCESS_HATCH = registerMetaTileEntity(1405, - new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch.advanced"), GTValues.LuV, false)); - CREATIVE_DATA_HATCH = registerMetaTileEntity(1406, - new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch.creative"), GTValues.MAX, true)); - OPTICAL_DATA_HATCH_RECEIVER = registerMetaTileEntity(1407, - new MetaTileEntityOpticalDataHatch(gregtechId("data_access_hatch.optical.receiver"), false)); - OPTICAL_DATA_HATCH_TRANSMITTER = registerMetaTileEntity(1408, - new MetaTileEntityOpticalDataHatch(gregtechId("data_access_hatch.optical.transmitter"), true)); - COMPUTATION_HATCH_RECEIVER = registerMetaTileEntity(1409, - new MetaTileEntityComputationHatch(gregtechId("computation_hatch.receiver"), false)); - COMPUTATION_HATCH_TRANSMITTER = registerMetaTileEntity(1410, - new MetaTileEntityComputationHatch(gregtechId("computation_hatch.transmitter"), true)); - OBJECT_HOLDER = registerMetaTileEntity(1411, - new MetaTileEntityObjectHolder(gregtechId("research_station.object_holder"))); - HPCA_EMPTY_COMPONENT = registerMetaTileEntity(1412, - new MetaTileEntityHPCAEmpty(gregtechId("hpca.empty_component"))); - HPCA_COMPUTATION_COMPONENT = registerMetaTileEntity(1413, - new MetaTileEntityHPCAComputation(gregtechId("hpca.computation_component"), false)); - HPCA_ADVANCED_COMPUTATION_COMPONENT = registerMetaTileEntity(1414, - new MetaTileEntityHPCAComputation(gregtechId("hpca.advanced_computation_component"), true)); - HPCA_HEAT_SINK_COMPONENT = registerMetaTileEntity(1415, - new MetaTileEntityHPCACooler(gregtechId("hpca.heat_sink_component"), false)); - HPCA_ACTIVE_COOLER_COMPONENT = registerMetaTileEntity(1416, - new MetaTileEntityHPCACooler(gregtechId("hpca.active_cooler_component"), true)); - HPCA_BRIDGE_COMPONENT = registerMetaTileEntity(1417, - new MetaTileEntityHPCABridge(gregtechId("hpca.bridge_component"))); - - RESERVOIR_HATCH = registerMetaTileEntity(1418, new MetaTileEntityReservoirHatch(gregtechId("reservoir_hatch"))); - // Free ID 1419 - endPos = GregTechAPI.isHighTier() ? LASER_INPUT_HATCH_256.length - 1 : - Math.min(LASER_INPUT_HATCH_256.length - 1, GTValues.UHV - GTValues.IV); - for (int i = 0; i < endPos; i++) { - int v = i + GTValues.IV; - String voltageName = GTValues.VN[v].toLowerCase(); - LASER_INPUT_HATCH_256[i] = registerMetaTileEntity(1420 + i, - new MetaTileEntityLaserHatch(gregtechId("laser_hatch.target_256a." + voltageName), false, v, 256)); - LASER_OUTPUT_HATCH_256[i] = registerMetaTileEntity(1429 + i, - new MetaTileEntityLaserHatch(gregtechId("laser_hatch.source_256a." + voltageName), true, v, 256)); - LASER_INPUT_HATCH_1024[i] = registerMetaTileEntity(1438 + i, new MetaTileEntityLaserHatch( - gregtechId("laser_hatch.target_1024a." + voltageName), false, v, 1024)); - LASER_OUTPUT_HATCH_1024[i] = registerMetaTileEntity(1447 + i, - new MetaTileEntityLaserHatch(gregtechId("laser_hatch.source_1024a." + voltageName), true, v, 1024)); - LASER_INPUT_HATCH_4096[i] = registerMetaTileEntity(1456 + i, new MetaTileEntityLaserHatch( - gregtechId("laser_hatch.target_4096a." + voltageName), false, v, 4096)); - LASER_OUTPUT_HATCH_4096[i] = registerMetaTileEntity(1465 + i, - new MetaTileEntityLaserHatch(gregtechId("laser_hatch.source_4096a." + voltageName), true, v, 4096)); - } - // Free Range: 1475-1509 - - // Buffers, IDs 1510-1512 - BUFFER[0] = registerMetaTileEntity(1510, new MetaTileEntityBuffer(gregtechId("buffer.lv"), 1)); - BUFFER[1] = registerMetaTileEntity(1511, new MetaTileEntityBuffer(gregtechId("buffer.mv"), 2)); - BUFFER[2] = registerMetaTileEntity(1512, new MetaTileEntityBuffer(gregtechId("buffer.hv"), 3)); - - // Free Range: 1513-1514 - - // Fishers, IDs 1515-1529 - FISHER[0] = registerMetaTileEntity(1515, new MetaTileEntityFisher(gregtechId("fisher.lv"), 1)); - FISHER[1] = registerMetaTileEntity(1516, new MetaTileEntityFisher(gregtechId("fisher.mv"), 2)); - FISHER[2] = registerMetaTileEntity(1517, new MetaTileEntityFisher(gregtechId("fisher.hv"), 3)); - FISHER[3] = registerMetaTileEntity(1518, new MetaTileEntityFisher(gregtechId("fisher.ev"), 4)); - - // Pumps, IDs 1530-1544 - PUMP[0] = registerMetaTileEntity(1530, new MetaTileEntityPump(gregtechId("pump.lv"), 1)); - PUMP[1] = registerMetaTileEntity(1531, new MetaTileEntityPump(gregtechId("pump.mv"), 2)); - PUMP[2] = registerMetaTileEntity(1532, new MetaTileEntityPump(gregtechId("pump.hv"), 3)); - PUMP[3] = registerMetaTileEntity(1533, new MetaTileEntityPump(gregtechId("pump.ev"), 4)); - - // Quantum Storage Network 1757 - 1759 - QUANTUM_STORAGE_CONTROLLER = registerMetaTileEntity(1757, - new MetaTileEntityQuantumStorageController(gregtechId("quantum_storage_controller"))); - QUANTUM_STORAGE_PROXY = registerMetaTileEntity(1758, - new MetaTileEntityQuantumProxy(gregtechId("quantum_storage_proxy"))); - QUANTUM_STORAGE_EXTENDER = registerMetaTileEntity(1759, - new MetaTileEntityQuantumExtender(gregtechId("quantum_storage_extender"))); - - // Super / Quantum Chests, IDs 1560-1574 - for (int i = 0; i < 5; i++) { - String voltageName = GTValues.VN[i + 1].toLowerCase(); - QUANTUM_CHEST[i] = new MetaTileEntityQuantumChest(gregtechId("super_chest." + voltageName), i + 1, - 4000000L * (int) Math.pow(2, i)); - registerMetaTileEntity(1560 + i, QUANTUM_CHEST[i]); - } - - for (int i = 5; i < QUANTUM_CHEST.length; i++) { - String voltageName = GTValues.VN[i].toLowerCase(); - long capacity = i == GTValues.UHV ? Integer.MAX_VALUE : 4000000L * (int) Math.pow(2, i); - QUANTUM_CHEST[i] = new MetaTileEntityQuantumChest(gregtechId("quantum_chest." + voltageName), i, capacity); - registerMetaTileEntity(1565 + i, QUANTUM_CHEST[i]); - } - - // Super / Quantum Tanks, IDs 1575-1589 - for (int i = 0; i < 5; i++) { - String voltageName = GTValues.VN[i + 1].toLowerCase(); - QUANTUM_TANK[i] = new MetaTileEntityQuantumTank(gregtechId("super_tank." + voltageName), i + 1, - 4000000 * (int) Math.pow(2, i)); - registerMetaTileEntity(1575 + i, QUANTUM_TANK[i]); - } - - for (int i = 5; i < QUANTUM_TANK.length; i++) { - String voltageName = GTValues.VN[i].toLowerCase(); - int capacity = i == GTValues.UHV ? Integer.MAX_VALUE : 4000000 * (int) Math.pow(2, i); - QUANTUM_TANK[i] = new MetaTileEntityQuantumTank(gregtechId("quantum_tank." + voltageName), i, capacity); - registerMetaTileEntity(1580 + i, QUANTUM_TANK[i]); - } - - // Block Breakers, IDs 1590-1594 - for (int i = 0; i < BLOCK_BREAKER.length; i++) { - String voltageName = GTValues.VN[i + 1].toLowerCase(); - BLOCK_BREAKER[i] = new MetaTileEntityBlockBreaker(gregtechId("block_breaker." + voltageName), i + 1); - registerMetaTileEntity(1590 + i, BLOCK_BREAKER[i]); - } - - // Tanks, IDs 1595-1609 - WOODEN_TANK_VALVE = registerMetaTileEntity(1596, - new MetaTileEntityTankValve(gregtechId("tank_valve.wood"), false)); - WOODEN_TANK = registerMetaTileEntity(1597, - new MetaTileEntityMultiblockTank(gregtechId("tank.wood"), false, 250 * 1000)); - - STEEL_TANK_VALVE = registerMetaTileEntity(1598, - new MetaTileEntityTankValve(gregtechId("tank_valve.steel"), true)); - STEEL_TANK = registerMetaTileEntity(1599, - new MetaTileEntityMultiblockTank(gregtechId("tank.steel"), true, 1000 * 1000)); - - // Drums, IDs 1610-1624 - WOODEN_DRUM = registerMetaTileEntity(1610, - new MetaTileEntityDrum(gregtechId("drum.wood"), Materials.Wood, 16000)); - BRONZE_DRUM = registerMetaTileEntity(1611, - new MetaTileEntityDrum(gregtechId("drum.bronze"), Materials.Bronze, 32000)); - STEEL_DRUM = registerMetaTileEntity(1612, - new MetaTileEntityDrum(gregtechId("drum.steel"), Materials.Steel, 64000)); - ALUMINIUM_DRUM = registerMetaTileEntity(1613, - new MetaTileEntityDrum(gregtechId("drum.aluminium"), Materials.Aluminium, 128000)); - STAINLESS_STEEL_DRUM = registerMetaTileEntity(1614, - new MetaTileEntityDrum(gregtechId("drum.stainless_steel"), Materials.StainlessSteel, 256000)); - TITANIUM_DRUM = registerMetaTileEntity(1615, - new MetaTileEntityDrum(gregtechId("drum.titanium"), Materials.Titanium, 512000)); - TUNGSTENSTEEL_DRUM = registerMetaTileEntity(1616, - new MetaTileEntityDrum(gregtechId("drum.tungstensteel"), Materials.TungstenSteel, 1024000)); - GOLD_DRUM = registerMetaTileEntity(1617, - new MetaTileEntityDrum(gregtechId("drum.gold"), Materials.Gold, 32000)); - - // Crates, IDs 1625-1639 - WOODEN_CRATE = registerMetaTileEntity(1625, - new MetaTileEntityCrate(gregtechId("crate.wood"), Materials.Wood, 27, 9)); - BRONZE_CRATE = registerMetaTileEntity(1626, - new MetaTileEntityCrate(gregtechId("crate.bronze"), Materials.Bronze, 54, 9)); - STEEL_CRATE = registerMetaTileEntity(1627, - new MetaTileEntityCrate(gregtechId("crate.steel"), Materials.Steel, 72, 9)); - ALUMINIUM_CRATE = registerMetaTileEntity(1628, - new MetaTileEntityCrate(gregtechId("crate.aluminium"), Materials.Aluminium, 90, 10)); - STAINLESS_STEEL_CRATE = registerMetaTileEntity(1629, - new MetaTileEntityCrate(gregtechId("crate.stainless_steel"), Materials.StainlessSteel, 108, 12)); - TITANIUM_CRATE = registerMetaTileEntity(1630, - new MetaTileEntityCrate(gregtechId("crate.titanium"), Materials.Titanium, 126, 14)); - TUNGSTENSTEEL_CRATE = registerMetaTileEntity(1631, - new MetaTileEntityCrate(gregtechId("crate.tungstensteel"), Materials.TungstenSteel, 144, 16)); - - // Rotor Holder, IDs 1640-1645 - ROTOR_HOLDER[0] = registerMetaTileEntity(1640, - new MetaTileEntityRotorHolder(gregtechId("rotor_holder.hv"), GTValues.HV)); - ROTOR_HOLDER[1] = registerMetaTileEntity(1641, - new MetaTileEntityRotorHolder(gregtechId("rotor_holder.ev"), GTValues.EV)); - ROTOR_HOLDER[2] = registerMetaTileEntity(1642, - new MetaTileEntityRotorHolder(gregtechId("rotor_holder.iv"), GTValues.IV)); - ROTOR_HOLDER[3] = registerMetaTileEntity(1643, - new MetaTileEntityRotorHolder(gregtechId("rotor_holder.luv"), GTValues.LuV)); - ROTOR_HOLDER[4] = registerMetaTileEntity(1644, - new MetaTileEntityRotorHolder(gregtechId("rotor_holder.zpm"), GTValues.ZPM)); - ROTOR_HOLDER[5] = registerMetaTileEntity(1645, - new MetaTileEntityRotorHolder(gregtechId("rotor_holder.uv"), GTValues.UV)); - - // Misc, IDs 1646-1999 - WORKBENCH = registerMetaTileEntity(1647, new MetaTileEntityWorkbench(gregtechId("workbench"))); - PRIMITIVE_WATER_PUMP = registerMetaTileEntity(1648, - new MetaTileEntityPrimitiveWaterPump(gregtechId("primitive_water_pump"))); - PUMP_OUTPUT_HATCH = registerMetaTileEntity(1649, new MetaTileEntityPumpHatch(gregtechId("pump_hatch"))); - - CREATIVE_ENERGY = registerMetaTileEntity(1650, new MetaTileEntityCreativeEnergy()); - // Steam Hatches/Buses - STEAM_EXPORT_BUS = registerMetaTileEntity(1651, - new MetaTileEntitySteamItemBus(gregtechId("steam_export_bus"), true)); - STEAM_IMPORT_BUS = registerMetaTileEntity(1652, - new MetaTileEntitySteamItemBus(gregtechId("steam_import_bus"), false)); - STEAM_HATCH = registerMetaTileEntity(1653, new MetaTileEntitySteamHatch(gregtechId("steam_hatch"))); - - // Maintenance Hatches, IDs 1654-1656 - MAINTENANCE_HATCH = registerMetaTileEntity(1654, - new MetaTileEntityMaintenanceHatch(gregtechId("maintenance_hatch"), false)); - CONFIGURABLE_MAINTENANCE_HATCH = registerMetaTileEntity(1655, - new MetaTileEntityMaintenanceHatch(gregtechId("maintenance_hatch_configurable"), true)); - AUTO_MAINTENANCE_HATCH = registerMetaTileEntity(1656, - new MetaTileEntityAutoMaintenanceHatch(gregtechId("maintenance_hatch_full_auto"))); - CLEANING_MAINTENANCE_HATCH = registerMetaTileEntity(1401, - new MetaTileEntityCleaningMaintenanceHatch(gregtechId("maintenance_hatch_cleanroom_auto"))); - - // Muffler Hatches, IDs 1657-1665 - for (int i = 0; i < MUFFLER_HATCH.length - 1; i++) { - int tier = i + 1; - if (!GregTechAPI.isHighTier() && tier == GTValues.UHV) continue; // requires UHV motor to craft, so skip - String voltageName = GTValues.VN[tier].toLowerCase(); - MUFFLER_HATCH[tier] = new MetaTileEntityMufflerHatch(gregtechId("muffler_hatch." + voltageName), tier); - - registerMetaTileEntity(1657 + i, MUFFLER_HATCH[tier]); - } - - CLIPBOARD_TILE = registerMetaTileEntity(1666, new MetaTileEntityClipboard(gregtechId("clipboard"))); - - MONITOR_SCREEN = registerMetaTileEntity(1667, new MetaTileEntityMonitorScreen(gregtechId("monitor_screen"))); - - // Creative Chest and Tank, IDs 1668-1669 - CREATIVE_CHEST = registerMetaTileEntity(1668, new MetaTileEntityCreativeChest(gregtechId("creative_chest"))); - CREATIVE_TANK = registerMetaTileEntity(1669, new MetaTileEntityCreativeTank(gregtechId("creative_tank"))); - - // Energy Converter, IDs 1670-1729 - endPos = GregTechAPI.isHighTier() ? ENERGY_CONVERTER[0].length : GTValues.UHV + 1; - int[] amps = { 1, 4, 8, 16 }; - for (int i = 0; i < endPos; i++) { - for (int j = 0; j < 4; j++) { - // Check to make sure this is a valid amount of power to be able to convert. - // Tests if both: - // - The maximum amount of EU/t of this converter can turn into FE without overflowing - // - Max int FE/t can convert to the full amount of EU/t without being short - // This is done because these ratios are configured separately. - long eu = amps[j] * GTValues.V[i]; - long euToFe = FeCompat.toFeLong(eu, FeCompat.ratio(false)); - long feToEu = FeCompat.toEu(Integer.MAX_VALUE, FeCompat.ratio(true)); - if (euToFe > Integer.MAX_VALUE || feToEu < eu) continue; - - String id = "energy_converter." + GTValues.VN[i].toLowerCase() + "." + amps[j]; - MetaTileEntityConverter converter = new MetaTileEntityConverter(gregtechId(id), i, amps[j]); - ENERGY_CONVERTER[j][i] = registerMetaTileEntity(1670 + j + i * 4, converter); - } - } - // IDs 1730-1744 are taken by 4A <-> 16A Transformers. They are grouped with other transformers for - // organization. - - // ME Hatches, IDs 1745-1748, 1752-1756 - if (Mods.AppliedEnergistics2.isModLoaded()) { - FLUID_EXPORT_HATCH_ME = registerMetaTileEntity(1745, - new MetaTileEntityMEOutputHatch(gregtechId("me_export_fluid_hatch"))); - ITEM_EXPORT_BUS_ME = registerMetaTileEntity(1746, - new MetaTileEntityMEOutputBus(gregtechId("me_export_item_bus"))); - FLUID_IMPORT_HATCH_ME = registerMetaTileEntity(1747, - new MetaTileEntityMEInputHatch(gregtechId("me_import_fluid_hatch"))); - ITEM_IMPORT_BUS_ME = registerMetaTileEntity(1748, - new MetaTileEntityMEInputBus(gregtechId("me_import_item_bus"))); - STOCKING_BUS_ME = registerMetaTileEntity(1752, - new MetaTileEntityMEStockingBus(gregtechId("me_stocking_item_bus"))); - STOCKING_HATCH_ME = registerMetaTileEntity(1753, - new MetaTileEntityMEStockingHatch(gregtechId("me_stocking_fluid_hatch"))); - // 1754: Crafting Input Bus - // 1755: Crafting Input Buffer - // 1756: Crafting Input Slave - } - - LONG_DIST_ITEM_ENDPOINT = registerMetaTileEntity(1749, - new MetaTileEntityLDItemEndpoint(gregtechId("ld_item_endpoint"))); - LONG_DIST_FLUID_ENDPOINT = registerMetaTileEntity(1750, - new MetaTileEntityLDFluidEndpoint(gregtechId("ld_fluid_endpoint"))); - - // Alarm, ID 1751 - ALARM = registerMetaTileEntity(1751, new MetaTileEntityAlarm(gregtechId("alarm"))); - - // IDs 1752-1756 are taken by AE2 parts - - // Multi-Fluid Hatches, IDs 1190, 1191, 1205, 1206, 1780-1819 - // EV hatches separate because of old names/IDs - QUADRUPLE_IMPORT_HATCH[0] = registerMetaTileEntity(1190, - new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.import_4x"), GTValues.EV, 4, false)); - NONUPLE_IMPORT_HATCH[0] = registerMetaTileEntity(1191, - new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.import_9x"), GTValues.EV, 9, false)); - QUADRUPLE_EXPORT_HATCH[0] = registerMetaTileEntity(1205, - new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.export_4x"), GTValues.EV, 4, true)); - NONUPLE_EXPORT_HATCH[0] = registerMetaTileEntity(1206, - new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.export_9x"), GTValues.EV, 9, true)); - for (int i = GTValues.IV; i <= (GregTechAPI.isHighTier() ? GTValues.OpV : GTValues.UHV); i++) { - int index = i - GTValues.IV; - int startId = i > GTValues.UHV ? 1800 : 1780; - String tierName = GTValues.VN[i].toLowerCase(); - QUADRUPLE_IMPORT_HATCH[index + 1] = registerMetaTileEntity(startId + index, - new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.import_4x." + tierName), i, 4, false)); - NONUPLE_IMPORT_HATCH[index + 1] = registerMetaTileEntity(startId + 5 + index, - new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.import_9x." + tierName), i, 9, false)); - QUADRUPLE_EXPORT_HATCH[index + 1] = registerMetaTileEntity(startId + 10 + index, - new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.export_4x." + tierName), i, 4, true)); - NONUPLE_EXPORT_HATCH[index + 1] = registerMetaTileEntity(startId + 15 + index, - new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.export_9x." + tierName), i, 9, true)); - } - - // 1820-1849 are taken for UHV+ 4A/16A/64A Energy/Dynamo Hatches - // 1850-1869 are taken for UHV+ Input/Output Buses/Hatches + GTLog.logger.info("Starting MetaTileEntity registration..."); + MetaTileEntityRegistration.register(); + GTLog.logger.info("Completed MetaTileEntity registration."); } - private static void registerSimpleMetaTileEntity(SimpleMachineMetaTileEntity[] machines, - int startId, - String name, - RecipeMap map, - ICubeRenderer texture, - boolean hasFrontFacing, - Function tankScalingFunction) { + static void registerSimpleMetaTileEntity(SimpleMachineMetaTileEntity[] machines, + int startId, + String name, + RecipeMap map, + ICubeRenderer texture, + boolean hasFrontFacing, + Function tankScalingFunction) { registerSimpleMetaTileEntity(machines, startId, name, map, texture, hasFrontFacing, GTUtility::gregtechId, tankScalingFunction); } - private static void registerSimpleMetaTileEntity(SimpleMachineMetaTileEntity[] machines, - int startId, - String name, - RecipeMap map, - ICubeRenderer texture, - boolean hasFrontFacing) { + static void registerSimpleMetaTileEntity(SimpleMachineMetaTileEntity[] machines, + int startId, + String name, + RecipeMap map, + ICubeRenderer texture, + boolean hasFrontFacing) { registerSimpleMetaTileEntity(machines, startId, name, map, texture, hasFrontFacing, GTUtility.defaultTankSizeFunction); } diff --git a/src/main/java/gregtech/common/metatileentities/MetaTileEntityRegistration.java b/src/main/java/gregtech/common/metatileentities/MetaTileEntityRegistration.java new file mode 100644 index 00000000000..55cd52e5cd4 --- /dev/null +++ b/src/main/java/gregtech/common/metatileentities/MetaTileEntityRegistration.java @@ -0,0 +1,1073 @@ +package gregtech.common.metatileentities; + +import gregtech.api.GTValues; +import gregtech.api.GregTechAPI; +import gregtech.api.capability.FeCompat; +import gregtech.api.recipes.RecipeMaps; +import gregtech.api.unification.material.Materials; +import gregtech.api.util.GTUtility; +import gregtech.api.util.Mods; +import gregtech.client.particle.VanillaParticleEffects; +import gregtech.client.renderer.texture.Textures; +import gregtech.common.ConfigHolder; +import gregtech.common.blocks.BlockTurbineCasing; +import gregtech.common.blocks.MetaBlocks; +import gregtech.common.metatileentities.converter.MetaTileEntityConverter; +import gregtech.common.metatileentities.electric.MetaTileEntityAlarm; +import gregtech.common.metatileentities.electric.MetaTileEntityBatteryBuffer; +import gregtech.common.metatileentities.electric.MetaTileEntityBlockBreaker; +import gregtech.common.metatileentities.electric.MetaTileEntityCharger; +import gregtech.common.metatileentities.electric.MetaTileEntityDiode; +import gregtech.common.metatileentities.electric.MetaTileEntityFisher; +import gregtech.common.metatileentities.electric.MetaTileEntityGasCollector; +import gregtech.common.metatileentities.electric.MetaTileEntityHull; +import gregtech.common.metatileentities.electric.MetaTileEntityItemCollector; +import gregtech.common.metatileentities.electric.MetaTileEntityMagicEnergyAbsorber; +import gregtech.common.metatileentities.electric.MetaTileEntityMiner; +import gregtech.common.metatileentities.electric.MetaTileEntityPump; +import gregtech.common.metatileentities.electric.MetaTileEntityRockBreaker; +import gregtech.common.metatileentities.electric.MetaTileEntitySingleCombustion; +import gregtech.common.metatileentities.electric.MetaTileEntitySingleTurbine; +import gregtech.common.metatileentities.electric.MetaTileEntityTransformer; +import gregtech.common.metatileentities.electric.MetaTileEntityWorldAccelerator; +import gregtech.common.metatileentities.electric.SimpleMachineMetaTileEntityResizable; +import gregtech.common.metatileentities.multi.BoilerType; +import gregtech.common.metatileentities.multi.MetaTileEntityCokeOven; +import gregtech.common.metatileentities.multi.MetaTileEntityCokeOvenHatch; +import gregtech.common.metatileentities.multi.MetaTileEntityLargeBoiler; +import gregtech.common.metatileentities.multi.MetaTileEntityMultiblockTank; +import gregtech.common.metatileentities.multi.MetaTileEntityPrimitiveBlastFurnace; +import gregtech.common.metatileentities.multi.MetaTileEntityPrimitiveWaterPump; +import gregtech.common.metatileentities.multi.MetaTileEntityPumpHatch; +import gregtech.common.metatileentities.multi.MetaTileEntityTankValve; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityActiveTransformer; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityAssemblyLine; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityCleanroom; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityCrackingUnit; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityDataBank; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityDistillationTower; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityElectricBlastFurnace; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityFluidDrill; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityFusionReactor; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityHPCA; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityImplosionCompressor; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityLargeChemicalReactor; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityLargeMiner; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityMultiSmelter; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityNetworkSwitch; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityPowerSubstation; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityProcessingArray; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityPyrolyseOven; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityResearchStation; +import gregtech.common.metatileentities.multi.electric.MetaTileEntityVacuumFreezer; +import gregtech.common.metatileentities.multi.electric.centralmonitor.MetaTileEntityCentralMonitor; +import gregtech.common.metatileentities.multi.electric.centralmonitor.MetaTileEntityMonitorScreen; +import gregtech.common.metatileentities.multi.electric.generator.MetaTileEntityLargeCombustionEngine; +import gregtech.common.metatileentities.multi.electric.generator.MetaTileEntityLargeTurbine; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityAutoMaintenanceHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityCleaningMaintenanceHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityComputationHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityDataAccessHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityEnergyHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityFluidHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityItemBus; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityLaserHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMachineHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMaintenanceHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMufflerHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityMultiFluidHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityObjectHolder; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityOpticalDataHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityPassthroughHatchFluid; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityPassthroughHatchItem; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityReservoirHatch; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntityRotorHolder; +import gregtech.common.metatileentities.multi.multiblockpart.MetaTileEntitySubstationEnergyHatch; +import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEInputBus; +import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEInputHatch; +import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEOutputBus; +import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEOutputHatch; +import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEStockingBus; +import gregtech.common.metatileentities.multi.multiblockpart.appeng.MetaTileEntityMEStockingHatch; +import gregtech.common.metatileentities.multi.multiblockpart.hpca.MetaTileEntityHPCABridge; +import gregtech.common.metatileentities.multi.multiblockpart.hpca.MetaTileEntityHPCAComputation; +import gregtech.common.metatileentities.multi.multiblockpart.hpca.MetaTileEntityHPCACooler; +import gregtech.common.metatileentities.multi.multiblockpart.hpca.MetaTileEntityHPCAEmpty; +import gregtech.common.metatileentities.multi.steam.MetaTileEntitySteamGrinder; +import gregtech.common.metatileentities.multi.steam.MetaTileEntitySteamOven; +import gregtech.common.metatileentities.primitive.MetaTileEntityCharcoalPileIgniter; +import gregtech.common.metatileentities.steam.SteamAlloySmelter; +import gregtech.common.metatileentities.steam.SteamCompressor; +import gregtech.common.metatileentities.steam.SteamExtractor; +import gregtech.common.metatileentities.steam.SteamFurnace; +import gregtech.common.metatileentities.steam.SteamHammer; +import gregtech.common.metatileentities.steam.SteamMacerator; +import gregtech.common.metatileentities.steam.SteamMiner; +import gregtech.common.metatileentities.steam.SteamRockBreaker; +import gregtech.common.metatileentities.steam.boiler.SteamCoalBoiler; +import gregtech.common.metatileentities.steam.boiler.SteamLavaBoiler; +import gregtech.common.metatileentities.steam.boiler.SteamSolarBoiler; +import gregtech.common.metatileentities.steam.multiblockpart.MetaTileEntitySteamHatch; +import gregtech.common.metatileentities.steam.multiblockpart.MetaTileEntitySteamItemBus; +import gregtech.common.metatileentities.storage.MetaTileEntityBuffer; +import gregtech.common.metatileentities.storage.MetaTileEntityCrate; +import gregtech.common.metatileentities.storage.MetaTileEntityCreativeChest; +import gregtech.common.metatileentities.storage.MetaTileEntityCreativeEnergy; +import gregtech.common.metatileentities.storage.MetaTileEntityCreativeTank; +import gregtech.common.metatileentities.storage.MetaTileEntityDrum; +import gregtech.common.metatileentities.storage.MetaTileEntityQuantumChest; +import gregtech.common.metatileentities.storage.MetaTileEntityQuantumExtender; +import gregtech.common.metatileentities.storage.MetaTileEntityQuantumProxy; +import gregtech.common.metatileentities.storage.MetaTileEntityQuantumStorageController; +import gregtech.common.metatileentities.storage.MetaTileEntityQuantumTank; +import gregtech.common.metatileentities.storage.MetaTileEntityWorkbench; +import gregtech.common.pipelike.fluidpipe.longdistance.MetaTileEntityLDFluidEndpoint; +import gregtech.common.pipelike.itempipe.longdistance.MetaTileEntityLDItemEndpoint; + +import static gregtech.api.util.GTUtility.gregtechId; + +final class MetaTileEntityRegistration { + + private MetaTileEntityRegistration() {} + + static void register() { + // Standard Singleblocks: 1-4999 + standardSingleblocks(); + + // Misc Singleblocks: 5000-9999 + miscSingleblocks(); + + // Multiblocks: 10000-10999 + multiblocks(); + + // Multiblock parts: 11000-12999 + multiblockParts(); + } + + /** + * 1-4999 (incl) + */ + private static void standardSingleblocks() { + // Steam Machines: 1-49 + MetaTileEntities.STEAM_BOILER_COAL_BRONZE = MetaTileEntities.registerMetaTileEntity(1, + new SteamCoalBoiler(gregtechId("steam_boiler_coal_bronze"), false)); + MetaTileEntities.STEAM_BOILER_COAL_STEEL = MetaTileEntities.registerMetaTileEntity(2, + new SteamCoalBoiler(gregtechId("steam_boiler_coal_steel"), true)); + + MetaTileEntities.STEAM_BOILER_SOLAR_BRONZE = MetaTileEntities.registerMetaTileEntity(3, + new SteamSolarBoiler(gregtechId("steam_boiler_solar_bronze"), false)); + MetaTileEntities.STEAM_BOILER_SOLAR_STEEL = MetaTileEntities.registerMetaTileEntity(4, + new SteamSolarBoiler(gregtechId("steam_boiler_solar_steel"), true)); + + MetaTileEntities.STEAM_BOILER_LAVA_BRONZE = MetaTileEntities.registerMetaTileEntity(5, + new SteamLavaBoiler(gregtechId("steam_boiler_lava_bronze"), false)); + MetaTileEntities.STEAM_BOILER_LAVA_STEEL = MetaTileEntities.registerMetaTileEntity(6, + new SteamLavaBoiler(gregtechId("steam_boiler_lava_steel"), true)); + + MetaTileEntities.STEAM_EXTRACTOR_BRONZE = MetaTileEntities.registerMetaTileEntity(7, + new SteamExtractor(gregtechId("steam_extractor_bronze"), false)); + MetaTileEntities.STEAM_EXTRACTOR_STEEL = MetaTileEntities.registerMetaTileEntity(8, + new SteamExtractor(gregtechId("steam_extractor_steel"), true)); + + MetaTileEntities.STEAM_MACERATOR_BRONZE = MetaTileEntities.registerMetaTileEntity(9, + new SteamMacerator(gregtechId("steam_macerator_bronze"), false)); + MetaTileEntities.STEAM_MACERATOR_STEEL = MetaTileEntities.registerMetaTileEntity(10, + new SteamMacerator(gregtechId("steam_macerator_steel"), true)); + + MetaTileEntities.STEAM_COMPRESSOR_BRONZE = MetaTileEntities.registerMetaTileEntity(11, + new SteamCompressor(gregtechId("steam_compressor_bronze"), false)); + MetaTileEntities.STEAM_COMPRESSOR_STEEL = MetaTileEntities.registerMetaTileEntity(12, + new SteamCompressor(gregtechId("steam_compressor_steel"), true)); + + MetaTileEntities.STEAM_HAMMER_BRONZE = MetaTileEntities.registerMetaTileEntity(13, + new SteamHammer(gregtechId("steam_hammer_bronze"), false)); + MetaTileEntities.STEAM_HAMMER_STEEL = MetaTileEntities.registerMetaTileEntity(14, + new SteamHammer(gregtechId("steam_hammer_steel"), true)); + + MetaTileEntities.STEAM_FURNACE_BRONZE = MetaTileEntities.registerMetaTileEntity(15, + new SteamFurnace(gregtechId("steam_furnace_bronze"), false)); + MetaTileEntities.STEAM_FURNACE_STEEL = MetaTileEntities.registerMetaTileEntity(16, + new SteamFurnace(gregtechId("steam_furnace_steel"), true)); + + MetaTileEntities.STEAM_ALLOY_SMELTER_BRONZE = MetaTileEntities.registerMetaTileEntity(17, + new SteamAlloySmelter(gregtechId("steam_alloy_smelter_bronze"), false)); + MetaTileEntities.STEAM_ALLOY_SMELTER_STEEL = MetaTileEntities.registerMetaTileEntity(18, + new SteamAlloySmelter(gregtechId("steam_alloy_smelter_steel"), true)); + + MetaTileEntities.STEAM_ROCK_BREAKER_BRONZE = MetaTileEntities.registerMetaTileEntity(19, + new SteamRockBreaker(gregtechId("steam_rock_breaker_bronze"), false)); + MetaTileEntities.STEAM_ROCK_BREAKER_STEEL = MetaTileEntities.registerMetaTileEntity(20, + new SteamRockBreaker(gregtechId("steam_rock_breaker_steel"), true)); + + MetaTileEntities.STEAM_MINER = MetaTileEntities.registerMetaTileEntity(21, + new SteamMiner(gregtechId("steam_miner"), 320, 4, 0)); + + // Basic single block machines: 50-919 + + // Electric Furnace, IDs 50-64 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.ELECTRIC_FURNACE, 50, "electric_furnace", + RecipeMaps.FURNACE_RECIPES, + Textures.ELECTRIC_FURNACE_OVERLAY, true); + + // Macerator, IDs 65-79 + MetaTileEntities.registerMetaTileEntities(MetaTileEntities.MACERATOR, 65, "macerator", + (tier, voltageName) -> new SimpleMachineMetaTileEntityResizable( + gregtechId(String.format("%s.%s", "macerator", voltageName)), + RecipeMaps.MACERATOR_RECIPES, + -1, + switch (tier) { + case 1, 2 -> 1; + case 3 -> 3; + default -> 4; + }, + tier <= GTValues.MV ? Textures.MACERATOR_OVERLAY : Textures.PULVERIZER_OVERLAY, + tier, + true, + GTUtility.defaultTankSizeFunction, + VanillaParticleEffects.TOP_SMOKE_SMALL, null)); + + // Alloy Smelter, IDs 80-94 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.ALLOY_SMELTER, 80, "alloy_smelter", + RecipeMaps.ALLOY_SMELTER_RECIPES, + Textures.ALLOY_SMELTER_OVERLAY, true); + + // Arc Furnace, IDs 95-109 + MetaTileEntities.registerMetaTileEntities(MetaTileEntities.ARC_FURNACE, 95, "arc_furnace", + (tier, voltageName) -> new SimpleMachineMetaTileEntityResizable( + gregtechId(String.format("%s.%s", "arc_furnace", voltageName)), + RecipeMaps.ARC_FURNACE_RECIPES, + -1, + tier >= GTValues.EV ? 9 : 4, + Textures.ARC_FURNACE_OVERLAY, + tier, + false, + GTUtility.hvCappedTankSizeFunction)); + + // Assembler, IDs 110-124 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.ASSEMBLER, 110, "assembler", + RecipeMaps.ASSEMBLER_RECIPES, + Textures.ASSEMBLER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); + + // Autoclave, IDs 125-139 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.AUTOCLAVE, 125, "autoclave", + RecipeMaps.AUTOCLAVE_RECIPES, + Textures.AUTOCLAVE_OVERLAY, false, GTUtility.hvCappedTankSizeFunction); + + // Bender, IDs 140-154 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.BENDER, 140, "bender", RecipeMaps.BENDER_RECIPES, + Textures.BENDER_OVERLAY, true); + + // Brewery, IDs 155-169 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.BREWERY, 155, "brewery", + RecipeMaps.BREWING_RECIPES, Textures.BREWERY_OVERLAY, + true, GTUtility.hvCappedTankSizeFunction); + + // Canner, IDs 170-184 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.CANNER, 170, "canner", RecipeMaps.CANNER_RECIPES, + Textures.CANNER_OVERLAY, true); + + // Centrifuge, IDs 185-199 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.CENTRIFUGE, 185, "centrifuge", + RecipeMaps.CENTRIFUGE_RECIPES, + Textures.CENTRIFUGE_OVERLAY, false, GTUtility.largeTankSizeFunction); + + // Chemical Bath, IDs 200-214 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.CHEMICAL_BATH, 200, "chemical_bath", + RecipeMaps.CHEMICAL_BATH_RECIPES, + Textures.CHEMICAL_BATH_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); + + // Chemical Reactor, IDs 215-229 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.CHEMICAL_REACTOR, 215, "chemical_reactor", + RecipeMaps.CHEMICAL_RECIPES, + Textures.CHEMICAL_REACTOR_OVERLAY, true, tier -> 16000); + + // Compressor, IDs 230-244 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.COMPRESSOR, 230, "compressor", + RecipeMaps.COMPRESSOR_RECIPES, + Textures.COMPRESSOR_OVERLAY, true); + + // Cutter, IDs 245-259 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.CUTTER, 245, "cutter", RecipeMaps.CUTTER_RECIPES, + Textures.CUTTER_OVERLAY, true); + + // Distillery, IDs 260-274 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.DISTILLERY, 260, "distillery", + RecipeMaps.DISTILLERY_RECIPES, + Textures.DISTILLERY_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); + + // Electrolyzer, IDs 275-289 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.ELECTROLYZER, 275, "electrolyzer", + RecipeMaps.ELECTROLYZER_RECIPES, + Textures.ELECTROLYZER_OVERLAY, false, GTUtility.largeTankSizeFunction); + + // Electromagnetic Separator, IDs 290-304 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.ELECTROMAGNETIC_SEPARATOR, 290, + "electromagnetic_separator", + RecipeMaps.ELECTROMAGNETIC_SEPARATOR_RECIPES, Textures.ELECTROMAGNETIC_SEPARATOR_OVERLAY, true); + + // Extractor, IDs 305-319 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.EXTRACTOR, 305, "extractor", + RecipeMaps.EXTRACTOR_RECIPES, + Textures.EXTRACTOR_OVERLAY, true); + + // Extruder, IDs 320-334 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.EXTRUDER, 320, "extruder", + RecipeMaps.EXTRUDER_RECIPES, Textures.EXTRUDER_OVERLAY, + true); + + // Fermenter, IDs 335-349 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.FERMENTER, 335, "fermenter", + RecipeMaps.FERMENTING_RECIPES, + Textures.FERMENTER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); + + // TODO Replication system + // Mass Fabricator, IDs 350-364 + // registerSimpleMetaTileEntity(MASS_FABRICATOR, 350, "mass_fabricator", RecipeMaps.MASS_FABRICATOR_RECIPES, + // Textures.MASS_FABRICATOR_OVERLAY, true); + + // TODO Should anonymously override SimpleMachineMetaTileEntity#getCircuitSlotOverlay() to display the data + // stick overlay + // Replicator, IDs 365-379 + // registerSimpleMetaTileEntity(REPLICATOR, 365, "replicator", RecipeMaps.REPLICATOR_RECIPES, + // Textures.REPLICATOR_OVERLAY, true); + + // Fluid Heater, IDs 380-394 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.FLUID_HEATER, 380, "fluid_heater", + RecipeMaps.FLUID_HEATER_RECIPES, + Textures.FLUID_HEATER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); + + // Fluid Solidifier, IDs 395-409 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.FLUID_SOLIDIFIER, 395, "fluid_solidifier", + RecipeMaps.FLUID_SOLIDFICATION_RECIPES, + Textures.FLUID_SOLIDIFIER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); + + // Forge Hammer, IDs 410-424 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.FORGE_HAMMER, 410, "forge_hammer", + RecipeMaps.FORGE_HAMMER_RECIPES, + Textures.FORGE_HAMMER_OVERLAY, true); + + // Forming Press, IDs 425-439 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.FORMING_PRESS, 425, "forming_press", + RecipeMaps.FORMING_PRESS_RECIPES, + Textures.FORMING_PRESS_OVERLAY, true); + + // Lathe, IDs 440-454 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.LATHE, 440, "lathe", RecipeMaps.LATHE_RECIPES, + Textures.LATHE_OVERLAY, true); + + // Scanner, IDs 455-469 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.SCANNER, 455, "scanner", + RecipeMaps.SCANNER_RECIPES, Textures.SCANNER_OVERLAY, + true); + + // Mixer, IDs 470-484 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.MIXER, 470, "mixer", RecipeMaps.MIXER_RECIPES, + Textures.MIXER_OVERLAY, false, + GTUtility.hvCappedTankSizeFunction); + + // Ore Washer, IDs 485-499 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.ORE_WASHER, 485, "ore_washer", + RecipeMaps.ORE_WASHER_RECIPES, + Textures.ORE_WASHER_OVERLAY, true); + + // Packer, IDs 500-514 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.PACKER, 500, "packer", RecipeMaps.PACKER_RECIPES, + Textures.PACKER_OVERLAY, true); + + // FREE, IDs 515-529 + + // Gas Collectors, IDs 530-544 + MetaTileEntities.registerMetaTileEntities(MetaTileEntities.GAS_COLLECTOR, 530, "gas_collector", + (tier, voltageName) -> new MetaTileEntityGasCollector( + gregtechId(String.format("%s.%s", "gas_collector", voltageName)), + RecipeMaps.GAS_COLLECTOR_RECIPES, Textures.GAS_COLLECTOR_OVERLAY, tier, false, + GTUtility.largeTankSizeFunction)); + // Polarizer, IDs 545-559 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.POLARIZER, 545, "polarizer", + RecipeMaps.POLARIZER_RECIPES, + Textures.POLARIZER_OVERLAY, true); + + // Laser Engraver, IDs 560-574 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.LASER_ENGRAVER, 560, "laser_engraver", + RecipeMaps.LASER_ENGRAVER_RECIPES, + Textures.LASER_ENGRAVER_OVERLAY, true); + + // Sifter, IDs 575-589 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.SIFTER, 575, "sifter", RecipeMaps.SIFTER_RECIPES, + Textures.SIFTER_OVERLAY, true); + + // FREE, IDs 590-604 + + // Thermal Centrifuge, IDs 605-619 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.THERMAL_CENTRIFUGE, 605, "thermal_centrifuge", + RecipeMaps.THERMAL_CENTRIFUGE_RECIPES, Textures.THERMAL_CENTRIFUGE_OVERLAY, true); + + // Wire Mill, IDs 620-634 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.WIREMILL, 620, "wiremill", + RecipeMaps.WIREMILL_RECIPES, Textures.WIREMILL_OVERLAY, + true); + + // Circuit Assembler, IDs 650-664 + MetaTileEntities.registerSimpleMetaTileEntity(MetaTileEntities.CIRCUIT_ASSEMBLER, 635, "circuit_assembler", + RecipeMaps.CIRCUIT_ASSEMBLER_RECIPES, + Textures.CIRCUIT_ASSEMBLER_OVERLAY, true, GTUtility.hvCappedTankSizeFunction); + + // Rock Breaker, IDs 665-679 + MetaTileEntities.registerMetaTileEntities(MetaTileEntities.ROCK_BREAKER, 665, "rock_breaker", + (tier, voltageName) -> new MetaTileEntityRockBreaker( + gregtechId(String.format("%s.%s", "rock_breaker", voltageName)), + RecipeMaps.ROCK_BREAKER_RECIPES, Textures.ROCK_BREAKER_OVERLAY, tier)); + + // Other single block machines + + // Diesel Generator, IDs 935-949 + MetaTileEntities.COMBUSTION_GENERATOR[0] = MetaTileEntities.registerMetaTileEntity(935, + new MetaTileEntitySingleCombustion(gregtechId("combustion_generator.lv"), + RecipeMaps.COMBUSTION_GENERATOR_FUELS, Textures.COMBUSTION_GENERATOR_OVERLAY, 1, + GTUtility.genericGeneratorTankSizeFunction)); + MetaTileEntities.COMBUSTION_GENERATOR[1] = MetaTileEntities.registerMetaTileEntity(936, + new MetaTileEntitySingleCombustion(gregtechId("combustion_generator.mv"), + RecipeMaps.COMBUSTION_GENERATOR_FUELS, Textures.COMBUSTION_GENERATOR_OVERLAY, 2, + GTUtility.genericGeneratorTankSizeFunction)); + MetaTileEntities.COMBUSTION_GENERATOR[2] = MetaTileEntities.registerMetaTileEntity(937, + new MetaTileEntitySingleCombustion(gregtechId("combustion_generator.hv"), + RecipeMaps.COMBUSTION_GENERATOR_FUELS, Textures.COMBUSTION_GENERATOR_OVERLAY, 3, + GTUtility.genericGeneratorTankSizeFunction)); + + // Steam Turbine, IDs 950-964 + MetaTileEntities.STEAM_TURBINE[0] = MetaTileEntities.registerMetaTileEntity(950, + new MetaTileEntitySingleTurbine(gregtechId("steam_turbine.lv"), RecipeMaps.STEAM_TURBINE_FUELS, + Textures.STEAM_TURBINE_OVERLAY, 1, GTUtility.steamGeneratorTankSizeFunction)); + MetaTileEntities.STEAM_TURBINE[1] = MetaTileEntities.registerMetaTileEntity(951, + new MetaTileEntitySingleTurbine(gregtechId("steam_turbine.mv"), RecipeMaps.STEAM_TURBINE_FUELS, + Textures.STEAM_TURBINE_OVERLAY, 2, GTUtility.steamGeneratorTankSizeFunction)); + MetaTileEntities.STEAM_TURBINE[2] = MetaTileEntities.registerMetaTileEntity(952, + new MetaTileEntitySingleTurbine(gregtechId("steam_turbine.hv"), RecipeMaps.STEAM_TURBINE_FUELS, + Textures.STEAM_TURBINE_OVERLAY, 3, GTUtility.steamGeneratorTankSizeFunction)); + + // Gas Turbine, IDs 965-979 + MetaTileEntities.GAS_TURBINE[0] = MetaTileEntities.registerMetaTileEntity(965, + new MetaTileEntitySingleTurbine(gregtechId("gas_turbine.lv"), RecipeMaps.GAS_TURBINE_FUELS, + Textures.GAS_TURBINE_OVERLAY, 1, GTUtility.genericGeneratorTankSizeFunction)); + MetaTileEntities.GAS_TURBINE[1] = MetaTileEntities.registerMetaTileEntity(966, + new MetaTileEntitySingleTurbine(gregtechId("gas_turbine.mv"), RecipeMaps.GAS_TURBINE_FUELS, + Textures.GAS_TURBINE_OVERLAY, 2, GTUtility.genericGeneratorTankSizeFunction)); + MetaTileEntities.GAS_TURBINE[2] = MetaTileEntities.registerMetaTileEntity(967, + new MetaTileEntitySingleTurbine(gregtechId("gas_turbine.hv"), RecipeMaps.GAS_TURBINE_FUELS, + Textures.GAS_TURBINE_OVERLAY, 3, GTUtility.genericGeneratorTankSizeFunction)); + + // Free Range, IDs 980-984 + + // Hulls, IDs 985-999 + int endPos = GregTechAPI.isHighTier() ? MetaTileEntities.HULL.length : GTValues.UHV + 1; + for (int i = 0; i < endPos; i++) { + MetaTileEntities.HULL[i] = new MetaTileEntityHull(gregtechId("hull." + GTValues.VN[i].toLowerCase()), i); + MetaTileEntities.registerMetaTileEntity(985 + i, MetaTileEntities.HULL[i]); + } + } + + /** + * 5000-9999 (incl) + */ + private static void miscSingleblocks() { + // Transformer, IDs 5000-5014 + // Hi-Amp Transformer, IDs 5015-5029 + // Power Transformer, IDs 5030-5044 + int endPos = GregTechAPI.isHighTier() ? MetaTileEntities.TRANSFORMER.length - 1 : GTValues.UV; + for (int i = 0; i <= endPos; i++) { + // 1A <-> 4A + MetaTileEntityTransformer transformer = new MetaTileEntityTransformer( + gregtechId("transformer." + GTValues.VN[i].toLowerCase()), i); + MetaTileEntities.TRANSFORMER[i] = MetaTileEntities.registerMetaTileEntity(1000 + (i), transformer); + // 2A <-> 8A and 4A <-> 16A + MetaTileEntityTransformer adjustableTransformer = new MetaTileEntityTransformer( + gregtechId("transformer.hi_amp." + GTValues.VN[i].toLowerCase()), i, 2, 4); + MetaTileEntities.HI_AMP_TRANSFORMER[i] = MetaTileEntities.registerMetaTileEntity(1015 + i, + adjustableTransformer); + // 16A <-> 64A (can do other amperages because of legacy compat) + adjustableTransformer = new MetaTileEntityTransformer( + gregtechId("transformer.adjustable." + GTValues.VN[i].toLowerCase()), i, 1, 2, 4, 16); + MetaTileEntities.POWER_TRANSFORMER[i] = MetaTileEntities.registerMetaTileEntity(1030 + (i), + adjustableTransformer); + } + + // Chunk Miner, IDs 5045-5059 + MetaTileEntities.MINER[0] = MetaTileEntities.registerMetaTileEntity(5045, + new MetaTileEntityMiner(gregtechId("miner.lv"), GTValues.LV, 160, 8, 1)); + MetaTileEntities.MINER[1] = MetaTileEntities.registerMetaTileEntity(5046, + new MetaTileEntityMiner(gregtechId("miner.mv"), GTValues.MV, 80, 16, 2)); + MetaTileEntities.MINER[2] = MetaTileEntities.registerMetaTileEntity(5047, + new MetaTileEntityMiner(gregtechId("miner.hv"), GTValues.HV, 40, 24, 3)); + + // Item Collector: 5060-5074 + MetaTileEntities.ITEM_COLLECTOR[0] = MetaTileEntities.registerMetaTileEntity(5060, + new MetaTileEntityItemCollector(gregtechId("item_collector.lv"), GTValues.LV, 8)); + MetaTileEntities.ITEM_COLLECTOR[1] = MetaTileEntities.registerMetaTileEntity(5061, + new MetaTileEntityItemCollector(gregtechId("item_collector.mv"), GTValues.MV, 16)); + MetaTileEntities.ITEM_COLLECTOR[2] = MetaTileEntities.registerMetaTileEntity(5062, + new MetaTileEntityItemCollector(gregtechId("item_collector.hv"), GTValues.HV, 32)); + MetaTileEntities.ITEM_COLLECTOR[3] = MetaTileEntities.registerMetaTileEntity(5063, + new MetaTileEntityItemCollector(gregtechId("item_collector.ev"), GTValues.EV, 64)); + + // Quantum Storage Network 5075-5089 + MetaTileEntities.QUANTUM_STORAGE_CONTROLLER = MetaTileEntities.registerMetaTileEntity(1075, + new MetaTileEntityQuantumStorageController(gregtechId("quantum_storage_controller"))); + MetaTileEntities.QUANTUM_STORAGE_PROXY = MetaTileEntities.registerMetaTileEntity(1076, + new MetaTileEntityQuantumProxy(gregtechId("quantum_storage_proxy"))); + MetaTileEntities.QUANTUM_STORAGE_EXTENDER = MetaTileEntities.registerMetaTileEntity(1077, + new MetaTileEntityQuantumExtender(gregtechId("quantum_storage_extender"))); + + // Free range: 5090-5299 + + // Diode, IDs 5300-5314 + endPos = GregTechAPI.isHighTier() ? MetaTileEntities.DIODES.length - 1 : GTValues.UHV + 1; + for (int i = 0; i < endPos; i++) { + String diodeId = "diode." + GTValues.VN[i].toLowerCase(); + MetaTileEntityDiode diode = new MetaTileEntityDiode(gregtechId(diodeId), i, 16); + MetaTileEntities.DIODES[i] = MetaTileEntities.registerMetaTileEntity(5300 + i, diode); + } + + // Battery Buffer, IDs 5315-5359 + endPos = GregTechAPI.isHighTier() ? GTValues.V.length : GTValues.UHV + 1; + MetaTileEntities.BATTERY_BUFFER[0] = new MetaTileEntityBatteryBuffer[endPos]; + MetaTileEntities.BATTERY_BUFFER[1] = new MetaTileEntityBatteryBuffer[endPos]; + MetaTileEntities.BATTERY_BUFFER[2] = new MetaTileEntityBatteryBuffer[endPos]; + for (int i = 0; i < endPos; i++) { + String bufferIdBase = "battery_buffer." + GTValues.VN[i].toLowerCase() + "."; + MetaTileEntities.BATTERY_BUFFER[0][i] = MetaTileEntities.registerMetaTileEntity(5315 + i, + new MetaTileEntityBatteryBuffer(gregtechId(bufferIdBase + 4), i, 4)); + MetaTileEntities.BATTERY_BUFFER[1][i] = MetaTileEntities.registerMetaTileEntity(5330 + i, + new MetaTileEntityBatteryBuffer(gregtechId(bufferIdBase + 8), i, 8)); + MetaTileEntities.BATTERY_BUFFER[2][i] = MetaTileEntities.registerMetaTileEntity(5345 + i, + new MetaTileEntityBatteryBuffer(gregtechId(bufferIdBase + 16), i, 16)); + } + + // Free range: 5360-5374 + + // Charger, IDs 5375-5089 + endPos = GregTechAPI.isHighTier() ? MetaTileEntities.CHARGER.length : GTValues.UHV + 1; + for (int i = 0; i < endPos; i++) { + String chargerId = "charger." + GTValues.VN[i].toLowerCase(); + MetaTileEntityCharger charger = new MetaTileEntityCharger(gregtechId(chargerId), i, 4); + MetaTileEntities.CHARGER[i] = MetaTileEntities.registerMetaTileEntity(5375 + i, charger); + } + + // World Accelerators, IDs 5390-5404 + if (ConfigHolder.machines.enableWorldAccelerators) { + endPos = GTValues.UV + 1; + for (int i = 1; i < endPos; i++) { + MetaTileEntities.WORLD_ACCELERATOR[i] = MetaTileEntities.registerMetaTileEntity(1390 + i, + new MetaTileEntityWorldAccelerator( + gregtechId("world_accelerator." + GTValues.VN[i].toLowerCase()), i)); + } + } + + // Free range: 5405-5509 + + // Buffers, IDs 1510-1512 + MetaTileEntities.BUFFER[0] = MetaTileEntities.registerMetaTileEntity(5510, + new MetaTileEntityBuffer(gregtechId("buffer.lv"), GTValues.LV)); + MetaTileEntities.BUFFER[1] = MetaTileEntities.registerMetaTileEntity(5511, + new MetaTileEntityBuffer(gregtechId("buffer.mv"), GTValues.MV)); + MetaTileEntities.BUFFER[2] = MetaTileEntities.registerMetaTileEntity(5512, + new MetaTileEntityBuffer(gregtechId("buffer.hv"), GTValues.HV)); + + // Free Range: 5513-5514 + + // Fishers, IDs 5515-5529 + MetaTileEntities.FISHER[0] = MetaTileEntities.registerMetaTileEntity(5515, + new MetaTileEntityFisher(gregtechId("fisher.lv"), GTValues.LV)); + MetaTileEntities.FISHER[1] = MetaTileEntities.registerMetaTileEntity(5516, + new MetaTileEntityFisher(gregtechId("fisher.mv"), GTValues.MV)); + MetaTileEntities.FISHER[2] = MetaTileEntities.registerMetaTileEntity(5517, + new MetaTileEntityFisher(gregtechId("fisher.hv"), GTValues.HV)); + MetaTileEntities.FISHER[3] = MetaTileEntities.registerMetaTileEntity(5518, + new MetaTileEntityFisher(gregtechId("fisher.ev"), GTValues.EV)); + + // Pumps, IDs 5530-5544 + MetaTileEntities.PUMP[0] = MetaTileEntities.registerMetaTileEntity(1530, + new MetaTileEntityPump(gregtechId("pump.lv"), GTValues.LV)); + MetaTileEntities.PUMP[1] = MetaTileEntities.registerMetaTileEntity(1531, + new MetaTileEntityPump(gregtechId("pump.mv"), GTValues.MV)); + MetaTileEntities.PUMP[2] = MetaTileEntities.registerMetaTileEntity(1532, + new MetaTileEntityPump(gregtechId("pump.hv"), GTValues.HV)); + MetaTileEntities.PUMP[3] = MetaTileEntities.registerMetaTileEntity(1533, + new MetaTileEntityPump(gregtechId("pump.ev"), GTValues.EV)); + + // Super / Quantum Chests, IDs 5560-5574 + for (int i = 0; i < GTValues.IV; i++) { + String voltageName = GTValues.VN[i + 1].toLowerCase(); + MetaTileEntities.QUANTUM_CHEST[i] = new MetaTileEntityQuantumChest(gregtechId("super_chest." + voltageName), + i + 1, + 4000000L * (int) Math.pow(2, i)); + MetaTileEntities.registerMetaTileEntity(5560 + i, MetaTileEntities.QUANTUM_CHEST[i]); + } + + for (int i = GTValues.IV; i < MetaTileEntities.QUANTUM_CHEST.length; i++) { + String voltageName = GTValues.VN[i].toLowerCase(); + long capacity = i == GTValues.UHV ? Integer.MAX_VALUE : 4000000L * (int) Math.pow(2, i); + MetaTileEntities.QUANTUM_CHEST[i] = new MetaTileEntityQuantumChest( + gregtechId("quantum_chest." + voltageName), i, capacity); + MetaTileEntities.registerMetaTileEntity(5565 + i, MetaTileEntities.QUANTUM_CHEST[i]); + } + + // Super / Quantum Tanks, IDs 5575-5589 + for (int i = 0; i < GTValues.IV; i++) { + String voltageName = GTValues.VN[i + 1].toLowerCase(); + MetaTileEntities.QUANTUM_TANK[i] = new MetaTileEntityQuantumTank(gregtechId("super_tank." + voltageName), + i + 1, + 4000000 * (int) Math.pow(2, i)); + MetaTileEntities.registerMetaTileEntity(5575 + i, MetaTileEntities.QUANTUM_TANK[i]); + } + + for (int i = GTValues.IV; i < MetaTileEntities.QUANTUM_TANK.length; i++) { + String voltageName = GTValues.VN[i].toLowerCase(); + int capacity = i == GTValues.UHV ? Integer.MAX_VALUE : 4000000 * (int) Math.pow(2, i); + MetaTileEntities.QUANTUM_TANK[i] = new MetaTileEntityQuantumTank(gregtechId("quantum_tank." + voltageName), + i, capacity); + MetaTileEntities.registerMetaTileEntity(5580 + i, MetaTileEntities.QUANTUM_TANK[i]); + } + + // Block Breakers, IDs 5590-5594 + for (int i = 0; i < MetaTileEntities.BLOCK_BREAKER.length; i++) { + String voltageName = GTValues.VN[i + 1].toLowerCase(); + MetaTileEntities.BLOCK_BREAKER[i] = new MetaTileEntityBlockBreaker( + gregtechId("block_breaker." + voltageName), i + 1); + MetaTileEntities.registerMetaTileEntity(5590 + i, MetaTileEntities.BLOCK_BREAKER[i]); + } + + // Drums, IDs 5610-5624 + MetaTileEntities.WOODEN_DRUM = MetaTileEntities.registerMetaTileEntity(5610, + new MetaTileEntityDrum(gregtechId("drum.wood"), Materials.Wood, 16000)); + MetaTileEntities.BRONZE_DRUM = MetaTileEntities.registerMetaTileEntity(5611, + new MetaTileEntityDrum(gregtechId("drum.bronze"), Materials.Bronze, 32000)); + MetaTileEntities.STEEL_DRUM = MetaTileEntities.registerMetaTileEntity(5612, + new MetaTileEntityDrum(gregtechId("drum.steel"), Materials.Steel, 64000)); + MetaTileEntities.ALUMINIUM_DRUM = MetaTileEntities.registerMetaTileEntity(5613, + new MetaTileEntityDrum(gregtechId("drum.aluminium"), Materials.Aluminium, 128000)); + MetaTileEntities.STAINLESS_STEEL_DRUM = MetaTileEntities.registerMetaTileEntity(5614, + new MetaTileEntityDrum(gregtechId("drum.stainless_steel"), Materials.StainlessSteel, 256000)); + MetaTileEntities.TITANIUM_DRUM = MetaTileEntities.registerMetaTileEntity(5615, + new MetaTileEntityDrum(gregtechId("drum.titanium"), Materials.Titanium, 512000)); + MetaTileEntities.TUNGSTENSTEEL_DRUM = MetaTileEntities.registerMetaTileEntity(5616, + new MetaTileEntityDrum(gregtechId("drum.tungstensteel"), Materials.TungstenSteel, 1024000)); + MetaTileEntities.GOLD_DRUM = MetaTileEntities.registerMetaTileEntity(5617, + new MetaTileEntityDrum(gregtechId("drum.gold"), Materials.Gold, 32000)); + + // Crates, IDs 5625-5639 + MetaTileEntities.WOODEN_CRATE = MetaTileEntities.registerMetaTileEntity(5625, + new MetaTileEntityCrate(gregtechId("crate.wood"), Materials.Wood, 27, 9)); + MetaTileEntities.BRONZE_CRATE = MetaTileEntities.registerMetaTileEntity(5626, + new MetaTileEntityCrate(gregtechId("crate.bronze"), Materials.Bronze, 54, 9)); + MetaTileEntities.STEEL_CRATE = MetaTileEntities.registerMetaTileEntity(5627, + new MetaTileEntityCrate(gregtechId("crate.steel"), Materials.Steel, 72, 9)); + MetaTileEntities.ALUMINIUM_CRATE = MetaTileEntities.registerMetaTileEntity(5628, + new MetaTileEntityCrate(gregtechId("crate.aluminium"), Materials.Aluminium, 90, 10)); + MetaTileEntities.STAINLESS_STEEL_CRATE = MetaTileEntities.registerMetaTileEntity(5629, + new MetaTileEntityCrate(gregtechId("crate.stainless_steel"), Materials.StainlessSteel, 108, 12)); + MetaTileEntities.TITANIUM_CRATE = MetaTileEntities.registerMetaTileEntity(5630, + new MetaTileEntityCrate(gregtechId("crate.titanium"), Materials.Titanium, 126, 14)); + MetaTileEntities.TUNGSTENSTEEL_CRATE = MetaTileEntities.registerMetaTileEntity(5631, + new MetaTileEntityCrate(gregtechId("crate.tungstensteel"), Materials.TungstenSteel, 144, 16)); + + // Misc, IDs 5646-5999 + MetaTileEntities.CLIPBOARD_TILE = MetaTileEntities.registerMetaTileEntity(5646, + new MetaTileEntityClipboard(gregtechId("clipboard"))); + + MetaTileEntities.WORKBENCH = MetaTileEntities.registerMetaTileEntity(5647, + new MetaTileEntityWorkbench(gregtechId("workbench"))); + + MetaTileEntities.MONITOR_SCREEN = MetaTileEntities.registerMetaTileEntity(5648, + new MetaTileEntityMonitorScreen(gregtechId("monitor_screen"))); + + // creative machines 5650-5659 + MetaTileEntities.CREATIVE_ENERGY = MetaTileEntities.registerMetaTileEntity(5650, + new MetaTileEntityCreativeEnergy()); + MetaTileEntities.CREATIVE_CHEST = MetaTileEntities.registerMetaTileEntity(5651, + new MetaTileEntityCreativeChest(gregtechId("creative_chest"))); + MetaTileEntities.CREATIVE_TANK = MetaTileEntities.registerMetaTileEntity(5652, + new MetaTileEntityCreativeTank(gregtechId("creative_tank"))); + + // Free IDs: 5660-5669 + + // Energy Converter, IDs 5670-5729 + endPos = GregTechAPI.isHighTier() ? MetaTileEntities.ENERGY_CONVERTER[0].length : GTValues.UHV + 1; + int[] amps = { 1, 4, 8, 16 }; + for (int j = 0; j < amps.length; j++) { + int offset = j * MetaTileEntities.ENERGY_CONVERTER[0].length; + for (int i = 0; i < endPos; i++) { + // Check to make sure this is a valid amount of power to be able to convert. + // Tests if both: + // - The maximum amount of EU/t of this converter can turn into FE without overflowing + // - Max int FE/t can convert to the full amount of EU/t without being short + // This is done because these ratios are configured separately. + long eu = amps[j] * GTValues.V[i]; + long euToFe = FeCompat.toFeLong(eu, FeCompat.ratio(false)); + long feToEu = FeCompat.toEu(Integer.MAX_VALUE, FeCompat.ratio(true)); + if (euToFe > Integer.MAX_VALUE || feToEu < eu) continue; + + String id = "energy_converter." + GTValues.VN[i].toLowerCase() + "." + amps[j]; + MetaTileEntityConverter converter = new MetaTileEntityConverter(gregtechId(id), i, amps[j]); + MetaTileEntities.ENERGY_CONVERTER[j][i] = MetaTileEntities.registerMetaTileEntity(5670 + offset + i, + converter); + } + } + + // Free Range: 5730-5748 + + MetaTileEntities.LONG_DIST_ITEM_ENDPOINT = MetaTileEntities.registerMetaTileEntity(5749, + new MetaTileEntityLDItemEndpoint(gregtechId("ld_item_endpoint"))); + MetaTileEntities.LONG_DIST_FLUID_ENDPOINT = MetaTileEntities.registerMetaTileEntity(5750, + new MetaTileEntityLDFluidEndpoint(gregtechId("ld_fluid_endpoint"))); + + // Free Range: 5751-5759 + + MetaTileEntities.ALARM = MetaTileEntities.registerMetaTileEntity(5760, + new MetaTileEntityAlarm(gregtechId("alarm"))); + + MetaTileEntities.MAGIC_ENERGY_ABSORBER = MetaTileEntities.registerMetaTileEntity(5761, + new MetaTileEntityMagicEnergyAbsorber(gregtechId("magic_energy_absorber"))); + } + + /** + * 10000-10999 (incl) + */ + private static void multiblocks() { + MetaTileEntities.PRIMITIVE_BLAST_FURNACE = MetaTileEntities.registerMetaTileEntity(10000, + new MetaTileEntityPrimitiveBlastFurnace(gregtechId("primitive_blast_furnace.bronze"))); + MetaTileEntities.ELECTRIC_BLAST_FURNACE = MetaTileEntities.registerMetaTileEntity(10001, + new MetaTileEntityElectricBlastFurnace(gregtechId("electric_blast_furnace"))); + MetaTileEntities.VACUUM_FREEZER = MetaTileEntities.registerMetaTileEntity(10002, + new MetaTileEntityVacuumFreezer(gregtechId("vacuum_freezer"))); + MetaTileEntities.IMPLOSION_COMPRESSOR = MetaTileEntities.registerMetaTileEntity(10003, + new MetaTileEntityImplosionCompressor(gregtechId("implosion_compressor"))); + MetaTileEntities.PYROLYSE_OVEN = MetaTileEntities.registerMetaTileEntity(10004, + new MetaTileEntityPyrolyseOven(gregtechId("pyrolyse_oven"))); + MetaTileEntities.DISTILLATION_TOWER = MetaTileEntities.registerMetaTileEntity(10005, + new MetaTileEntityDistillationTower(gregtechId("distillation_tower"), true)); + MetaTileEntities.MULTI_FURNACE = MetaTileEntities.registerMetaTileEntity(10006, + new MetaTileEntityMultiSmelter(gregtechId("multi_furnace"))); + MetaTileEntities.LARGE_COMBUSTION_ENGINE = MetaTileEntities.registerMetaTileEntity(10007, + new MetaTileEntityLargeCombustionEngine(gregtechId("large_combustion_engine"), GTValues.EV)); + MetaTileEntities.EXTREME_COMBUSTION_ENGINE = MetaTileEntities.registerMetaTileEntity(10008, + new MetaTileEntityLargeCombustionEngine(gregtechId("extreme_combustion_engine"), GTValues.IV)); + MetaTileEntities.CRACKER = MetaTileEntities.registerMetaTileEntity(10009, + new MetaTileEntityCrackingUnit(gregtechId("cracker"))); + + MetaTileEntities.LARGE_STEAM_TURBINE = MetaTileEntities.registerMetaTileEntity(10010, + new MetaTileEntityLargeTurbine(gregtechId("large_turbine.steam"), RecipeMaps.STEAM_TURBINE_FUELS, 3, + MetaBlocks.TURBINE_CASING.getState(BlockTurbineCasing.TurbineCasingType.STEEL_TURBINE_CASING), + MetaBlocks.TURBINE_CASING.getState(BlockTurbineCasing.TurbineCasingType.STEEL_GEARBOX), + Textures.SOLID_STEEL_CASING, false, Textures.LARGE_STEAM_TURBINE_OVERLAY)); + MetaTileEntities.LARGE_GAS_TURBINE = MetaTileEntities.registerMetaTileEntity(10011, + new MetaTileEntityLargeTurbine(gregtechId("large_turbine.gas"), + RecipeMaps.GAS_TURBINE_FUELS, 4, + MetaBlocks.TURBINE_CASING + .getState(BlockTurbineCasing.TurbineCasingType.STAINLESS_TURBINE_CASING), + MetaBlocks.TURBINE_CASING + .getState(BlockTurbineCasing.TurbineCasingType.STAINLESS_STEEL_GEARBOX), + Textures.CLEAN_STAINLESS_STEEL_CASING, true, Textures.LARGE_GAS_TURBINE_OVERLAY)); + MetaTileEntities.LARGE_PLASMA_TURBINE = MetaTileEntities.registerMetaTileEntity(10012, + new MetaTileEntityLargeTurbine(gregtechId("large_turbine.plasma"), RecipeMaps.PLASMA_GENERATOR_FUELS, 5, + MetaBlocks.TURBINE_CASING + .getState(BlockTurbineCasing.TurbineCasingType.TUNGSTENSTEEL_TURBINE_CASING), + MetaBlocks.TURBINE_CASING.getState(BlockTurbineCasing.TurbineCasingType.TUNGSTENSTEEL_GEARBOX), + Textures.ROBUST_TUNGSTENSTEEL_CASING, false, Textures.LARGE_PLASMA_TURBINE_OVERLAY)); + + MetaTileEntities.LARGE_BRONZE_BOILER = MetaTileEntities.registerMetaTileEntity(10013, + new MetaTileEntityLargeBoiler(gregtechId("large_boiler.bronze"), BoilerType.BRONZE)); + MetaTileEntities.LARGE_STEEL_BOILER = MetaTileEntities.registerMetaTileEntity(10014, + new MetaTileEntityLargeBoiler(gregtechId("large_boiler.steel"), BoilerType.STEEL)); + MetaTileEntities.LARGE_TITANIUM_BOILER = MetaTileEntities.registerMetaTileEntity(10015, + new MetaTileEntityLargeBoiler(gregtechId("large_boiler.titanium"), BoilerType.TITANIUM)); + MetaTileEntities.LARGE_TUNGSTENSTEEL_BOILER = MetaTileEntities.registerMetaTileEntity(10016, + new MetaTileEntityLargeBoiler(gregtechId("large_boiler.tungstensteel"), BoilerType.TUNGSTENSTEEL)); + + MetaTileEntities.COKE_OVEN = MetaTileEntities.registerMetaTileEntity(10017, + new MetaTileEntityCokeOven(gregtechId("coke_oven"))); + MetaTileEntities.COKE_OVEN_HATCH = MetaTileEntities.registerMetaTileEntity(10018, + new MetaTileEntityCokeOvenHatch(gregtechId("coke_oven_hatch"))); + + MetaTileEntities.ASSEMBLY_LINE = MetaTileEntities.registerMetaTileEntity(10019, + new MetaTileEntityAssemblyLine(gregtechId("assembly_line"))); + MetaTileEntities.FUSION_REACTOR[0] = MetaTileEntities.registerMetaTileEntity(10020, + new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.luv"), GTValues.LuV)); + MetaTileEntities.FUSION_REACTOR[1] = MetaTileEntities.registerMetaTileEntity(10021, + new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.zpm"), GTValues.ZPM)); + MetaTileEntities.FUSION_REACTOR[2] = MetaTileEntities.registerMetaTileEntity(10022, + new MetaTileEntityFusionReactor(gregtechId("fusion_reactor.uv"), GTValues.UV)); + + MetaTileEntities.LARGE_CHEMICAL_REACTOR = MetaTileEntities.registerMetaTileEntity(10023, + new MetaTileEntityLargeChemicalReactor(gregtechId("large_chemical_reactor"))); + + MetaTileEntities.STEAM_OVEN = MetaTileEntities.registerMetaTileEntity(10024, + new MetaTileEntitySteamOven(gregtechId("steam_oven"))); + MetaTileEntities.STEAM_GRINDER = MetaTileEntities.registerMetaTileEntity(10025, + new MetaTileEntitySteamGrinder(gregtechId("steam_grinder"))); + + MetaTileEntities.BASIC_LARGE_MINER = MetaTileEntities.registerMetaTileEntity(10026, + new MetaTileEntityLargeMiner(gregtechId("large_miner.ev"), GTValues.EV, 16, 3, 4, Materials.Steel, 8)); + MetaTileEntities.LARGE_MINER = MetaTileEntities.registerMetaTileEntity(10027, + new MetaTileEntityLargeMiner(gregtechId("large_miner.iv"), + GTValues.IV, 4, 5, 5, Materials.Titanium, 16)); + MetaTileEntities.ADVANCED_LARGE_MINER = MetaTileEntities.registerMetaTileEntity(10028, + new MetaTileEntityLargeMiner(gregtechId("large_miner.luv"), + GTValues.LuV, 1, 7, 6, Materials.TungstenSteel, 32)); + + MetaTileEntities.CENTRAL_MONITOR = MetaTileEntities.registerMetaTileEntity(10029, + new MetaTileEntityCentralMonitor(gregtechId("central_monitor"))); + + MetaTileEntities.PROCESSING_ARRAY = MetaTileEntities.registerMetaTileEntity(10030, + new MetaTileEntityProcessingArray(gregtechId("processing_array"), 0)); + MetaTileEntities.ADVANCED_PROCESSING_ARRAY = MetaTileEntities.registerMetaTileEntity(10031, + new MetaTileEntityProcessingArray(gregtechId("advanced_processing_array"), 1)); + + MetaTileEntities.BASIC_FLUID_DRILLING_RIG = MetaTileEntities.registerMetaTileEntity(10032, + new MetaTileEntityFluidDrill(gregtechId("fluid_drilling_rig.mv"), 2)); + MetaTileEntities.FLUID_DRILLING_RIG = MetaTileEntities.registerMetaTileEntity(10033, + new MetaTileEntityFluidDrill(gregtechId("fluid_drilling_rig.hv"), 3)); + MetaTileEntities.ADVANCED_FLUID_DRILLING_RIG = MetaTileEntities.registerMetaTileEntity(10034, + new MetaTileEntityFluidDrill(gregtechId("fluid_drilling_rig.ev"), 4)); + + MetaTileEntities.CLEANROOM = MetaTileEntities.registerMetaTileEntity(10035, + new MetaTileEntityCleanroom(gregtechId("cleanroom"))); + + MetaTileEntities.CHARCOAL_PILE_IGNITER = MetaTileEntities.registerMetaTileEntity(10036, + new MetaTileEntityCharcoalPileIgniter(gregtechId("charcoal_pile"))); + + MetaTileEntities.DATA_BANK = MetaTileEntities.registerMetaTileEntity(10037, + new MetaTileEntityDataBank(gregtechId("data_bank"))); + MetaTileEntities.RESEARCH_STATION = MetaTileEntities.registerMetaTileEntity(10038, + new MetaTileEntityResearchStation(gregtechId("research_station"))); + MetaTileEntities.HIGH_PERFORMANCE_COMPUTING_ARRAY = MetaTileEntities.registerMetaTileEntity(10039, + new MetaTileEntityHPCA(gregtechId("high_performance_computing_array"))); + MetaTileEntities.NETWORK_SWITCH = MetaTileEntities.registerMetaTileEntity(10040, + new MetaTileEntityNetworkSwitch(gregtechId("network_switch"))); + + MetaTileEntities.POWER_SUBSTATION = MetaTileEntities.registerMetaTileEntity(10041, + new MetaTileEntityPowerSubstation(gregtechId("power_substation"))); + MetaTileEntities.ACTIVE_TRANSFORMER = MetaTileEntities.registerMetaTileEntity(10042, + new MetaTileEntityActiveTransformer(gregtechId("active_transformer"))); + + MetaTileEntities.WOODEN_TANK = MetaTileEntities.registerMetaTileEntity(10043, + new MetaTileEntityMultiblockTank(gregtechId("tank.wood"), false, 250 * 1000)); + MetaTileEntities.STEEL_TANK = MetaTileEntities.registerMetaTileEntity(10044, + new MetaTileEntityMultiblockTank(gregtechId("tank.steel"), true, 1000 * 1000)); + + MetaTileEntities.PRIMITIVE_WATER_PUMP = MetaTileEntities.registerMetaTileEntity(10045, + new MetaTileEntityPrimitiveWaterPump(gregtechId("primitive_water_pump"))); + } + + /** + * 11000-12999 (incl) + */ + private static void multiblockParts() { + // Import Buses, IDs 11000-11014 + // Export Buses, IDs 11015-11029 + // Import Hatches, IDs 11030-11044 + // Export Hatches, IDs 11045-11059 + int endPos = GregTechAPI.isHighTier() ? MetaTileEntities.ITEM_IMPORT_BUS.length : GTValues.UHV + 1; + for (int i = 0; i < endPos; i++) { + String voltageName = GTValues.VN[i].toLowerCase(); + MetaTileEntities.ITEM_IMPORT_BUS[i] = new MetaTileEntityItemBus( + gregtechId("item_bus.import." + voltageName), i, false); + MetaTileEntities.ITEM_EXPORT_BUS[i] = new MetaTileEntityItemBus( + gregtechId("item_bus.export." + voltageName), i, true); + MetaTileEntities.FLUID_IMPORT_HATCH[i] = new MetaTileEntityFluidHatch( + gregtechId("fluid_hatch.import." + voltageName), i, + false); + MetaTileEntities.FLUID_EXPORT_HATCH[i] = new MetaTileEntityFluidHatch( + gregtechId("fluid_hatch.export." + voltageName), i, + true); + + MetaTileEntities.registerMetaTileEntity(11000 + i, MetaTileEntities.ITEM_IMPORT_BUS[i]); + MetaTileEntities.registerMetaTileEntity(11015 + i, MetaTileEntities.ITEM_EXPORT_BUS[i]); + MetaTileEntities.registerMetaTileEntity(11030 + i, MetaTileEntities.FLUID_IMPORT_HATCH[i]); + MetaTileEntities.registerMetaTileEntity(11045 + i, MetaTileEntities.FLUID_EXPORT_HATCH[i]); + } + + // quad and nonuple hatches, Ids 11060-11219 + // 4x Import hatch 11060-11074 + // 9x Import hatch 11075-11089 + // 4x Export hatch 11090-11204 + // 9x Export hatch 11205-11219 + endPos = GregTechAPI.isHighTier() ? MetaTileEntities.QUADRUPLE_IMPORT_HATCH.length : GTValues.UHV + 1; + for (int i = GTValues.EV; i < endPos; i++) { + String tierName = GTValues.VN[i].toLowerCase(); + MetaTileEntities.QUADRUPLE_IMPORT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11060 + i, + new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.import_4x." + tierName), i, 4, false)); + MetaTileEntities.NONUPLE_IMPORT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11075 + i, + new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.import_9x." + tierName), i, 9, false)); + MetaTileEntities.QUADRUPLE_EXPORT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11090 + i, + new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.export_4x." + tierName), i, 4, true)); + MetaTileEntities.NONUPLE_EXPORT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11105 + i, + new MetaTileEntityMultiFluidHatch(gregtechId("fluid_hatch.export_9x." + tierName), i, 9, true)); + } + + // Energy Hatches, IDs 11120-11239 + // 2A Energy Input, IDs 11120-11134 + // 2A Energy Output, IDs 11135-11149 + // 4A Energy Input, IDs 11150-11164 + // 4A Energy Output, IDs 11165-11179 + // 16A Energy Input, IDs 11180-11194 + // 16A Energy Output, IDs 11195-11209 + // 64A Energy Input, IDs 11210-11224 + // 64A Energy Output, IDs 11225-11239 + endPos = GregTechAPI.isHighTier() ? MetaTileEntities.ENERGY_INPUT_HATCH.length : GTValues.UHV + 1; + for (int i = 0; i < endPos; i++) { + String voltageName = GTValues.VN[i].toLowerCase(); + MetaTileEntities.ENERGY_INPUT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11120 + i, + new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input." + voltageName), i, 2, false)); + MetaTileEntities.ENERGY_OUTPUT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11135 + i, + new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output." + voltageName), i, 2, true)); + + MetaTileEntities.ENERGY_INPUT_HATCH_4A[i] = MetaTileEntities.registerMetaTileEntity(11150 + i, + new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input_4a." + voltageName), i, 4, false)); + MetaTileEntities.ENERGY_OUTPUT_HATCH_4A[i] = MetaTileEntities.registerMetaTileEntity(11165 + i, + new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output_4a." + voltageName), i, 4, true)); + MetaTileEntities.ENERGY_INPUT_HATCH_16A[i] = MetaTileEntities.registerMetaTileEntity(11180 + i, + new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input_16a." + voltageName), i, 16, + false)); + MetaTileEntities.ENERGY_OUTPUT_HATCH_16A[i] = MetaTileEntities.registerMetaTileEntity(11195 + i, + new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output_16a." + voltageName), i, 16, + true)); + MetaTileEntities.SUBSTATION_ENERGY_INPUT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11210 + i, + new MetaTileEntitySubstationEnergyHatch(gregtechId("substation_hatch.input_64a." + voltageName), + i, 64, false)); + MetaTileEntities.SUBSTATION_ENERGY_OUTPUT_HATCH[i] = MetaTileEntities.registerMetaTileEntity(11225 + i, + new MetaTileEntitySubstationEnergyHatch( + gregtechId("substation_hatch.output_64a." + voltageName), i, 64, true)); + } + + // Laser Hatches, IDs 11240-11449 + // 256A IN, IDs 11240-11254 + // 256A OUT, IDs 11255-11269 + // 1024A IN, IDs 11270-11284 + // 1024A OUT, IDs 11285-11299 + // 4096A IN, IDs 11300-11314 + // 4096A OUT, IDs 11315-11329 + endPos = GregTechAPI.isHighTier() ? MetaTileEntities.LASER_INPUT_HATCH_256.length : GTValues.UHV + 1; + for (int i = GTValues.IV; i < endPos; i++) { + String voltageName = GTValues.VN[i].toLowerCase(); + MetaTileEntities.LASER_INPUT_HATCH_256[i] = MetaTileEntities.registerMetaTileEntity(11240 + i, + new MetaTileEntityLaserHatch(gregtechId("laser_hatch.target_256a." + voltageName), false, i, 256)); + MetaTileEntities.LASER_OUTPUT_HATCH_256[i] = MetaTileEntities.registerMetaTileEntity(11255 + i, + new MetaTileEntityLaserHatch(gregtechId("laser_hatch.source_256a." + voltageName), true, i, 256)); + MetaTileEntities.LASER_INPUT_HATCH_1024[i] = MetaTileEntities.registerMetaTileEntity(11270 + i, + new MetaTileEntityLaserHatch( + gregtechId("laser_hatch.target_1024a." + voltageName), false, i, 1024)); + MetaTileEntities.LASER_OUTPUT_HATCH_1024[i] = MetaTileEntities.registerMetaTileEntity(11285 + i, + new MetaTileEntityLaserHatch(gregtechId("laser_hatch.source_1024a." + voltageName), true, i, 1024)); + MetaTileEntities.LASER_INPUT_HATCH_4096[i] = MetaTileEntities.registerMetaTileEntity(11300 + i, + new MetaTileEntityLaserHatch( + gregtechId("laser_hatch.target_4096a." + voltageName), false, i, 4096)); + MetaTileEntities.LASER_OUTPUT_HATCH_4096[i] = MetaTileEntities.registerMetaTileEntity(11315 + i, + new MetaTileEntityLaserHatch(gregtechId("laser_hatch.source_4096a." + voltageName), true, i, 4096)); + } + + // Free IDs: 11330-11449 + // space intended for more energy or laser hatches + + // Rotor Holder, IDs 11450-11464 + endPos = GregTechAPI.isHighTier() ? MetaTileEntities.ROTOR_HOLDER.length : GTValues.UV + 1; + for (int i = GTValues.HV; i < endPos; i++) { + MetaTileEntities.ROTOR_HOLDER[i] = MetaTileEntities.registerMetaTileEntity(11450 + i, + new MetaTileEntityRotorHolder(gregtechId("rotor_holder." + GTValues.VN[i].toLowerCase()), i)); + } + + // Muffler Hatches, IDs 11465-11479 + endPos = GregTechAPI.isHighTier() ? MetaTileEntities.MUFFLER_HATCH.length : GTValues.UV + 1; + for (int i = 1; i < endPos; i++) { + String voltageName = GTValues.VN[i].toLowerCase(); + MetaTileEntities.MUFFLER_HATCH[i] = new MetaTileEntityMufflerHatch( + gregtechId("muffler_hatch." + voltageName), i); + + MetaTileEntities.registerMetaTileEntity(11465 + i, MetaTileEntities.MUFFLER_HATCH[i]); + } + + // Maintenance Hatches, IDs 11480-11494 + MetaTileEntities.MAINTENANCE_HATCH = MetaTileEntities.registerMetaTileEntity(11480, + new MetaTileEntityMaintenanceHatch(gregtechId("maintenance_hatch"), false)); + MetaTileEntities.CONFIGURABLE_MAINTENANCE_HATCH = MetaTileEntities.registerMetaTileEntity(11481, + new MetaTileEntityMaintenanceHatch(gregtechId("maintenance_hatch_configurable"), true)); + MetaTileEntities.AUTO_MAINTENANCE_HATCH = MetaTileEntities.registerMetaTileEntity(11482, + new MetaTileEntityAutoMaintenanceHatch(gregtechId("maintenance_hatch_full_auto"))); + MetaTileEntities.CLEANING_MAINTENANCE_HATCH = MetaTileEntities.registerMetaTileEntity(11483, + new MetaTileEntityCleaningMaintenanceHatch(gregtechId("maintenance_hatch_cleanroom_auto"))); + + // Misc Hatches: ID 11495-11524 + MetaTileEntities.MACHINE_HATCH = MetaTileEntities.registerMetaTileEntity(11495, + new MetaTileEntityMachineHatch(gregtechId("machine_hatch"), 5)); + + MetaTileEntities.PASSTHROUGH_HATCH_ITEM = MetaTileEntities.registerMetaTileEntity(11496, + new MetaTileEntityPassthroughHatchItem(gregtechId("passthrough_hatch_item"), 3)); + MetaTileEntities.PASSTHROUGH_HATCH_FLUID = MetaTileEntities.registerMetaTileEntity(11497, + new MetaTileEntityPassthroughHatchFluid(gregtechId("passthrough_hatch_fluid"), 3)); + + MetaTileEntities.DATA_ACCESS_HATCH = MetaTileEntities.registerMetaTileEntity(11498, + new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch"), GTValues.EV, false)); + MetaTileEntities.ADVANCED_DATA_ACCESS_HATCH = MetaTileEntities.registerMetaTileEntity(11499, + new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch.advanced"), GTValues.LuV, false)); + MetaTileEntities.CREATIVE_DATA_HATCH = MetaTileEntities.registerMetaTileEntity(11500, + new MetaTileEntityDataAccessHatch(gregtechId("data_access_hatch.creative"), GTValues.MAX, true)); + + MetaTileEntities.OPTICAL_DATA_HATCH_RECEIVER = MetaTileEntities.registerMetaTileEntity(11501, + new MetaTileEntityOpticalDataHatch(gregtechId("data_access_hatch.optical.receiver"), false)); + MetaTileEntities.OPTICAL_DATA_HATCH_TRANSMITTER = MetaTileEntities.registerMetaTileEntity(11502, + new MetaTileEntityOpticalDataHatch(gregtechId("data_access_hatch.optical.transmitter"), true)); + MetaTileEntities.COMPUTATION_HATCH_RECEIVER = MetaTileEntities.registerMetaTileEntity(11503, + new MetaTileEntityComputationHatch(gregtechId("computation_hatch.receiver"), false)); + MetaTileEntities.COMPUTATION_HATCH_TRANSMITTER = MetaTileEntities.registerMetaTileEntity(11504, + new MetaTileEntityComputationHatch(gregtechId("computation_hatch.transmitter"), true)); + + MetaTileEntities.RESERVOIR_HATCH = MetaTileEntities.registerMetaTileEntity(11505, + new MetaTileEntityReservoirHatch(gregtechId("reservoir_hatch"))); + MetaTileEntities.PUMP_OUTPUT_HATCH = MetaTileEntities.registerMetaTileEntity(11506, + new MetaTileEntityPumpHatch(gregtechId("pump_hatch"))); + + MetaTileEntities.STEAM_EXPORT_BUS = MetaTileEntities.registerMetaTileEntity(11507, + new MetaTileEntitySteamItemBus(gregtechId("steam_export_bus"), true)); + MetaTileEntities.STEAM_IMPORT_BUS = MetaTileEntities.registerMetaTileEntity(11508, + new MetaTileEntitySteamItemBus(gregtechId("steam_import_bus"), false)); + MetaTileEntities.STEAM_HATCH = MetaTileEntities.registerMetaTileEntity(11509, + new MetaTileEntitySteamHatch(gregtechId("steam_hatch"))); + + MetaTileEntities.OBJECT_HOLDER = MetaTileEntities.registerMetaTileEntity(11510, + new MetaTileEntityObjectHolder(gregtechId("research_station.object_holder"))); + + MetaTileEntities.HPCA_EMPTY_COMPONENT = MetaTileEntities.registerMetaTileEntity(11511, + new MetaTileEntityHPCAEmpty(gregtechId("hpca.empty_component"))); + MetaTileEntities.HPCA_COMPUTATION_COMPONENT = MetaTileEntities.registerMetaTileEntity(11512, + new MetaTileEntityHPCAComputation(gregtechId("hpca.computation_component"), false)); + MetaTileEntities.HPCA_ADVANCED_COMPUTATION_COMPONENT = MetaTileEntities.registerMetaTileEntity(11513, + new MetaTileEntityHPCAComputation(gregtechId("hpca.advanced_computation_component"), true)); + MetaTileEntities.HPCA_HEAT_SINK_COMPONENT = MetaTileEntities.registerMetaTileEntity(11514, + new MetaTileEntityHPCACooler(gregtechId("hpca.heat_sink_component"), false)); + MetaTileEntities.HPCA_ACTIVE_COOLER_COMPONENT = MetaTileEntities.registerMetaTileEntity(11515, + new MetaTileEntityHPCACooler(gregtechId("hpca.active_cooler_component"), true)); + MetaTileEntities.HPCA_BRIDGE_COMPONENT = MetaTileEntities.registerMetaTileEntity(11516, + new MetaTileEntityHPCABridge(gregtechId("hpca.bridge_component"))); + + MetaTileEntities.WOODEN_TANK_VALVE = MetaTileEntities.registerMetaTileEntity(11523, + new MetaTileEntityTankValve(gregtechId("tank_valve.wood"), false)); + MetaTileEntities.STEEL_TANK_VALVE = MetaTileEntities.registerMetaTileEntity(11524, + new MetaTileEntityTankValve(gregtechId("tank_valve.steel"), true)); + + // ME Hatches, IDs 11525-11539 + if (Mods.AppliedEnergistics2.isModLoaded()) { + MetaTileEntities.ITEM_IMPORT_BUS_ME = MetaTileEntities.registerMetaTileEntity(11525, + new MetaTileEntityMEInputBus(gregtechId("me_import_item_bus"))); + MetaTileEntities.FLUID_IMPORT_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11526, + new MetaTileEntityMEInputHatch(gregtechId("me_import_fluid_hatch"))); + MetaTileEntities.STOCKING_BUS_ME = MetaTileEntities.registerMetaTileEntity(11527, + new MetaTileEntityMEStockingBus(gregtechId("me_stocking_item_bus"))); + MetaTileEntities.STOCKING_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11528, + new MetaTileEntityMEStockingHatch(gregtechId("me_stocking_fluid_hatch"))); + // slots left for CRIB and CRIBuffer in the future for nicer sorting order + MetaTileEntities.ITEM_EXPORT_BUS_ME = MetaTileEntities.registerMetaTileEntity(11532, + new MetaTileEntityMEOutputBus(gregtechId("me_export_item_bus"))); + MetaTileEntities.FLUID_EXPORT_HATCH_ME = MetaTileEntities.registerMetaTileEntity(11533, + new MetaTileEntityMEOutputHatch(gregtechId("me_export_fluid_hatch"))); + } + } +} diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityTransformer.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityTransformer.java index 2ea4f9e8ce1..db8b2fc2ff9 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityTransformer.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityTransformer.java @@ -8,17 +8,14 @@ import gregtech.client.renderer.texture.Textures; import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer; import gregtech.client.utils.PipelineUtil; -import gregtech.common.metatileentities.MetaTileEntities; import net.minecraft.client.resources.I18n; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; @@ -284,20 +281,4 @@ public void addToolUsages(ItemStack stack, @Nullable World world, List t tooltip.add(I18n.format("gregtech.tool_action.soft_mallet.toggle_mode")); super.addToolUsages(stack, world, tooltip, advanced); } - - @Override - public void getSubItems(CreativeTabs creativeTab, NonNullList subItems) { - // fix JEI ordering - if (this == MetaTileEntities.TRANSFORMER[0]) { - for (var transformer : MetaTileEntities.TRANSFORMER) { - if (transformer != null) subItems.add(transformer.getStackForm()); - } - for (var transformer : MetaTileEntities.HI_AMP_TRANSFORMER) { - if (transformer != null) subItems.add(transformer.getStackForm()); - } - for (var transformer : MetaTileEntities.POWER_TRANSFORMER) { - if (transformer != null) subItems.add(transformer.getStackForm()); - } - } - } } diff --git a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityAutoMaintenanceHatch.java b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityAutoMaintenanceHatch.java index 1159bbb558c..76e72b63888 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityAutoMaintenanceHatch.java +++ b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityAutoMaintenanceHatch.java @@ -7,13 +7,9 @@ import gregtech.api.metatileentity.multiblock.IMultiblockAbilityPart; import gregtech.api.metatileentity.multiblock.MultiblockAbility; import gregtech.client.renderer.texture.Textures; -import gregtech.common.ConfigHolder; -import gregtech.common.metatileentities.MetaTileEntities; import net.minecraft.client.resources.I18n; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Tuple; import net.minecraft.world.World; @@ -114,13 +110,4 @@ public void registerAbilities(@NotNull AbilityInstances abilityInstances) { public boolean canPartShare() { return false; } - - @Override - public void getSubItems(CreativeTabs creativeTab, NonNullList subItems) { - if (ConfigHolder.machines.enableMaintenance) { - super.getSubItems(creativeTab, subItems); - // keeps things in order despite IDs being out of order, due to the Cleaning Hatch being added later - subItems.add(MetaTileEntities.CLEANING_MAINTENANCE_HATCH.getStackForm()); - } - } } diff --git a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityCleaningMaintenanceHatch.java b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityCleaningMaintenanceHatch.java index 5996b8ab11f..90832da6dcc 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityCleaningMaintenanceHatch.java +++ b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityCleaningMaintenanceHatch.java @@ -9,9 +9,7 @@ import gregtech.client.renderer.texture.Textures; import net.minecraft.client.resources.I18n; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; @@ -85,11 +83,6 @@ public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, Textures.MAINTENANCE_OVERLAY_CLEANING.renderSided(getFrontFacing(), renderState, translation, pipeline); } - @Override - public void getSubItems(CreativeTabs creativeTab, NonNullList subItems) { - // does nothing here so the Auto Maintenance Hatch can put this right after it - } - @Override public void addInformation(ItemStack stack, @Nullable World player, List tooltip, boolean advanced) { super.addInformation(stack, player, tooltip, advanced); diff --git a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityEnergyHatch.java b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityEnergyHatch.java index 489afffac1f..b5e6ab39d28 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityEnergyHatch.java +++ b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityEnergyHatch.java @@ -16,15 +16,12 @@ import gregtech.client.renderer.texture.Textures; import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer; import gregtech.client.utils.PipelineUtil; -import gregtech.common.metatileentities.MetaTileEntities; import net.minecraft.client.resources.I18n; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -175,42 +172,6 @@ public boolean canRenderFrontFaceX() { return isExportHatch; } - @Override - public void getSubItems(CreativeTabs creativeTab, NonNullList subItems) { - // override here is gross, but keeps things in order despite - // IDs being out of order, due to EV 4A and UEV+ 4A+ hatches being added later - if (this == MetaTileEntities.ENERGY_INPUT_HATCH[0]) { - for (MetaTileEntityEnergyHatch hatch : MetaTileEntities.ENERGY_INPUT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (MetaTileEntityEnergyHatch hatch : MetaTileEntities.ENERGY_OUTPUT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (MetaTileEntityEnergyHatch hatch : MetaTileEntities.ENERGY_INPUT_HATCH_4A) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (MetaTileEntityEnergyHatch hatch : MetaTileEntities.ENERGY_INPUT_HATCH_16A) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (MetaTileEntityEnergyHatch hatch : MetaTileEntities.ENERGY_OUTPUT_HATCH_4A) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (MetaTileEntityEnergyHatch hatch : MetaTileEntities.ENERGY_OUTPUT_HATCH_16A) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (MetaTileEntityEnergyHatch hatch : MetaTileEntities.SUBSTATION_ENERGY_INPUT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (MetaTileEntityEnergyHatch hatch : MetaTileEntities.SUBSTATION_ENERGY_OUTPUT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - } else if (this.getClass() != MetaTileEntityEnergyHatch.class && - this.getClass() != MetaTileEntitySubstationEnergyHatch.class) { - // let subclasses fall through this override - super.getSubItems(creativeTab, subItems); - } - } - @Override public void doExplosion(float explosionPower) { if (getController() != null) diff --git a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityFluidHatch.java b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityFluidHatch.java index 85519ccfda7..5537385473a 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityFluidHatch.java +++ b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityFluidHatch.java @@ -22,17 +22,14 @@ import gregtech.api.mui.widget.GhostCircuitSlotWidget; import gregtech.client.renderer.texture.Textures; import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer; -import gregtech.common.metatileentities.MetaTileEntities; import gregtech.common.metatileentities.storage.MetaTileEntityQuantumTank; import gregtech.common.mui.widget.GTFluidSlot; import net.minecraft.client.resources.I18n; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.util.EnumFacing; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; @@ -410,21 +407,6 @@ private void setLocked(boolean locked) { fluidTank.onContentsChanged(); } - @Override - public void getSubItems(CreativeTabs creativeTab, NonNullList subItems) { - if (this == MetaTileEntities.FLUID_IMPORT_HATCH[0]) { - for (var hatch : MetaTileEntities.FLUID_IMPORT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (var hatch : MetaTileEntities.FLUID_EXPORT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - } else if (this.getClass() != MetaTileEntityFluidHatch.class) { - // let subclasses fall through this override - super.getSubItems(creativeTab, subItems); - } - } - protected class HatchFluidTank extends NotifiableFluidTank implements IFilteredFluidContainer, IFilter { public HatchFluidTank(int capacity, MetaTileEntity entityToNotify, boolean isExport) { diff --git a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityItemBus.java b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityItemBus.java index 16a9a8bcf6d..ce931470e6a 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityItemBus.java +++ b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityItemBus.java @@ -18,17 +18,14 @@ import gregtech.api.util.GTHashMaps; import gregtech.client.renderer.texture.Textures; import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer; -import gregtech.common.metatileentities.MetaTileEntities; import net.minecraft.client.resources.I18n; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumHand; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.util.text.TextComponentTranslation; import net.minecraft.world.World; @@ -458,21 +455,4 @@ public void addToolUsages(ItemStack stack, @Nullable World world, List t tooltip.add(I18n.format("gregtech.tool_action.wrench.set_facing")); super.addToolUsages(stack, world, tooltip, advanced); } - - @Override - public void getSubItems(CreativeTabs creativeTab, NonNullList subItems) { - // override here is gross, but keeps things in order despite - // IDs being out of order, due to UEV+ being added later - if (this == MetaTileEntities.ITEM_IMPORT_BUS[0]) { - for (var hatch : MetaTileEntities.ITEM_IMPORT_BUS) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (var hatch : MetaTileEntities.ITEM_EXPORT_BUS) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - } else if (this.getClass() != MetaTileEntityItemBus.class) { - // let subclasses fall through this override - super.getSubItems(creativeTab, subItems); - } - } } diff --git a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityMultiFluidHatch.java b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityMultiFluidHatch.java index 2501b75a8db..5c909ef7a69 100644 --- a/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityMultiFluidHatch.java +++ b/src/main/java/gregtech/common/metatileentities/multi/multiblockpart/MetaTileEntityMultiFluidHatch.java @@ -13,16 +13,13 @@ import gregtech.api.mui.GTGuis; import gregtech.client.renderer.texture.Textures; import gregtech.client.renderer.texture.cube.SimpleOverlayRenderer; -import gregtech.common.metatileentities.MetaTileEntities; import gregtech.common.mui.widget.GTFluidSlot; import net.minecraft.client.resources.I18n; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.util.EnumFacing; -import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.capabilities.Capability; @@ -231,27 +228,4 @@ public ModularPanel buildUI(PosGuiData guiData, PanelSyncManager guiSyncManager) .coverChildren()) .bindPlayerInventory(); } - - @Override - public void getSubItems(CreativeTabs creativeTab, NonNullList subItems) { - // override here is gross, but keeps things in order despite - // IDs being out of order, due to IV+ hatches being added later - if (this == MetaTileEntities.QUADRUPLE_IMPORT_HATCH[0]) { - for (var hatch : MetaTileEntities.QUADRUPLE_IMPORT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (var hatch : MetaTileEntities.QUADRUPLE_EXPORT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (var hatch : MetaTileEntities.NONUPLE_IMPORT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - for (var hatch : MetaTileEntities.NONUPLE_EXPORT_HATCH) { - if (hatch != null) subItems.add(hatch.getStackForm()); - } - } else if (this.getClass() != MetaTileEntityMultiFluidHatch.class) { - // let subclasses fall through this override - super.getSubItems(creativeTab, subItems); - } - } } diff --git a/src/main/java/gregtech/datafix/GTDataFixers.java b/src/main/java/gregtech/datafix/GTDataFixers.java index ea8efe93388..57b75d895d9 100644 --- a/src/main/java/gregtech/datafix/GTDataFixers.java +++ b/src/main/java/gregtech/datafix/GTDataFixers.java @@ -2,8 +2,10 @@ import gregtech.api.GTValues; import gregtech.api.GregTechAPI; +import gregtech.datafix.impl.V2PostMTEReallocFixer; import gregtech.datafix.migration.impl.MigrateMTEBlockTE; import gregtech.datafix.migration.impl.MigrateMTEItems; +import gregtech.datafix.migration.lib.MTEDataMigrator; import gregtech.datafix.migration.lib.MTERegistriesMigrator; import gregtech.datafix.walker.WalkItemStackLike; @@ -19,6 +21,9 @@ import java.util.stream.IntStream; +import static gregtech.api.GTValues.*; +import static gregtech.common.metatileentities.MetaTileEntities.*; + public final class GTDataFixers { public static final Logger LOGGER = LogManager.getLogger("GregTech DataFixers"); @@ -58,6 +63,10 @@ private static void registerFixes(@NotNull GTDataVersion version, @NotNull ModFi fixer.registerFix(GTFixType.ITEM_STACK_LIKE, new MigrateMTEItems(migrator)); fixer.registerFix(FixTypes.CHUNK, new MigrateMTEBlockTE(migrator)); } + case V2_POST_ID_REALLOC -> { + MTEDataMigrator dataMigrator = new MTEDataMigrator(fixer, version.ordinal()); + V2PostMTEReallocFixer.apply(dataMigrator); + } default -> {} } } diff --git a/src/main/java/gregtech/datafix/GTDataVersion.java b/src/main/java/gregtech/datafix/GTDataVersion.java index e077b5ed729..64fa27c08f4 100644 --- a/src/main/java/gregtech/datafix/GTDataVersion.java +++ b/src/main/java/gregtech/datafix/GTDataVersion.java @@ -14,7 +14,12 @@ public enum GTDataVersion { /** * Version of data after multiple MTE registries were possible */ - V1_POST_MTE; + V1_POST_MTE, + /** + * Version of data after MTE IDs were reallocated + */ + V2_POST_ID_REALLOC, + ; static final @NotNull GTDataVersion @NotNull [] VALUES = values(); diff --git a/src/main/java/gregtech/datafix/impl/V2PostMTEReallocFixer.java b/src/main/java/gregtech/datafix/impl/V2PostMTEReallocFixer.java new file mode 100644 index 00000000000..d8fcf80ac4b --- /dev/null +++ b/src/main/java/gregtech/datafix/impl/V2PostMTEReallocFixer.java @@ -0,0 +1,221 @@ +package gregtech.datafix.impl; + +import gregtech.datafix.migration.lib.MTEDataMigrator; + +import org.jetbrains.annotations.NotNull; + +import static gregtech.api.GTValues.*; +import static gregtech.api.util.GTUtility.gregtechId; +import static gregtech.common.metatileentities.MetaTileEntities.*; + +public final class V2PostMTEReallocFixer { + + private V2PostMTEReallocFixer() {} + + public static void apply(@NotNull MTEDataMigrator dataMigrator) { + // item/fluid input/output buses + for (int i = 0; i <= UHV; i++) { + dataMigrator.migrateMTEMeta(MODID, 1150 + i, 11000 + i); // item in + dataMigrator.migrateMTEMeta(MODID, 1165 + i, 11015 + i); // item out + dataMigrator.migrateMTEMeta(MODID, 1180 + i, 11030 + i); // fluid in + dataMigrator.migrateMTEMeta(MODID, 1195 + i, 11045 + i); // fluid out + } + // energy hatches + for (int i = 0; i < ENERGY_INPUT_HATCH.length; i++) { + dataMigrator.migrateMTEMeta(MODID, 1210 + i, 11120 + i); // 2A IN + dataMigrator.migrateMTEMeta(MODID, 1225 + i, 11135 + i); // 2A OUT + } + dataMigrator.migrateMTEMeta(MODID, 1399, 11150 + EV); // 4A EV IN + dataMigrator.migrateMTEMeta(MODID, 1400, 11165 + EV); // 4A EV OUT + for (int i = 0; i < IV; i++) { + dataMigrator.migrateMTEMeta(MODID, 1240 + i, 11150 + IV + i); // 4A IN + dataMigrator.migrateMTEMeta(MODID, 1245 + i, 11180 + IV + i); // 16A IN + dataMigrator.migrateMTEMeta(MODID, 1250 + i, 11165 + IV + i); // 4A OUT + dataMigrator.migrateMTEMeta(MODID, 1255 + i, 11195 + IV + i); // 16A OUT + dataMigrator.migrateMTEMeta(MODID, 1260 + i, 11210 + IV + i); // 64A IN + dataMigrator.migrateMTEMeta(MODID, 1265 + i, 11225 + IV + i); // 64A OUT + } + // lasers + for (int i = 0; i < UV; i++) { + dataMigrator.migrateMTEMeta(MODID, 1420 + i, 11240 + IV + i); // 256A IN + dataMigrator.migrateMTEMeta(MODID, 1429 + i, 11255 + IV + i); // 256A OUT + dataMigrator.migrateMTEMeta(MODID, 1438 + i, 11270 + IV + i); // 1024A IN + dataMigrator.migrateMTEMeta(MODID, 1447 + i, 11285 + IV + i); // 1024A OUT + dataMigrator.migrateMTEMeta(MODID, 1456 + i, 11300 + IV + i); // 4096A IN + dataMigrator.migrateMTEMeta(MODID, 1465 + i, 11315 + IV + i); // 4096A OUT + } + // rotor holders + for (int i = 0; i < 6; i++) { + dataMigrator.migrateMTEMeta(MODID, 1640 + i, 11450 + HV + i); + } + // quad/nonuple hatches + for (int i = 0; i < (UHV - IV + 1); i++) { + dataMigrator.migrateMTEMeta(MODID, 1780 + i, 11060 + IV + i); // 4x in + dataMigrator.migrateMTEMeta(MODID, 1785 + i, 11075 + IV + i); // 9x in + dataMigrator.migrateMTEMeta(MODID, 1790 + i, 11090 + IV + i); // 4x out + dataMigrator.migrateMTEMeta(MODID, 1795 + i, 11105 + IV + i); // 9x out + } + // EV quad and nonuple import/export hatches + dataMigrator.migrateMTEMeta(MODID, 1190, 11060 + EV); + dataMigrator.migrateMTEMeta(MODID, 1191, 11075 + EV); + dataMigrator.migrateMTEMeta(MODID, 1205, 11090 + EV); + dataMigrator.migrateMTEMeta(MODID, 1206, 11105 + EV); + dataMigrator.migrateMTEName(gregtechId("fluid_hatch.import_4x"), + gregtechId("fluid_hatch.import_4x.ev")); + dataMigrator.migrateMTEName(gregtechId("fluid_hatch.import_9x"), + gregtechId("fluid_hatch.import_9x.ev")); + dataMigrator.migrateMTEName(gregtechId("fluid_hatch.export_4x"), + gregtechId("fluid_hatch.export_4x.ev")); + dataMigrator.migrateMTEName(gregtechId("fluid_hatch.export_9x"), + gregtechId("fluid_hatch.export_9x.ev")); + // mufflers + for (int i = 0; i < UHV; i++) { + dataMigrator.migrateMTEMeta(MODID, 1657 + i, 11465 + LV + i); + } + // maintenance + for (int i = 0; i < 3; i++) { + dataMigrator.migrateMTEMeta(MODID, 1654 + i, 11480 + i); + } + dataMigrator.migrateMTEMeta(MODID, 1401, 11483); + // PA hatch + dataMigrator.migrateMTEMeta(MODID, 1398, 11495); + // Passthrough hatches + dataMigrator.migrateMTEMeta(MODID, 1402, 11496); + dataMigrator.migrateMTEMeta(MODID, 1403, 11497); + // data hatches + dataMigrator.migrateMTEMeta(MODID, 1404, 11498); + dataMigrator.migrateMTEMeta(MODID, 1405, 11499); + dataMigrator.migrateMTEMeta(MODID, 1406, 11500); + // computation hatches + dataMigrator.migrateMTEMeta(MODID, 1407, 11501); + dataMigrator.migrateMTEMeta(MODID, 1408, 11502); + dataMigrator.migrateMTEMeta(MODID, 1409, 11503); + dataMigrator.migrateMTEMeta(MODID, 1410, 11504); + // reservoir hatch + dataMigrator.migrateMTEMeta(MODID, 1418, 11505); + // primitive pump hatch + dataMigrator.migrateMTEMeta(MODID, 1649, 11506); + // steam hatches + dataMigrator.migrateMTEMeta(MODID, 1651, 11507); + dataMigrator.migrateMTEMeta(MODID, 1652, 11508); + dataMigrator.migrateMTEMeta(MODID, 1653, 11509); + // object holder + dataMigrator.migrateMTEMeta(MODID, 1411, 11510); + // hpca components + dataMigrator.migrateMTEMeta(MODID, 1412, 11511); + dataMigrator.migrateMTEMeta(MODID, 1413, 11512); + dataMigrator.migrateMTEMeta(MODID, 1414, 11513); + dataMigrator.migrateMTEMeta(MODID, 1415, 11514); + dataMigrator.migrateMTEMeta(MODID, 1416, 11515); + dataMigrator.migrateMTEMeta(MODID, 1417, 11516); + // tank valves + dataMigrator.migrateMTEMeta(MODID, 1596, 11523); + dataMigrator.migrateMTEMeta(MODID, 1598, 11524); + // AE2 hatches + dataMigrator.migrateMTEMeta(MODID, 1745, 11533); + dataMigrator.migrateMTEMeta(MODID, 1746, 11532); + dataMigrator.migrateMTEMeta(MODID, 1747, 11526); + dataMigrator.migrateMTEMeta(MODID, 1748, 11525); + dataMigrator.migrateMTEMeta(MODID, 1752, 11527); + dataMigrator.migrateMTEMeta(MODID, 1753, 11528); + // transformers + for (int i = 0; i < TRANSFORMER.length; i++) { + dataMigrator.migrateMTEMeta(MODID, 1270 + i, 5000 + i); + dataMigrator.migrateMTEMeta(MODID, 1730 + i, 5015 + i); + dataMigrator.migrateMTEMeta(MODID, 1285 + i, 5030 + i); + } + // miners + for (int i = 0; i < 3; i++) { + dataMigrator.migrateMTEMeta(MODID, 920 + i, 5045 + i); + } + // item collectors + for (int i = 0; i < 4; i++) { + dataMigrator.migrateMTEMeta(MODID, 980 + i, 5060 + i); + } + // diodes + for (int i = 0; i < DIODES.length; i++) { + dataMigrator.migrateMTEMeta(MODID, 1300 + i, 5300 + i); + } + // battery buffers + for (int i = 0; i < BATTERY_BUFFER.length; i++) { + dataMigrator.migrateMTEMeta(MODID, 1315 + i, 5315 + i); + dataMigrator.migrateMTEMeta(MODID, 1330 + i, 5330 + i); + dataMigrator.migrateMTEMeta(MODID, 1345 + i, 5345 + i); + } + // turbo chargers + for (int i = 0; i < CHARGER.length; i++) { + dataMigrator.migrateMTEMeta(MODID, 1375 + i, 5375 + i); + } + // world accelerators + for (int i = 0; i < 8; i++) { + dataMigrator.migrateMTEMeta(MODID, 1390 + i, 5390 + i); + } + // buffers + for (int i = 0; i < 3; i++) { + dataMigrator.migrateMTEMeta(MODID, 1510 + i, 5510 + i); + } + // fisher + for (int i = 0; i < 4; i++) { + dataMigrator.migrateMTEMeta(MODID, 1515 + i, 5515 + i); + } + // pumps + for (int i = 0; i < 8; i++) { + dataMigrator.migrateMTEMeta(MODID, 1530 + i, 5530 + i); + } + // super/quantum chests + for (int i = 0; i < 10; i++) { + dataMigrator.migrateMTEMeta(MODID, 1560 + i, 5560 + i); + } + // super/quantum tanks + for (int i = 0; i < 10; i++) { + dataMigrator.migrateMTEMeta(MODID, 1575 + i, 5575 + i); + } + // block breakers + for (int i = 0; i < 4; i++) { + dataMigrator.migrateMTEMeta(MODID, 1590 + i, 5590 + i); + } + // drums + for (int i = 0; i < 8; i++) { + dataMigrator.migrateMTEMeta(MODID, 1610 + i, 5610 + i); + } + // crates + for (int i = 0; i < 7; i++) { + dataMigrator.migrateMTEMeta(MODID, 1625 + i, 5625 + i); + } + // clipboard mte + dataMigrator.migrateMTEMeta(MODID, 1666, 5646); + // crafting station + dataMigrator.migrateMTEMeta(MODID, 1647, 5647); + // monitor screen + dataMigrator.migrateMTEMeta(MODID, 1667, 5648); + // creative energy + dataMigrator.migrateMTEMeta(MODID, 1650, 5640); + // creative chest + dataMigrator.migrateMTEMeta(MODID, 1668, 5651); + // creative tank + dataMigrator.migrateMTEMeta(MODID, 1669, 5652); + // energy converters + for (int i = 0; i < ENERGY_CONVERTER.length; i++) { + for (int j = 0; j < ENERGY_CONVERTER[i].length; j++) { + dataMigrator.migrateMTEMeta(MODID, 1670 + i + (j * 4), 5670 + (i * ENERGY_CONVERTER[i].length) + j); + } + } + // long distance item endpoint + dataMigrator.migrateMTEMeta(MODID, 1749, 5749); + // long distance fluid endpoint + dataMigrator.migrateMTEMeta(MODID, 1750, 5750); + // alarm + dataMigrator.migrateMTEMeta(MODID, 1751, 5760); + // magic energy absorber + dataMigrator.migrateMTEMeta(MODID, 984, 5761); + // multiblocks + for (int i = 0; i <= 42; i++) { + dataMigrator.migrateMTEMeta(MODID, 1000 + i, 10000 + i); + } + // multiblock tanks + dataMigrator.migrateMTEMeta(MODID, 1597, 10043); + dataMigrator.migrateMTEMeta(MODID, 1599, 10044); + // primitive water pump + dataMigrator.migrateMTEMeta(MODID, 1648, 10045); + } +} diff --git a/src/main/java/gregtech/datafix/migration/lib/MTEDataMigrator.java b/src/main/java/gregtech/datafix/migration/lib/MTEDataMigrator.java index 3fbdf740a31..e2fcbf66a71 100644 --- a/src/main/java/gregtech/datafix/migration/lib/MTEDataMigrator.java +++ b/src/main/java/gregtech/datafix/migration/lib/MTEDataMigrator.java @@ -94,12 +94,12 @@ public void migrateMTEData(@NotNull ResourceLocation preRegistryName, * @param postMeta the new metadata for the MTE's ItemBlock */ public void migrateMTEMeta(@NotNull String modid, int preMeta, int postMeta) { - itemBlockMeta.computeIfAbsent(modid, k -> { + var mappings = itemBlockMeta.computeIfAbsent(modid, k -> { var map = new Short2ShortOpenHashMap(); map.defaultReturnValue((short) -1); - map.put((short) preMeta, (short) postMeta); return map; }); + mappings.put((short) preMeta, (short) postMeta); } @Override diff --git a/src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java b/src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java index 840fd0077d8..ae340d9f0de 100644 --- a/src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java +++ b/src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java @@ -351,27 +351,33 @@ public static void init() { MetaBlocks.METAL_CASING.getItemVariant(STEEL_SOLID), MetaBlocks.WARNING_SIGN.getItemVariant(NOISE_HAZARD)); - ModHandler.addShapedRecipe(true, "rotor_holder_hv", MetaTileEntities.ROTOR_HOLDER[0].getStackForm(), "SGS", + ModHandler.addShapedRecipe(true, "rotor_holder_hv", MetaTileEntities.ROTOR_HOLDER[GTValues.HV].getStackForm(), + "SGS", "GHG", "SGS", 'H', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'G', new UnificationEntry(OrePrefix.gear, Materials.BlackSteel), 'S', new UnificationEntry(OrePrefix.gearSmall, Materials.StainlessSteel)); - ModHandler.addShapedRecipe(true, "rotor_holder_ev", MetaTileEntities.ROTOR_HOLDER[1].getStackForm(), "SGS", + ModHandler.addShapedRecipe(true, "rotor_holder_ev", MetaTileEntities.ROTOR_HOLDER[GTValues.EV].getStackForm(), + "SGS", "GHG", "SGS", 'H', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'G', new UnificationEntry(OrePrefix.gear, Materials.Ultimet), 'S', new UnificationEntry(OrePrefix.gearSmall, Materials.Titanium)); - ModHandler.addShapedRecipe(true, "rotor_holder_iv", MetaTileEntities.ROTOR_HOLDER[2].getStackForm(), "SGS", + ModHandler.addShapedRecipe(true, "rotor_holder_iv", MetaTileEntities.ROTOR_HOLDER[GTValues.IV].getStackForm(), + "SGS", "GHG", "SGS", 'H', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'G', new UnificationEntry(OrePrefix.gear, Materials.HSSG), 'S', new UnificationEntry(OrePrefix.gearSmall, Materials.TungstenSteel)); - ModHandler.addShapedRecipe(true, "rotor_holder_luv", MetaTileEntities.ROTOR_HOLDER[3].getStackForm(), "SGS", + ModHandler.addShapedRecipe(true, "rotor_holder_luv", MetaTileEntities.ROTOR_HOLDER[GTValues.LuV].getStackForm(), + "SGS", "GHG", "SGS", 'H', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'G', new UnificationEntry(OrePrefix.gear, Materials.Ruthenium), 'S', new UnificationEntry(OrePrefix.gearSmall, Materials.RhodiumPlatedPalladium)); - ModHandler.addShapedRecipe(true, "rotor_holder_zpm", MetaTileEntities.ROTOR_HOLDER[4].getStackForm(), "SGS", + ModHandler.addShapedRecipe(true, "rotor_holder_zpm", MetaTileEntities.ROTOR_HOLDER[GTValues.ZPM].getStackForm(), + "SGS", "GHG", "SGS", 'H', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'G', new UnificationEntry(OrePrefix.gear, Materials.Trinium), 'S', new UnificationEntry(OrePrefix.gearSmall, Materials.NaquadahAlloy)); - ModHandler.addShapedRecipe(true, "rotor_holder_uv", MetaTileEntities.ROTOR_HOLDER[5].getStackForm(), "SGS", + ModHandler.addShapedRecipe(true, "rotor_holder_uv", MetaTileEntities.ROTOR_HOLDER[GTValues.UV].getStackForm(), + "SGS", "GHG", "SGS", 'H', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'G', new UnificationEntry(OrePrefix.gear, Materials.Tritanium), 'S', new UnificationEntry(OrePrefix.gearSmall, Materials.Darmstadtium)); diff --git a/src/main/java/gregtech/loaders/recipe/MetaTileEntityMachineRecipeLoader.java b/src/main/java/gregtech/loaders/recipe/MetaTileEntityMachineRecipeLoader.java index ff14c15acd4..d5bedf439e2 100644 --- a/src/main/java/gregtech/loaders/recipe/MetaTileEntityMachineRecipeLoader.java +++ b/src/main/java/gregtech/loaders/recipe/MetaTileEntityMachineRecipeLoader.java @@ -47,7 +47,7 @@ public static void init() { .input(pipeQuadrupleFluid, Titanium) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_IMPORT_HATCH[0]) + .output(QUADRUPLE_IMPORT_HATCH[EV]) .duration(300).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -55,7 +55,7 @@ public static void init() { .input(pipeQuadrupleFluid, TungstenSteel) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_IMPORT_HATCH[1]) + .output(QUADRUPLE_IMPORT_HATCH[IV]) .duration(300).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -63,7 +63,7 @@ public static void init() { .input(pipeQuadrupleFluid, NiobiumTitanium) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_IMPORT_HATCH[2]) + .output(QUADRUPLE_IMPORT_HATCH[LuV]) .duration(300).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -71,7 +71,7 @@ public static void init() { .input(pipeQuadrupleFluid, Iridium) .fluidInputs(Polybenzimidazole.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_IMPORT_HATCH[3]) + .output(QUADRUPLE_IMPORT_HATCH[ZPM]) .duration(300).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -79,7 +79,7 @@ public static void init() { .input(pipeQuadrupleFluid, Naquadah) .fluidInputs(Polybenzimidazole.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_IMPORT_HATCH[4]) + .output(QUADRUPLE_IMPORT_HATCH[UV]) .duration(300).EUt(VA[UV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -87,7 +87,7 @@ public static void init() { .input(pipeQuadrupleFluid, Neutronium) .fluidInputs(Polybenzimidazole.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_IMPORT_HATCH[5]) + .output(QUADRUPLE_IMPORT_HATCH[UHV]) .duration(300).EUt(VA[UV]).buildAndRegister(); // Nonuple Fluid Input Hatches @@ -96,7 +96,7 @@ public static void init() { .input(pipeNonupleFluid, Titanium) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_IMPORT_HATCH[0]) + .output(NONUPLE_IMPORT_HATCH[EV]) .duration(600).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -104,7 +104,7 @@ public static void init() { .input(pipeNonupleFluid, TungstenSteel) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_IMPORT_HATCH[1]) + .output(NONUPLE_IMPORT_HATCH[IV]) .duration(600).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -112,7 +112,7 @@ public static void init() { .input(pipeNonupleFluid, NiobiumTitanium) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_IMPORT_HATCH[2]) + .output(NONUPLE_IMPORT_HATCH[LuV]) .duration(600).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -120,7 +120,7 @@ public static void init() { .input(pipeNonupleFluid, Iridium) .fluidInputs(Polybenzimidazole.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_IMPORT_HATCH[3]) + .output(NONUPLE_IMPORT_HATCH[ZPM]) .duration(600).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -128,7 +128,7 @@ public static void init() { .input(pipeNonupleFluid, Naquadah) .fluidInputs(Polybenzimidazole.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_IMPORT_HATCH[4]) + .output(NONUPLE_IMPORT_HATCH[UV]) .duration(600).EUt(VA[UV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -136,7 +136,7 @@ public static void init() { .input(pipeNonupleFluid, Neutronium) .fluidInputs(Polybenzimidazole.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_IMPORT_HATCH[5]) + .output(NONUPLE_IMPORT_HATCH[UHV]) .duration(600).EUt(VA[UV]).buildAndRegister(); // Quadruple Fluid Output Hatches @@ -145,7 +145,7 @@ public static void init() { .input(pipeQuadrupleFluid, Titanium) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_EXPORT_HATCH[0]) + .output(QUADRUPLE_EXPORT_HATCH[EV]) .duration(300).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -153,7 +153,7 @@ public static void init() { .input(pipeQuadrupleFluid, TungstenSteel) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_EXPORT_HATCH[1]) + .output(QUADRUPLE_EXPORT_HATCH[IV]) .duration(300).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -161,7 +161,7 @@ public static void init() { .input(pipeQuadrupleFluid, NiobiumTitanium) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_EXPORT_HATCH[2]) + .output(QUADRUPLE_EXPORT_HATCH[LuV]) .duration(300).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -169,7 +169,7 @@ public static void init() { .input(pipeQuadrupleFluid, Iridium) .fluidInputs(Polybenzimidazole.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_EXPORT_HATCH[3]) + .output(QUADRUPLE_EXPORT_HATCH[ZPM]) .duration(300).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -177,7 +177,7 @@ public static void init() { .input(pipeQuadrupleFluid, Naquadah) .fluidInputs(Polybenzimidazole.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_EXPORT_HATCH[4]) + .output(QUADRUPLE_EXPORT_HATCH[UV]) .duration(300).EUt(VA[UV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -185,7 +185,7 @@ public static void init() { .input(pipeQuadrupleFluid, Neutronium) .fluidInputs(Polybenzimidazole.getFluid(L * 4)) .circuitMeta(4) - .output(QUADRUPLE_EXPORT_HATCH[5]) + .output(QUADRUPLE_EXPORT_HATCH[UHV]) .duration(300).EUt(VA[UV]).buildAndRegister(); // Nonuple Fluid Output Hatches @@ -194,7 +194,7 @@ public static void init() { .input(pipeNonupleFluid, Titanium) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_EXPORT_HATCH[0]) + .output(NONUPLE_EXPORT_HATCH[EV]) .duration(600).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -202,7 +202,7 @@ public static void init() { .input(pipeNonupleFluid, TungstenSteel) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_EXPORT_HATCH[1]) + .output(NONUPLE_EXPORT_HATCH[IV]) .duration(600).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -210,7 +210,7 @@ public static void init() { .input(pipeNonupleFluid, NiobiumTitanium) .fluidInputs(Polytetrafluoroethylene.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_EXPORT_HATCH[2]) + .output(NONUPLE_EXPORT_HATCH[LuV]) .duration(600).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -218,7 +218,7 @@ public static void init() { .input(pipeNonupleFluid, Iridium) .fluidInputs(Polybenzimidazole.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_EXPORT_HATCH[3]) + .output(NONUPLE_EXPORT_HATCH[ZPM]) .duration(600).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -226,7 +226,7 @@ public static void init() { .input(pipeNonupleFluid, Naquadah) .fluidInputs(Polybenzimidazole.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_EXPORT_HATCH[4]) + .output(NONUPLE_EXPORT_HATCH[UV]) .duration(600).EUt(VA[UV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -234,7 +234,7 @@ public static void init() { .input(pipeNonupleFluid, Neutronium) .fluidInputs(Polybenzimidazole.getFluid(L * 9)) .circuitMeta(9) - .output(NONUPLE_EXPORT_HATCH[5]) + .output(NONUPLE_EXPORT_HATCH[UHV]) .duration(600).EUt(VA[UV]).buildAndRegister(); // Reservoir Hatch @@ -618,154 +618,289 @@ public static void init() { .duration(200).EUt(VA[UV]).buildAndRegister(); // 4A Energy Hatches + ASSEMBLER_RECIPES.recipeBuilder() + .input(ENERGY_INPUT_HATCH[ULV]) + .input(wireGtQuadruple, Lead, 2) + .input(plate, WroughtIron, 2) + .output(ENERGY_INPUT_HATCH_4A[ULV]) + .duration(100).EUt(2).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(ENERGY_INPUT_HATCH[LV]) + .input(wireGtQuadruple, Tin, 2) + .input(plate, Steel, 2) + .output(ENERGY_INPUT_HATCH_4A[LV]) + .duration(100).EUt(VA[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(ENERGY_INPUT_HATCH[MV]) + .input(wireGtQuadruple, Copper, 2) + .input(plate, Aluminium, 2) + .output(ENERGY_INPUT_HATCH_4A[MV]) + .duration(100).EUt(VA[LV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(ENERGY_INPUT_HATCH[HV]) + .input(wireGtQuadruple, Gold, 2) + .input(plate, StainlessSteel, 2) + .output(ENERGY_INPUT_HATCH_4A[HV]) + .duration(100).EUt(VA[MV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_INPUT_HATCH[EV]) .input(wireGtQuadruple, Aluminium, 2) .input(plate, Titanium, 2) - .output(ENERGY_INPUT_HATCH_4A[0]) + .output(ENERGY_INPUT_HATCH_4A[EV]) .duration(100).EUt(VA[HV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_INPUT_HATCH[IV]) .input(wireGtQuadruple, Tungsten, 2) .input(plate, TungstenSteel, 2) - .output(ENERGY_INPUT_HATCH_4A[1]) + .output(ENERGY_INPUT_HATCH_4A[IV]) .duration(100).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_INPUT_HATCH[LuV]) .input(wireGtQuadruple, NiobiumTitanium, 2) .input(plate, RhodiumPlatedPalladium, 2) - .output(ENERGY_INPUT_HATCH_4A[2]) + .output(ENERGY_INPUT_HATCH_4A[LuV]) .duration(100).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_INPUT_HATCH[ZPM]) .input(wireGtQuadruple, VanadiumGallium, 2) .input(plate, NaquadahAlloy, 2) - .output(ENERGY_INPUT_HATCH_4A[3]) + .output(ENERGY_INPUT_HATCH_4A[ZPM]) .duration(100).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_INPUT_HATCH[UV]) .input(wireGtQuadruple, YttriumBariumCuprate, 2) .input(plate, Darmstadtium, 2) - .output(ENERGY_INPUT_HATCH_4A[4]) + .output(ENERGY_INPUT_HATCH_4A[UV]) .duration(100).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_INPUT_HATCH[UHV]) .input(wireGtQuadruple, Europium, 2) .input(plate, Neutronium, 2) - .output(ENERGY_INPUT_HATCH_4A[5]) + .output(ENERGY_INPUT_HATCH_4A[UHV]) .duration(100).EUt(VA[UV]).buildAndRegister(); // 16A Energy Hatches + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[ULV]) + .input(ENERGY_INPUT_HATCH_4A[ULV]) + .input(wireGtOctal, Lead, 2) + .input(plate, WroughtIron, 4) + .output(ENERGY_INPUT_HATCH_16A[ULV]) + .duration(200).EUt(VH[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[LV]) + .input(ENERGY_INPUT_HATCH_4A[LV]) + .input(wireGtOctal, Tin, 2) + .input(plate, Steel, 4) + .output(ENERGY_INPUT_HATCH_16A[LV]) + .duration(200).EUt(VA[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[MV]) + .input(ENERGY_INPUT_HATCH_4A[MV]) + .input(wireGtOctal, Copper, 2) + .input(plate, Aluminium, 4) + .output(ENERGY_INPUT_HATCH_16A[MV]) + .duration(200).EUt(VA[LV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[HV]) + .input(ENERGY_INPUT_HATCH_4A[HV]) + .input(wireGtOctal, Gold, 2) + .input(plate, StainlessSteel, 4) + .output(ENERGY_INPUT_HATCH_16A[HV]) + .duration(200).EUt(VA[MV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[EV]) + .input(ENERGY_INPUT_HATCH_4A[EV]) + .input(wireGtOctal, Aluminium, 2) + .input(plate, Titanium, 4) + .output(ENERGY_INPUT_HATCH_16A[EV]) + .duration(200).EUt(VA[HV]).buildAndRegister(); + ASSEMBLER_RECIPES.recipeBuilder() .input(TRANSFORMER[IV]) - .input(ENERGY_INPUT_HATCH_4A[1]) + .input(ENERGY_INPUT_HATCH_4A[IV]) .input(wireGtOctal, Tungsten, 2) .input(plate, TungstenSteel, 4) - .output(ENERGY_INPUT_HATCH_16A[0]) + .output(ENERGY_INPUT_HATCH_16A[IV]) .duration(200).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(TRANSFORMER[LuV]) - .input(ENERGY_INPUT_HATCH_4A[2]) + .input(ENERGY_INPUT_HATCH_4A[LuV]) .input(wireGtOctal, NiobiumTitanium, 2) .input(plate, RhodiumPlatedPalladium, 4) - .output(ENERGY_INPUT_HATCH_16A[1]) + .output(ENERGY_INPUT_HATCH_16A[LuV]) .duration(200).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(TRANSFORMER[ZPM]) - .input(ENERGY_INPUT_HATCH_4A[3]) + .input(ENERGY_INPUT_HATCH_4A[ZPM]) .input(wireGtOctal, VanadiumGallium, 2) .input(plate, NaquadahAlloy, 4) - .output(ENERGY_INPUT_HATCH_16A[2]) + .output(ENERGY_INPUT_HATCH_16A[ZPM]) .duration(200).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(TRANSFORMER[UV]) - .input(ENERGY_INPUT_HATCH_4A[4]) + .input(ENERGY_INPUT_HATCH_4A[UV]) .input(wireGtOctal, YttriumBariumCuprate, 2) .input(plate, Darmstadtium, 4) - .output(ENERGY_INPUT_HATCH_16A[3]) + .output(ENERGY_INPUT_HATCH_16A[UV]) .duration(200).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(HI_AMP_TRANSFORMER[UV]) - .input(ENERGY_INPUT_HATCH_4A[5], 2) + .input(ENERGY_INPUT_HATCH_4A[UHV], 2) .input(wireGtOctal, Europium, 2) .input(plate, Neutronium, 4) - .output(ENERGY_INPUT_HATCH_16A[4]) + .output(ENERGY_INPUT_HATCH_16A[UHV]) .duration(200).EUt(VA[UV]).buildAndRegister(); // 64A Substation Energy Hatches + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[ULV]) + .input(ENERGY_INPUT_HATCH_16A[ULV]) + .input(wireGtHex, Lead, 2) + .input(plate, WroughtIron, 6) + .output(SUBSTATION_ENERGY_INPUT_HATCH[ULV]) + .duration(400).EUt(VH[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[LV]) + .input(ENERGY_INPUT_HATCH_16A[LV]) + .input(wireGtHex, Tin, 2) + .input(plate, Steel, 6) + .output(SUBSTATION_ENERGY_INPUT_HATCH[LV]) + .duration(400).EUt(VA[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[MV]) + .input(ENERGY_INPUT_HATCH_16A[MV]) + .input(wireGtHex, Copper, 2) + .input(plate, Aluminium, 6) + .output(SUBSTATION_ENERGY_INPUT_HATCH[MV]) + .duration(400).EUt(VA[LV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[HV]) + .input(ENERGY_INPUT_HATCH_16A[HV]) + .input(wireGtHex, Gold, 2) + .input(plate, StainlessSteel, 6) + .output(SUBSTATION_ENERGY_INPUT_HATCH[HV]) + .duration(400).EUt(VA[MV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[EV]) + .input(ENERGY_INPUT_HATCH_16A[EV]) + .input(wireGtHex, Aluminium, 2) + .input(plate, Titanium, 6) + .output(SUBSTATION_ENERGY_INPUT_HATCH[EV]) + .duration(400).EUt(VA[HV]).buildAndRegister(); + ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[IV]) - .input(ENERGY_INPUT_HATCH_16A[0]) + .input(ENERGY_INPUT_HATCH_16A[IV]) .input(wireGtHex, Tungsten, 2) .input(plate, TungstenSteel, 6) - .output(SUBSTATION_ENERGY_INPUT_HATCH[0]) + .output(SUBSTATION_ENERGY_INPUT_HATCH[IV]) .duration(400).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[LuV]) - .input(ENERGY_INPUT_HATCH_16A[1]) + .input(ENERGY_INPUT_HATCH_16A[LuV]) .input(wireGtHex, NiobiumTitanium, 2) .input(plate, RhodiumPlatedPalladium, 6) - .output(SUBSTATION_ENERGY_INPUT_HATCH[1]) + .output(SUBSTATION_ENERGY_INPUT_HATCH[LuV]) .duration(400).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[ZPM]) - .input(ENERGY_INPUT_HATCH_16A[2]) + .input(ENERGY_INPUT_HATCH_16A[ZPM]) .input(wireGtHex, VanadiumGallium, 2) .input(plate, NaquadahAlloy, 6) - .output(SUBSTATION_ENERGY_INPUT_HATCH[2]) + .output(SUBSTATION_ENERGY_INPUT_HATCH[ZPM]) .duration(400).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[UV]) - .input(ENERGY_INPUT_HATCH_16A[3]) + .input(ENERGY_INPUT_HATCH_16A[UV]) .input(wireGtHex, YttriumBariumCuprate, 2) .input(plate, Darmstadtium, 6) - .output(SUBSTATION_ENERGY_INPUT_HATCH[3]) + .output(SUBSTATION_ENERGY_INPUT_HATCH[UV]) .duration(400).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[UV]) - .input(ENERGY_INPUT_HATCH_16A[4]) + .input(ENERGY_INPUT_HATCH_16A[UHV]) .input(wireGtHex, Europium, 2) .input(plate, Neutronium, 6) - .output(SUBSTATION_ENERGY_INPUT_HATCH[4]) + .output(SUBSTATION_ENERGY_INPUT_HATCH[UHV]) .duration(400).EUt(VA[UV]).buildAndRegister(); // 4A Dynamo Hatches + ASSEMBLER_RECIPES.recipeBuilder() + .input(ENERGY_OUTPUT_HATCH[ULV]) + .input(wireGtQuadruple, Lead, 2) + .input(plate, WroughtIron, 2) + .output(ENERGY_OUTPUT_HATCH_4A[ULV]) + .duration(100).EUt(VH[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(ENERGY_OUTPUT_HATCH[LV]) + .input(wireGtQuadruple, Tin, 2) + .input(plate, Steel, 2) + .output(ENERGY_OUTPUT_HATCH_4A[LV]) + .duration(100).EUt(VA[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(ENERGY_OUTPUT_HATCH[MV]) + .input(wireGtQuadruple, Copper, 2) + .input(plate, Aluminium, 2) + .output(ENERGY_OUTPUT_HATCH_4A[MV]) + .duration(100).EUt(VA[LV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(ENERGY_OUTPUT_HATCH[HV]) + .input(wireGtQuadruple, Gold, 2) + .input(plate, StainlessSteel, 2) + .output(ENERGY_OUTPUT_HATCH_4A[HV]) + .duration(100).EUt(VA[MV]).buildAndRegister(); + ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_OUTPUT_HATCH[EV]) .input(wireGtQuadruple, Aluminium, 2) .input(plate, Titanium, 2) - .output(ENERGY_OUTPUT_HATCH_4A[0]) + .output(ENERGY_OUTPUT_HATCH_4A[EV]) .duration(100).EUt(VA[HV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_OUTPUT_HATCH[IV]) .input(wireGtQuadruple, Tungsten, 2) .input(plate, TungstenSteel, 2) - .output(ENERGY_OUTPUT_HATCH_4A[1]) + .output(ENERGY_OUTPUT_HATCH_4A[IV]) .duration(100).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_OUTPUT_HATCH[LuV]) .input(wireGtQuadruple, NiobiumTitanium, 2) .input(plate, RhodiumPlatedPalladium, 2) - .output(ENERGY_OUTPUT_HATCH_4A[2]) + .output(ENERGY_OUTPUT_HATCH_4A[LuV]) .duration(100).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -773,105 +908,185 @@ public static void init() { .input(ENERGY_OUTPUT_HATCH[ZPM]) .input(wireGtQuadruple, VanadiumGallium, 2) .input(plate, NaquadahAlloy, 2) - .output(ENERGY_OUTPUT_HATCH_4A[3]) + .output(ENERGY_OUTPUT_HATCH_4A[ZPM]) .duration(100).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_OUTPUT_HATCH[UV]) .input(wireGtQuadruple, YttriumBariumCuprate, 2) .input(plate, Darmstadtium, 2) - .output(ENERGY_OUTPUT_HATCH_4A[4]) + .output(ENERGY_OUTPUT_HATCH_4A[UV]) .duration(100).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(ENERGY_OUTPUT_HATCH[UHV]) .input(wireGtQuadruple, Europium, 2) .input(plate, Neutronium, 2) - .output(ENERGY_OUTPUT_HATCH_4A[5]) + .output(ENERGY_OUTPUT_HATCH_4A[UHV]) .duration(100).EUt(VA[UV]).buildAndRegister(); // 16A Dynamo Hatches + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[ULV]) + .input(ENERGY_OUTPUT_HATCH_4A[ULV]) + .input(wireGtOctal, Lead, 2) + .input(plate, WroughtIron, 4) + .output(ENERGY_OUTPUT_HATCH_16A[LuV]) + .duration(200).EUt(VH[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[LV]) + .input(ENERGY_OUTPUT_HATCH_4A[LV]) + .input(wireGtOctal, Tin, 2) + .input(plate, Steel, 4) + .output(ENERGY_OUTPUT_HATCH_16A[LV]) + .duration(200).EUt(VA[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[MV]) + .input(ENERGY_OUTPUT_HATCH_4A[MV]) + .input(wireGtOctal, Copper, 2) + .input(plate, Aluminium, 4) + .output(ENERGY_OUTPUT_HATCH_16A[MV]) + .duration(200).EUt(VA[LV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[HV]) + .input(ENERGY_OUTPUT_HATCH_4A[HV]) + .input(wireGtOctal, Gold, 2) + .input(plate, StainlessSteel, 4) + .output(ENERGY_OUTPUT_HATCH_16A[HV]) + .duration(200).EUt(VA[MV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(TRANSFORMER[EV]) + .input(ENERGY_OUTPUT_HATCH_4A[EV]) + .input(wireGtOctal, Aluminium, 2) + .input(plate, Titanium, 4) + .output(ENERGY_OUTPUT_HATCH_16A[EV]) + .duration(200).EUt(VA[HV]).buildAndRegister(); + ASSEMBLER_RECIPES.recipeBuilder() .input(TRANSFORMER[IV]) - .input(ENERGY_OUTPUT_HATCH_4A[1]) + .input(ENERGY_OUTPUT_HATCH_4A[IV]) .input(wireGtOctal, Tungsten, 2) .input(plate, TungstenSteel, 4) - .output(ENERGY_OUTPUT_HATCH_16A[0]) + .output(ENERGY_OUTPUT_HATCH_16A[IV]) .duration(200).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(TRANSFORMER[LuV]) - .input(ENERGY_OUTPUT_HATCH_4A[2]) + .input(ENERGY_OUTPUT_HATCH_4A[LuV]) .input(wireGtOctal, NiobiumTitanium, 2) .input(plate, RhodiumPlatedPalladium, 4) - .output(ENERGY_OUTPUT_HATCH_16A[1]) + .output(ENERGY_OUTPUT_HATCH_16A[LuV]) .duration(200).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(TRANSFORMER[ZPM]) - .input(ENERGY_OUTPUT_HATCH_4A[3]) + .input(ENERGY_OUTPUT_HATCH_4A[ZPM]) .input(wireGtOctal, VanadiumGallium, 2) .input(plate, NaquadahAlloy, 4) - .output(ENERGY_OUTPUT_HATCH_16A[2]) + .output(ENERGY_OUTPUT_HATCH_16A[ZPM]) .duration(200).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(TRANSFORMER[UV]) - .input(ENERGY_OUTPUT_HATCH_4A[4]) + .input(ENERGY_OUTPUT_HATCH_4A[UV]) .input(wireGtOctal, YttriumBariumCuprate, 2) .input(plate, Darmstadtium, 4) - .output(ENERGY_OUTPUT_HATCH_16A[3]) + .output(ENERGY_OUTPUT_HATCH_16A[UV]) .duration(200).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(HI_AMP_TRANSFORMER[UV]) - .input(ENERGY_OUTPUT_HATCH_4A[5]) + .input(ENERGY_OUTPUT_HATCH_4A[UHV]) .input(wireGtOctal, Europium, 2) .input(plate, Neutronium, 4) - .output(ENERGY_OUTPUT_HATCH_16A[4]) + .output(ENERGY_OUTPUT_HATCH_16A[UHV]) .duration(200).EUt(VA[UV]).buildAndRegister(); // 64A Substation Dynamo Hatches + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[ULV]) + .input(ENERGY_OUTPUT_HATCH_16A[ULV]) + .input(wireGtHex, Lead, 2) + .input(plate, WroughtIron, 6) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[ULV]) + .duration(400).EUt(VH[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[LV]) + .input(ENERGY_OUTPUT_HATCH_16A[LV]) + .input(wireGtHex, Tin, 2) + .input(plate, Steel, 6) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[LV]) + .duration(400).EUt(VA[ULV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[MV]) + .input(ENERGY_OUTPUT_HATCH_16A[MV]) + .input(wireGtHex, Copper, 2) + .input(plate, Aluminium, 6) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[MV]) + .duration(400).EUt(VA[LV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[HV]) + .input(ENERGY_OUTPUT_HATCH_16A[HV]) + .input(wireGtHex, Gold, 2) + .input(plate, StainlessSteel, 6) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[HV]) + .duration(400).EUt(VA[MV]).buildAndRegister(); + + ASSEMBLER_RECIPES.recipeBuilder() + .input(POWER_TRANSFORMER[EV]) + .input(ENERGY_OUTPUT_HATCH_16A[EV]) + .input(wireGtHex, Aluminium, 2) + .input(plate, Titanium, 6) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[EV]) + .duration(400).EUt(VA[HV]).buildAndRegister(); + ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[IV]) - .input(ENERGY_OUTPUT_HATCH_16A[0]) + .input(ENERGY_OUTPUT_HATCH_16A[IV]) .input(wireGtHex, Tungsten, 2) .input(plate, TungstenSteel, 6) - .output(SUBSTATION_ENERGY_OUTPUT_HATCH[0]) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[IV]) .duration(400).EUt(VA[EV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[LuV]) - .input(ENERGY_OUTPUT_HATCH_16A[1]) + .input(ENERGY_OUTPUT_HATCH_16A[LuV]) .input(wireGtHex, NiobiumTitanium, 2) .input(plate, RhodiumPlatedPalladium, 6) - .output(SUBSTATION_ENERGY_OUTPUT_HATCH[1]) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[LuV]) .duration(400).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[ZPM]) - .input(ENERGY_OUTPUT_HATCH_16A[2]) + .input(ENERGY_OUTPUT_HATCH_16A[ZPM]) .input(wireGtHex, VanadiumGallium, 2) .input(plate, NaquadahAlloy, 6) - .output(SUBSTATION_ENERGY_OUTPUT_HATCH[2]) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[ZPM]) .duration(400).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[UV]) - .input(ENERGY_OUTPUT_HATCH_16A[3]) + .input(ENERGY_OUTPUT_HATCH_16A[UV]) .input(wireGtHex, YttriumBariumCuprate, 2) .input(plate, Darmstadtium, 6) - .output(SUBSTATION_ENERGY_OUTPUT_HATCH[3]) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[UV]) .duration(400).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() .input(POWER_TRANSFORMER[UV]) - .input(ENERGY_OUTPUT_HATCH_16A[4]) + .input(ENERGY_OUTPUT_HATCH_16A[UHV]) .input(wireGtHex, Europium, 2) .input(plate, Neutronium, 6) - .output(SUBSTATION_ENERGY_OUTPUT_HATCH[4]) + .output(SUBSTATION_ENERGY_OUTPUT_HATCH[UHV]) .duration(400).EUt(VA[UV]).buildAndRegister(); // Maintenance Hatch @@ -1169,7 +1384,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_IV) .input(cableGtSingle, Platinum, 4) .circuitMeta(1) - .output(LASER_OUTPUT_HATCH_256[0]) + .output(LASER_OUTPUT_HATCH_256[IV]) .duration(300).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1179,7 +1394,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_LuV) .input(cableGtSingle, NiobiumTitanium, 4) .circuitMeta(1) - .output(LASER_OUTPUT_HATCH_256[1]) + .output(LASER_OUTPUT_HATCH_256[LuV]) .duration(300).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1189,7 +1404,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_ZPM) .input(cableGtSingle, VanadiumGallium, 4) .circuitMeta(1) - .output(LASER_OUTPUT_HATCH_256[2]) + .output(LASER_OUTPUT_HATCH_256[ZPM]) .duration(300).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1199,7 +1414,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_UV) .input(cableGtSingle, YttriumBariumCuprate, 4) .circuitMeta(1) - .output(LASER_OUTPUT_HATCH_256[3]) + .output(LASER_OUTPUT_HATCH_256[UV]) .duration(300).EUt(VA[UV]).buildAndRegister(); // 256A Laser Target Hatches @@ -1210,7 +1425,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_IV) .input(cableGtSingle, Platinum, 4) .circuitMeta(1) - .output(LASER_INPUT_HATCH_256[0]) + .output(LASER_INPUT_HATCH_256[IV]) .duration(300).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1220,7 +1435,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_LuV) .input(cableGtSingle, NiobiumTitanium, 4) .circuitMeta(1) - .output(LASER_INPUT_HATCH_256[1]) + .output(LASER_INPUT_HATCH_256[LuV]) .duration(300).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1230,7 +1445,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_ZPM) .input(cableGtSingle, VanadiumGallium, 4) .circuitMeta(1) - .output(LASER_INPUT_HATCH_256[2]) + .output(LASER_INPUT_HATCH_256[ZPM]) .duration(300).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1240,7 +1455,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_UV) .input(cableGtSingle, YttriumBariumCuprate, 4) .circuitMeta(1) - .output(LASER_INPUT_HATCH_256[3]) + .output(LASER_INPUT_HATCH_256[UV]) .duration(300).EUt(VA[UV]).buildAndRegister(); // 1024A Laser Source Hatches @@ -1251,7 +1466,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_IV, 2) .input(cableGtDouble, Platinum, 4) .circuitMeta(2) - .output(LASER_OUTPUT_HATCH_1024[0]) + .output(LASER_OUTPUT_HATCH_1024[IV]) .duration(600).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1261,7 +1476,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_LuV, 2) .input(cableGtDouble, NiobiumTitanium, 4) .circuitMeta(2) - .output(LASER_OUTPUT_HATCH_1024[1]) + .output(LASER_OUTPUT_HATCH_1024[LuV]) .duration(600).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1271,7 +1486,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_ZPM, 2) .input(cableGtDouble, VanadiumGallium, 4) .circuitMeta(2) - .output(LASER_OUTPUT_HATCH_1024[2]) + .output(LASER_OUTPUT_HATCH_1024[ZPM]) .duration(600).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1281,7 +1496,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_UV, 2) .input(cableGtDouble, YttriumBariumCuprate, 4) .circuitMeta(2) - .output(LASER_OUTPUT_HATCH_1024[3]) + .output(LASER_OUTPUT_HATCH_1024[UV]) .duration(600).EUt(VA[UV]).buildAndRegister(); // 1024A Laser Target Hatches @@ -1292,7 +1507,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_IV, 2) .input(cableGtDouble, Platinum, 4) .circuitMeta(2) - .output(LASER_INPUT_HATCH_1024[0]) + .output(LASER_INPUT_HATCH_1024[IV]) .duration(600).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1302,7 +1517,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_LuV, 2) .input(cableGtDouble, NiobiumTitanium, 4) .circuitMeta(2) - .output(LASER_INPUT_HATCH_1024[1]) + .output(LASER_INPUT_HATCH_1024[LuV]) .duration(600).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1312,7 +1527,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_ZPM, 2) .input(cableGtDouble, VanadiumGallium, 4) .circuitMeta(2) - .output(LASER_INPUT_HATCH_1024[2]) + .output(LASER_INPUT_HATCH_1024[ZPM]) .duration(600).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1322,7 +1537,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_UV, 2) .input(cableGtDouble, YttriumBariumCuprate, 4) .circuitMeta(2) - .output(LASER_INPUT_HATCH_1024[3]) + .output(LASER_INPUT_HATCH_1024[UV]) .duration(600).EUt(VA[UV]).buildAndRegister(); // 4096A Laser Source Hatches @@ -1333,7 +1548,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_IV, 4) .input(cableGtQuadruple, Platinum, 4) .circuitMeta(3) - .output(LASER_OUTPUT_HATCH_4096[0]) + .output(LASER_OUTPUT_HATCH_4096[IV]) .duration(1200).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1343,7 +1558,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_LuV, 4) .input(cableGtQuadruple, NiobiumTitanium, 4) .circuitMeta(3) - .output(LASER_OUTPUT_HATCH_4096[1]) + .output(LASER_OUTPUT_HATCH_4096[LuV]) .duration(1200).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1353,7 +1568,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_ZPM, 4) .input(cableGtQuadruple, VanadiumGallium, 4) .circuitMeta(3) - .output(LASER_OUTPUT_HATCH_4096[2]) + .output(LASER_OUTPUT_HATCH_4096[ZPM]) .duration(1200).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1363,7 +1578,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_UV, 4) .input(cableGtQuadruple, YttriumBariumCuprate, 4) .circuitMeta(3) - .output(LASER_OUTPUT_HATCH_4096[3]) + .output(LASER_OUTPUT_HATCH_4096[UV]) .duration(1200).EUt(VA[UV]).buildAndRegister(); // 4096A Laser Target Hatches @@ -1374,7 +1589,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_IV, 4) .input(cableGtQuadruple, Platinum, 4) .circuitMeta(3) - .output(LASER_INPUT_HATCH_4096[0]) + .output(LASER_INPUT_HATCH_4096[IV]) .duration(1200).EUt(VA[IV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1384,7 +1599,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_LuV, 4) .input(cableGtQuadruple, NiobiumTitanium, 4) .circuitMeta(3) - .output(LASER_INPUT_HATCH_4096[1]) + .output(LASER_INPUT_HATCH_4096[LuV]) .duration(1200).EUt(VA[LuV]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1394,7 +1609,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_ZPM, 4) .input(cableGtQuadruple, VanadiumGallium, 4) .circuitMeta(3) - .output(LASER_INPUT_HATCH_4096[2]) + .output(LASER_INPUT_HATCH_4096[ZPM]) .duration(1200).EUt(VA[ZPM]).buildAndRegister(); ASSEMBLER_RECIPES.recipeBuilder() @@ -1404,7 +1619,7 @@ private static void registerLaserRecipes() { .input(ELECTRIC_PUMP_UV, 4) .input(cableGtQuadruple, YttriumBariumCuprate, 4) .circuitMeta(3) - .output(LASER_INPUT_HATCH_4096[3]) + .output(LASER_INPUT_HATCH_4096[UV]) .duration(1200).EUt(VA[UV]).buildAndRegister(); } } diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 9e86c2e951a..d1b898c63a4 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -5113,7 +5113,11 @@ gregtech.machine.fluid_hatch.import.max.name=MAX Input Hatch gregtech.machine.fluid_hatch.export.tooltip=Fluid Output for Multiblocks -gregtech.machine.fluid_hatch.import_4x.name=EV Quadruple Input Hatch +gregtech.machine.fluid_hatch.import_4x.ulv.name=ULV Quadruple Input Hatch +gregtech.machine.fluid_hatch.import_4x.lv.name=LV Quadruple Input Hatch +gregtech.machine.fluid_hatch.import_4x.mv.name=MV Quadruple Input Hatch +gregtech.machine.fluid_hatch.import_4x.hv.name=HV Quadruple Input Hatch +gregtech.machine.fluid_hatch.import_4x.ev.name=EV Quadruple Input Hatch gregtech.machine.fluid_hatch.import_4x.iv.name=IV Quadruple Input Hatch gregtech.machine.fluid_hatch.import_4x.luv.name=LuV Quadruple Input Hatch gregtech.machine.fluid_hatch.import_4x.zpm.name=ZPM Quadruple Input Hatch @@ -5125,7 +5129,11 @@ gregtech.machine.fluid_hatch.import_4x.uxv.name=UXV Quadruple Input Hatch gregtech.machine.fluid_hatch.import_4x.opv.name=OpV Quadruple Input Hatch gregtech.machine.fluid_hatch.import_4x.max.name=MAX Quadruple Input Hatch -gregtech.machine.fluid_hatch.import_9x.name=EV Nonuple Input Hatch +gregtech.machine.fluid_hatch.import_9x.ulv.name=ULV Nonuple Input Hatch +gregtech.machine.fluid_hatch.import_9x.lv.name=LV Nonuple Input Hatch +gregtech.machine.fluid_hatch.import_9x.mv.name=MV Nonuple Input Hatch +gregtech.machine.fluid_hatch.import_9x.hv.name=HV Nonuple Input Hatch +gregtech.machine.fluid_hatch.import_9x.ev.name=EV Nonuple Input Hatch gregtech.machine.fluid_hatch.import_9x.iv.name=IV Nonuple Input Hatch gregtech.machine.fluid_hatch.import_9x.luv.name=LuV Nonuple Input Hatch gregtech.machine.fluid_hatch.import_9x.zpm.name=ZPM Nonuple Input Hatch @@ -5137,7 +5145,11 @@ gregtech.machine.fluid_hatch.import_9x.uxv.name=UXV Nonuple Input Hatch gregtech.machine.fluid_hatch.import_9x.opv.name=OpV Nonuple Input Hatch gregtech.machine.fluid_hatch.import_9x.max.name=MAX Nonuple Input Hatch -gregtech.machine.fluid_hatch.export_4x.name=EV Quadruple Output Hatch +gregtech.machine.fluid_hatch.export_4x.ulv.name=ULV Quadruple Output Hatch +gregtech.machine.fluid_hatch.export_4x.lv.name=LV Quadruple Output Hatch +gregtech.machine.fluid_hatch.export_4x.mv.name=MV Quadruple Output Hatch +gregtech.machine.fluid_hatch.export_4x.hv.name=HV Quadruple Output Hatch +gregtech.machine.fluid_hatch.export_4x.ev.name=EV Quadruple Output Hatch gregtech.machine.fluid_hatch.export_4x.iv.name=IV Quadruple Output Hatch gregtech.machine.fluid_hatch.export_4x.luv.name=LuV Quadruple Output Hatch gregtech.machine.fluid_hatch.export_4x.zpm.name=ZPM Quadruple Output Hatch @@ -5149,7 +5161,11 @@ gregtech.machine.fluid_hatch.export_4x.uxv.name=UXV Quadruple Output Hatch gregtech.machine.fluid_hatch.export_4x.opv.name=OpV Quadruple Output Hatch gregtech.machine.fluid_hatch.export_4x.max.name=MAX Quadruple Output Hatch -gregtech.machine.fluid_hatch.export_9x.name=EV Nonuple Output Hatch +gregtech.machine.fluid_hatch.export_9x.ulv.name=ULV Nonuple Output Hatch +gregtech.machine.fluid_hatch.export_9x.lv.name=LV Nonuple Output Hatch +gregtech.machine.fluid_hatch.export_9x.mv.name=MV Nonuple Output Hatch +gregtech.machine.fluid_hatch.export_9x.hv.name=HV Nonuple Output Hatch +gregtech.machine.fluid_hatch.export_9x.ev.name=EV Nonuple Output Hatch gregtech.machine.fluid_hatch.export_9x.iv.name=IV Nonuple Output Hatch gregtech.machine.fluid_hatch.export_9x.luv.name=LuV Nonuple Output Hatch gregtech.machine.fluid_hatch.export_9x.zpm.name=ZPM Nonuple Output Hatch @@ -5197,6 +5213,10 @@ gregtech.machine.energy_hatch.input.max.name=MAX Energy Hatch gregtech.machine.energy_hatch.input_hi_amp.tooltip=Multiple Ampere Energy Input for Multiblocks +gregtech.machine.energy_hatch.input_4a.ulv.name=ULV 4A Energy Hatch +gregtech.machine.energy_hatch.input_4a.lv.name=LV 4A Energy Hatch +gregtech.machine.energy_hatch.input_4a.mv.name=MV 4A Energy Hatch +gregtech.machine.energy_hatch.input_4a.hv.name=HV 4A Energy Hatch gregtech.machine.energy_hatch.input_4a.ev.name=EV 4A Energy Hatch gregtech.machine.energy_hatch.input_4a.iv.name=IV 4A Energy Hatch gregtech.machine.energy_hatch.input_4a.luv.name=LuV 4A Energy Hatch @@ -5209,6 +5229,11 @@ gregtech.machine.energy_hatch.input_4a.uxv.name=UXV 4A Energy Hatch gregtech.machine.energy_hatch.input_4a.opv.name=OpV 4A Energy Hatch gregtech.machine.energy_hatch.input_4a.max.name=MAX 4A Energy Hatch +gregtech.machine.energy_hatch.input_16a.ulv.name=ULV 16A Energy Hatch +gregtech.machine.energy_hatch.input_16a.lv.name=LV 16A Energy Hatch +gregtech.machine.energy_hatch.input_16a.mv.name=MV 16A Energy Hatch +gregtech.machine.energy_hatch.input_16a.hv.name=HV 16A Energy Hatch +gregtech.machine.energy_hatch.input_16a.ev.name=EV 16A Energy Hatch gregtech.machine.energy_hatch.input_16a.iv.name=IV 16A Energy Hatch gregtech.machine.energy_hatch.input_16a.luv.name=LuV 16A Energy Hatch gregtech.machine.energy_hatch.input_16a.zpm.name=ZPM 16A Energy Hatch @@ -5222,6 +5247,11 @@ gregtech.machine.energy_hatch.input_16a.max.name=MAX 16A Energy Hatch gregtech.machine.substation_hatch.input.tooltip=Energy Input for the Power Substation +gregtech.machine.substation_hatch.input_64a.ulv.name=ULV 64A Substation Energy Hatch +gregtech.machine.substation_hatch.input_64a.lv.name=LV 64A Substation Energy Hatch +gregtech.machine.substation_hatch.input_64a.mv.name=MV 64A Substation Energy Hatch +gregtech.machine.substation_hatch.input_64a.hv.name=HV 64A Substation Energy Hatch +gregtech.machine.substation_hatch.input_64a.ev.name=EV 64A Substation Energy Hatch gregtech.machine.substation_hatch.input_64a.iv.name=IV 64A Substation Energy Hatch gregtech.machine.substation_hatch.input_64a.luv.name=LuV 64A Substation Energy Hatch gregtech.machine.substation_hatch.input_64a.zpm.name=ZPM 64A Substation Energy Hatch @@ -5253,6 +5283,10 @@ gregtech.machine.energy_hatch.output.max.name=MAX Dynamo Hatch gregtech.machine.energy_hatch.output_hi_amp.tooltip=Multiple Ampere Energy Output for Multiblocks +gregtech.machine.energy_hatch.output_4a.ulv.name=ULV 4A Dynamo Hatch +gregtech.machine.energy_hatch.output_4a.lv.name=LV 4A Dynamo Hatch +gregtech.machine.energy_hatch.output_4a.mv.name=MV 4A Dynamo Hatch +gregtech.machine.energy_hatch.output_4a.hv.name=HV 4A Dynamo Hatch gregtech.machine.energy_hatch.output_4a.ev.name=EV 4A Dynamo Hatch gregtech.machine.energy_hatch.output_4a.iv.name=IV 4A Dynamo Hatch gregtech.machine.energy_hatch.output_4a.luv.name=LuV 4A Dynamo Hatch @@ -5265,6 +5299,11 @@ gregtech.machine.energy_hatch.output_4a.uxv.name=UXV 4A Dynamo Hatch gregtech.machine.energy_hatch.output_4a.opv.name=OpV 4A Dynamo Hatch gregtech.machine.energy_hatch.output_4a.max.name=MAX 4A Dynamo Hatch +gregtech.machine.energy_hatch.output_16a.ulv.name=ULV 16A Dynamo Hatch +gregtech.machine.energy_hatch.output_16a.lv.name=LV 16A Dynamo Hatch +gregtech.machine.energy_hatch.output_16a.mv.name=MV 16A Dynamo Hatch +gregtech.machine.energy_hatch.output_16a.hv.name=HV 16A Dynamo Hatch +gregtech.machine.energy_hatch.output_16a.ev.name=EV 16A Dynamo Hatch gregtech.machine.energy_hatch.output_16a.iv.name=IV 16A Dynamo Hatch gregtech.machine.energy_hatch.output_16a.luv.name=LuV 16A Dynamo Hatch gregtech.machine.energy_hatch.output_16a.zpm.name=ZPM 16A Dynamo Hatch @@ -5278,6 +5317,11 @@ gregtech.machine.energy_hatch.output_16a.max.name=MAX 16A Dynamo Hatch gregtech.machine.substation_hatch.output.tooltip=Energy Output for the Power Substation +gregtech.machine.substation_hatch.output_64a.ulv.name=ULV 64A Substation Dynamo Hatch +gregtech.machine.substation_hatch.output_64a.lv.name=LV 64A Substation Dynamo Hatch +gregtech.machine.substation_hatch.output_64a.mv.name=MV 64A Substation Dynamo Hatch +gregtech.machine.substation_hatch.output_64a.hv.name=HV 64A Substation Dynamo Hatch +gregtech.machine.substation_hatch.output_64a.ev.name=EV 64A Substation Dynamo Hatch gregtech.machine.substation_hatch.output_64a.iv.name=IV 64A Substation Dynamo Hatch gregtech.machine.substation_hatch.output_64a.luv.name=LuV 64A Substation Dynamo Hatch gregtech.machine.substation_hatch.output_64a.zpm.name=ZPM 64A Substation Dynamo Hatch @@ -5395,27 +5439,27 @@ gregtech.machine.laser_hatch.source_256a.uxv.name=UXV 256A Laser Source Hatch gregtech.machine.laser_hatch.source_256a.opv.name=OpV 256A Laser Source Hatch gregtech.machine.laser_hatch.source_256a.max.name=MAX 256A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.iv.name=IV 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.luv.name=LuV 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.zpm.name=ZPM 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.uv.name=UV 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.uhv.name=UHV 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.uev.name=UEV 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.uiv.name=UIV 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.uxv.name=UXV 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.opv.name=OpV 1024A Laser Source Hatch -gregtech.machine.laser_hatch.source_1024a.max.name=MAX 1024A Laser Source Hatch - -gregtech.machine.laser_hatch.source_4096a.iv.name=IV 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.luv.name=LuV 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.zpm.name=ZPM 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.uv.name=UV 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.uhv.name=UHV 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.uev.name=UEV 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.uiv.name=UIV 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.uxv.name=UXV 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.opv.name=OpV 4096A Laser Source Hatch -gregtech.machine.laser_hatch.source_4096a.max.name=MAX 4096A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.iv.name=IV 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.luv.name=LuV 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.zpm.name=ZPM 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.uv.name=UV 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.uhv.name=UHV 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.uev.name=UEV 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.uiv.name=UIV 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.uxv.name=UXV 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.opv.name=OpV 1,024A Laser Source Hatch +gregtech.machine.laser_hatch.source_1024a.max.name=MAX 1,024A Laser Source Hatch + +gregtech.machine.laser_hatch.source_4096a.iv.name=IV 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.luv.name=LuV 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.zpm.name=ZPM 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.uv.name=UV 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.uhv.name=UHV 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.uev.name=UEV 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.uiv.name=UIV 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.uxv.name=UXV 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.opv.name=OpV 4,096A Laser Source Hatch +gregtech.machine.laser_hatch.source_4096a.max.name=MAX 4,096A Laser Source Hatch gregtech.machine.laser_hatch.target_256a.iv.name=IV 256A Laser Target Hatch gregtech.machine.laser_hatch.target_256a.luv.name=LuV 256A Laser Target Hatch @@ -5428,27 +5472,27 @@ gregtech.machine.laser_hatch.target_256a.uxv.name=UXV 256A Laser Target Hatch gregtech.machine.laser_hatch.target_256a.opv.name=OpV 256A Laser Target Hatch gregtech.machine.laser_hatch.target_256a.max.name=MAX 256A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.iv.name=IV 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.luv.name=LuV 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.zpm.name=ZPM 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.uv.name=UV 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.uhv.name=UHV 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.uev.name=UEV 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.uiv.name=UIV 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.uxv.name=UXV 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.opv.name=OpV 1024A Laser Target Hatch -gregtech.machine.laser_hatch.target_1024a.max.name=MAX 1024A Laser Target Hatch - -gregtech.machine.laser_hatch.target_4096a.iv.name=IV 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.luv.name=LuV 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.zpm.name=ZPM 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.uv.name=UV 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.uhv.name=UHV 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.uev.name=UEV 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.uiv.name=UIV 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.uxv.name=UXV 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.opv.name=OpV 4096A Laser Target Hatch -gregtech.machine.laser_hatch.target_4096a.max.name=MAX 4096A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.iv.name=IV 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.luv.name=LuV 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.zpm.name=ZPM 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.uv.name=UV 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.uhv.name=UHV 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.uev.name=UEV 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.uiv.name=UIV 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.uxv.name=UXV 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.opv.name=OpV 1,024A Laser Target Hatch +gregtech.machine.laser_hatch.target_1024a.max.name=MAX 1,024A Laser Target Hatch + +gregtech.machine.laser_hatch.target_4096a.iv.name=IV 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.luv.name=LuV 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.zpm.name=ZPM 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.uv.name=UV 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.uhv.name=UHV 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.uev.name=UEV 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.uiv.name=UIV 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.uxv.name=UXV 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.opv.name=OpV 4,096A Laser Target Hatch +gregtech.machine.laser_hatch.target_4096a.max.name=MAX 4,096A Laser Target Hatch gregtech.machine.laser_hatch.source.tooltip1=Transmitting power at distance gregtech.machine.laser_hatch.target.tooltip1=Receiving power from distance