-
Notifications
You must be signed in to change notification settings - Fork 211
Expand file tree
/
Copy pathMetaTileEntities.java
More file actions
469 lines (438 loc) · 31.9 KB
/
Copy pathMetaTileEntities.java
File metadata and controls
469 lines (438 loc) · 31.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
package gregtech.common.metatileentities;
import gregtech.api.GTValues;
import gregtech.api.GregTechAPI;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.metatileentity.SimpleGeneratorMetaTileEntity;
import gregtech.api.metatileentity.SimpleMachineMetaTileEntity;
import gregtech.api.metatileentity.multiblock.IMultiblockAbilityPart;
import gregtech.api.metatileentity.multiblock.MultiblockAbility;
import gregtech.api.metatileentity.multiblock.MultiblockControllerBase;
import gregtech.api.recipes.RecipeMap;
import gregtech.api.util.GTLog;
import gregtech.api.util.GTUtility;
import gregtech.api.util.Mods;
import gregtech.client.renderer.ICubeRenderer;
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.MetaTileEntityTransformer;
import gregtech.common.metatileentities.electric.MetaTileEntityWorldAccelerator;
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.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 gregtech.integration.jei.multiblock.MultiblockInfoCategory;
import net.minecraft.util.ResourceLocation;
import org.jetbrains.annotations.NotNull;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.Function;
public final class MetaTileEntities {
private MetaTileEntities() {}
// spotless:off
// HULLS
public static final MetaTileEntityHull[] HULL = new MetaTileEntityHull[GTValues.V.length];
public static final MetaTileEntityTransformer[] TRANSFORMER = new MetaTileEntityTransformer[GTValues.V.length - 1]; // no MAX
public static final MetaTileEntityTransformer[] HI_AMP_TRANSFORMER = new MetaTileEntityTransformer[GTValues.V.length - 1]; /// no MAX
public static final MetaTileEntityTransformer[] POWER_TRANSFORMER = new MetaTileEntityTransformer[GTValues.V.length - 1]; // no MAX
public static final MetaTileEntityDiode[] DIODES = new MetaTileEntityDiode[GTValues.V.length];
public static final MetaTileEntityBatteryBuffer[][] BATTERY_BUFFER = new MetaTileEntityBatteryBuffer[3][GTValues.V.length];
public static final MetaTileEntityCharger[] CHARGER = new MetaTileEntityCharger[GTValues.V.length];
// SIMPLE MACHINES SECTION
public static final SimpleMachineMetaTileEntity[] ELECTRIC_FURNACE = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] MACERATOR = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] ALLOY_SMELTER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] ARC_FURNACE = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] ASSEMBLER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] AUTOCLAVE = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] BENDER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] BREWERY = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] CANNER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] CENTRIFUGE = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] CHEMICAL_BATH = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] CHEMICAL_REACTOR = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] COMPRESSOR = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] CUTTER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] DISTILLERY = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] ELECTROLYZER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] ELECTROMAGNETIC_SEPARATOR = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] EXTRACTOR = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] EXTRUDER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] FERMENTER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] FLUID_HEATER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] FLUID_SOLIDIFIER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] FORGE_HAMMER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] FORMING_PRESS = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] LATHE = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
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[] 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];
public static final SimpleMachineMetaTileEntity[] THERMAL_CENTRIFUGE = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] WIREMILL = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] CIRCUIT_ASSEMBLER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
// public static final SimpleMachineMetaTileEntity[] MASS_FABRICATOR = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; // TODO Replication
// public static final SimpleMachineMetaTileEntity[] REPLICATOR = new SimpleMachineMetaTileEntity[GTValues.V.length - 1]; // TODO Replication
public static final SimpleMachineMetaTileEntity[] SCANNER = new SimpleMachineMetaTileEntity[GTValues.V.length - 1];
public static final SimpleMachineMetaTileEntity[] GAS_COLLECTOR = new MetaTileEntityGasCollector[GTValues.V.length - 1];
public static final MetaTileEntityRockBreaker[] ROCK_BREAKER = new MetaTileEntityRockBreaker[GTValues.V.length - 1];
public static final MetaTileEntityMiner[] MINER = new MetaTileEntityMiner[GTValues.V.length - 1];
// GENERATORS SECTION
public static final SimpleGeneratorMetaTileEntity[] COMBUSTION_GENERATOR = new SimpleGeneratorMetaTileEntity[4];
public static final SimpleGeneratorMetaTileEntity[] STEAM_TURBINE = new SimpleGeneratorMetaTileEntity[4];
public static final SimpleGeneratorMetaTileEntity[] GAS_TURBINE = new SimpleGeneratorMetaTileEntity[4];
// MULTIBLOCK PARTS SECTION
public static final MetaTileEntityItemBus[] ITEM_IMPORT_BUS = new MetaTileEntityItemBus[GTValues.V.length - 1]; // All tiers but MAX
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[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[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[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;
public static MetaTileEntityQuantumExtender QUANTUM_STORAGE_EXTENDER;
public static final MetaTileEntityQuantumChest[] QUANTUM_CHEST = new MetaTileEntityQuantumChest[10];
public static final MetaTileEntityQuantumTank[] QUANTUM_TANK = new MetaTileEntityQuantumTank[10];
public static final MetaTileEntityBuffer[] BUFFER = new MetaTileEntityBuffer[3];
public static final MetaTileEntityPump[] PUMP = new MetaTileEntityPump[8];
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[GTValues.V.length];
public static MetaTileEntityMachineHatch MACHINE_HATCH;
public static MetaTileEntityPassthroughHatchItem PASSTHROUGH_HATCH_ITEM;
public static MetaTileEntityPassthroughHatchFluid PASSTHROUGH_HATCH_FLUID;
public static MetaTileEntityReservoirHatch RESERVOIR_HATCH;
public static MetaTileEntityDataAccessHatch DATA_ACCESS_HATCH;
public static MetaTileEntityDataAccessHatch ADVANCED_DATA_ACCESS_HATCH;
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[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;
public static MetaTileEntityHPCAEmpty HPCA_EMPTY_COMPONENT;
public static MetaTileEntityHPCAComputation HPCA_COMPUTATION_COMPONENT;
public static MetaTileEntityHPCAComputation HPCA_ADVANCED_COMPUTATION_COMPONENT;
public static MetaTileEntityHPCACooler HPCA_HEAT_SINK_COMPONENT;
public static MetaTileEntityHPCACooler HPCA_ACTIVE_COOLER_COMPONENT;
public static MetaTileEntityHPCABridge HPCA_BRIDGE_COMPONENT;
// Used for addons if they wish to disable certain tiers of machines
private static final Map<String, Boolean> MID_TIER = new HashMap<>();
private static final Map<String, Boolean> HIGH_TIER = new HashMap<>();
// STEAM AGE SECTION
public static SteamCoalBoiler STEAM_BOILER_COAL_BRONZE;
public static SteamCoalBoiler STEAM_BOILER_COAL_STEEL;
public static SteamSolarBoiler STEAM_BOILER_SOLAR_BRONZE;
public static SteamSolarBoiler STEAM_BOILER_SOLAR_STEEL;
public static SteamLavaBoiler STEAM_BOILER_LAVA_BRONZE;
public static SteamLavaBoiler STEAM_BOILER_LAVA_STEEL;
public static SteamExtractor STEAM_EXTRACTOR_BRONZE;
public static SteamExtractor STEAM_EXTRACTOR_STEEL;
public static SteamMacerator STEAM_MACERATOR_BRONZE;
public static SteamMacerator STEAM_MACERATOR_STEEL;
public static SteamCompressor STEAM_COMPRESSOR_BRONZE;
public static SteamCompressor STEAM_COMPRESSOR_STEEL;
public static SteamHammer STEAM_HAMMER_BRONZE;
public static SteamHammer STEAM_HAMMER_STEEL;
public static SteamFurnace STEAM_FURNACE_BRONZE;
public static SteamFurnace STEAM_FURNACE_STEEL;
public static SteamAlloySmelter STEAM_ALLOY_SMELTER_BRONZE;
public static SteamAlloySmelter STEAM_ALLOY_SMELTER_STEEL;
public static SteamRockBreaker STEAM_ROCK_BREAKER_BRONZE;
public static SteamRockBreaker STEAM_ROCK_BREAKER_STEEL;
public static SteamMiner STEAM_MINER;
public static MetaTileEntityPumpHatch PUMP_OUTPUT_HATCH;
public static MetaTileEntityPrimitiveWaterPump PRIMITIVE_WATER_PUMP;
public static MetaTileEntityMagicEnergyAbsorber MAGIC_ENERGY_ABSORBER;
public static MetaTileEntityCokeOvenHatch COKE_OVEN_HATCH;
public static MetaTileEntitySteamItemBus STEAM_EXPORT_BUS;
public static MetaTileEntitySteamItemBus STEAM_IMPORT_BUS;
public static MetaTileEntitySteamHatch STEAM_HATCH;
public static MetaTileEntityMaintenanceHatch MAINTENANCE_HATCH;
public static MetaTileEntityMaintenanceHatch CONFIGURABLE_MAINTENANCE_HATCH;
public static MetaTileEntityAutoMaintenanceHatch AUTO_MAINTENANCE_HATCH;
public static MetaTileEntityCleaningMaintenanceHatch CLEANING_MAINTENANCE_HATCH;
// MULTIBLOCKS SECTION
public static MetaTileEntityPrimitiveBlastFurnace PRIMITIVE_BLAST_FURNACE;
public static MetaTileEntityCokeOven COKE_OVEN;
public static MetaTileEntityElectricBlastFurnace ELECTRIC_BLAST_FURNACE;
public static MetaTileEntityVacuumFreezer VACUUM_FREEZER;
public static MetaTileEntityImplosionCompressor IMPLOSION_COMPRESSOR;
public static MetaTileEntityPyrolyseOven PYROLYSE_OVEN;
public static MetaTileEntityDistillationTower DISTILLATION_TOWER;
public static MetaTileEntityCrackingUnit CRACKER;
public static MetaTileEntityMultiSmelter MULTI_FURNACE;
public static MetaTileEntityLargeCombustionEngine LARGE_COMBUSTION_ENGINE;
public static MetaTileEntityLargeCombustionEngine EXTREME_COMBUSTION_ENGINE;
public static MetaTileEntityLargeTurbine LARGE_STEAM_TURBINE;
public static MetaTileEntityLargeTurbine LARGE_GAS_TURBINE;
public static MetaTileEntityLargeTurbine LARGE_PLASMA_TURBINE;
public static MetaTileEntityLargeBoiler LARGE_BRONZE_BOILER;
public static MetaTileEntityLargeBoiler LARGE_STEEL_BOILER;
public static MetaTileEntityLargeBoiler LARGE_TITANIUM_BOILER;
public static MetaTileEntityLargeBoiler LARGE_TUNGSTENSTEEL_BOILER;
public static MetaTileEntityAssemblyLine ASSEMBLY_LINE;
public static MetaTileEntityLargeChemicalReactor LARGE_CHEMICAL_REACTOR;
public static MetaTileEntitySteamOven STEAM_OVEN;
public static MetaTileEntitySteamGrinder STEAM_GRINDER;
public static MetaTileEntityLargeMiner BASIC_LARGE_MINER;
public static MetaTileEntityLargeMiner LARGE_MINER;
public static MetaTileEntityLargeMiner ADVANCED_LARGE_MINER;
public static MetaTileEntityProcessingArray PROCESSING_ARRAY;
public static MetaTileEntityProcessingArray ADVANCED_PROCESSING_ARRAY;
public static MetaTileEntityFluidDrill BASIC_FLUID_DRILLING_RIG;
public static MetaTileEntityFluidDrill FLUID_DRILLING_RIG;
public static MetaTileEntityFluidDrill ADVANCED_FLUID_DRILLING_RIG;
public static MetaTileEntityCleanroom CLEANROOM;
public static MetaTileEntityCharcoalPileIgniter CHARCOAL_PILE_IGNITER;
public static MetaTileEntityDataBank DATA_BANK;
public static MetaTileEntityResearchStation RESEARCH_STATION;
public static MetaTileEntityHPCA HIGH_PERFORMANCE_COMPUTING_ARRAY;
public static MetaTileEntityNetworkSwitch NETWORK_SWITCH;
public static MetaTileEntityPowerSubstation POWER_SUBSTATION;
public static MetaTileEntityActiveTransformer ACTIVE_TRANSFORMER;
// STORAGE SECTION
public static MetaTileEntityTankValve WOODEN_TANK_VALVE;
public static MetaTileEntityTankValve STEEL_TANK_VALVE;
public static MetaTileEntityMultiblockTank WOODEN_TANK;
public static MetaTileEntityMultiblockTank STEEL_TANK;
public static MetaTileEntityDrum WOODEN_DRUM;
public static MetaTileEntityDrum BRONZE_DRUM;
public static MetaTileEntityDrum ALUMINIUM_DRUM;
public static MetaTileEntityDrum STEEL_DRUM;
public static MetaTileEntityDrum STAINLESS_STEEL_DRUM;
public static MetaTileEntityDrum TITANIUM_DRUM;
public static MetaTileEntityDrum TUNGSTENSTEEL_DRUM;
public static MetaTileEntityDrum GOLD_DRUM;
public static MetaTileEntityCrate WOODEN_CRATE;
public static MetaTileEntityCrate BRONZE_CRATE;
public static MetaTileEntityCrate ALUMINIUM_CRATE;
public static MetaTileEntityCrate STEEL_CRATE;
public static MetaTileEntityCrate STAINLESS_STEEL_CRATE;
public static MetaTileEntityCrate TITANIUM_CRATE;
public static MetaTileEntityCrate TUNGSTENSTEEL_CRATE;
// MISC MACHINES SECTION
public static MetaTileEntityWorkbench WORKBENCH;
public static MetaTileEntityCreativeEnergy CREATIVE_ENERGY;
public static MetaTileEntityCreativeTank CREATIVE_TANK;
public static MetaTileEntityCreativeChest CREATIVE_CHEST;
public static MetaTileEntityClipboard CLIPBOARD_TILE;
public static MetaTileEntityMonitorScreen MONITOR_SCREEN;
public static MetaTileEntityCentralMonitor CENTRAL_MONITOR;
public static MetaTileEntity FLUID_EXPORT_HATCH_ME;
public static MetaTileEntity ITEM_EXPORT_BUS_ME;
public static MetaTileEntity FLUID_IMPORT_HATCH_ME;
public static MetaTileEntity ITEM_IMPORT_BUS_ME;
public static MetaTileEntity STOCKING_BUS_ME;
public static MetaTileEntity STOCKING_HATCH_ME;
public static MetaTileEntityLDItemEndpoint LONG_DIST_ITEM_ENDPOINT;
public static MetaTileEntityLDFluidEndpoint LONG_DIST_FLUID_ENDPOINT;
public static MetaTileEntityAlarm ALARM;
public static MetaTileEntityConverter[][] ENERGY_CONVERTER = new MetaTileEntityConverter[4][GTValues.V.length];
//spotless:on
public static void init() {
GTLog.logger.info("Starting MetaTileEntity registration...");
MetaTileEntityRegistration.register();
GTLog.logger.info("Completed MetaTileEntity registration.");
}
static void registerSimpleMetaTileEntity(SimpleMachineMetaTileEntity[] machines,
int startId,
String name,
RecipeMap<?> map,
ICubeRenderer texture,
boolean hasFrontFacing,
Function<Integer, Integer> tankScalingFunction) {
registerSimpleMetaTileEntity(machines, startId, name, map, texture, hasFrontFacing, GTUtility::gregtechId,
tankScalingFunction);
}
static void registerSimpleMetaTileEntity(SimpleMachineMetaTileEntity[] machines,
int startId,
String name,
RecipeMap<?> map,
ICubeRenderer texture,
boolean hasFrontFacing) {
registerSimpleMetaTileEntity(machines, startId, name, map, texture, hasFrontFacing,
GTUtility.defaultTankSizeFunction);
}
public static void registerSimpleMetaTileEntity(SimpleMachineMetaTileEntity[] machines,
int startId,
String name,
RecipeMap<?> map,
ICubeRenderer texture,
boolean hasFrontFacing,
Function<String, ResourceLocation> resourceId,
Function<Integer, Integer> tankScalingFunction) {
registerMetaTileEntities(machines, startId, name,
(tier, voltageName) -> new SimpleMachineMetaTileEntity(
resourceId.apply(String.format("%s.%s", name, voltageName)), map, texture, tier, hasFrontFacing,
tankScalingFunction));
}
/**
* @param mteCreator Takes tier and voltage name for the machine, and outputs MTE to register
*/
public static void registerMetaTileEntities(
MetaTileEntity[] machines,
int startId,
String name,
BiFunction<Integer, String, MetaTileEntity> mteCreator) {
for (int i = 0; i < machines.length - 1; i++) {
if (i > 4 && !getMidTier(name)) continue;
if (i > 7 && !getHighTier(name)) break;
String voltageName = GTValues.VN[i + 1].toLowerCase();
machines[i + 1] = registerMetaTileEntity(startId + i, mteCreator.apply(i + 1, voltageName));
}
}
/**
* Register a MetaTileEntity
*
* @param id the numeric ID to use as item metadata
* @param mte the MTE to register
* @return the MTE
* @param <T> the MTE class
*/
public static <T extends MetaTileEntity> @NotNull T registerMetaTileEntity(int id, @NotNull T mte) {
if (mte instanceof IMultiblockAbilityPart<?>abilityPart) {
for (var ability : abilityPart.getAbilities())
MultiblockAbility.registerMultiblockAbility(ability, mte);
}
if (Mods.JustEnoughItems.isModLoaded() && mte instanceof MultiblockControllerBase controller &&
controller.shouldShowInJei()) {
MultiblockInfoCategory.registerMultiblock(controller);
}
mte.getRegistry().register(id, mte.metaTileEntityId, mte);
return mte;
}
@SuppressWarnings("unused")
public static void setMidTier(String key, boolean enabled) {
MID_TIER.put(key, enabled);
}
@SuppressWarnings("unused")
public static void setHighTier(String key, boolean enabled) {
HIGH_TIER.put(key, enabled);
if (!GregTechAPI.isHighTier()) {
throw new IllegalArgumentException(
"Cannot set High-Tier machine without high tier being enabled in GregTechAPI.");
}
}
public static boolean getMidTier(String key) {
return MID_TIER.getOrDefault(key, true);
}
public static boolean getHighTier(String key) {
return HIGH_TIER.getOrDefault(key, GregTechAPI.isHighTier());
}
}