diff options
Diffstat (limited to 'src/main/java/gregtech')
21 files changed, 3271 insertions, 10 deletions
diff --git a/src/main/java/gregtech/api/enums/GT_Values.java b/src/main/java/gregtech/api/enums/GT_Values.java index ec4a6ce5c7..88972e45fc 100644 --- a/src/main/java/gregtech/api/enums/GT_Values.java +++ b/src/main/java/gregtech/api/enums/GT_Values.java @@ -651,6 +651,7 @@ public class GT_Values { + EnumChatFormatting.WHITE + EnumChatFormatting.ITALIC + "Number"; + public static final String Ollie = "" + EnumChatFormatting.GREEN + EnumChatFormatting.BOLD + "Ollie"; public static final String authorBaps = "Author: " + EnumChatFormatting.GOLD + "Ba" + EnumChatFormatting.LIGHT_PURPLE diff --git a/src/main/java/gregtech/api/enums/ItemList.java b/src/main/java/gregtech/api/enums/ItemList.java index bf9fa4ec90..766525c958 100644 --- a/src/main/java/gregtech/api/enums/ItemList.java +++ b/src/main/java/gregtech/api/enums/ItemList.java @@ -1091,6 +1091,8 @@ public enum ItemList implements IItemContainer { Hatch_DataAccess_LuV, Hatch_DataAccess_UV, + Hatch_HeatSensor, + Battery_Buffer_1by1_ULV, Battery_Buffer_1by1_LV, Battery_Buffer_1by1_MV, @@ -1474,6 +1476,24 @@ public enum ItemList implements IItemContainer { Electromagnet_Tengam, Machine_Multi_Canner, + + Machine_Multi_IndustrialCompressor, + Machine_Multi_HIPCompressor, + Machine_Multi_NeutroniumCompressor, + Machine_Multi_BlackHoleCompressor, + Compressor_Casing, + Compressor_Pipe_Casing, + Heating_Duct_Casing, + Coolant_Duct_Casing, + Neutronium_Casing, + Neutronium_Active_Casing, + Neutronium_Stable_Casing, + Background_Radiation_Casing, + Extreme_Density_Casing, + Hawking_Glass, + Black_Hole_Opener, + Black_Hole_Closer, + Machine_Multi_IndustrialLaserEngraver, Laser_Plate, Casing_Laser, diff --git a/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java b/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java index d55d1bbcf9..7793a2f6b2 100644 --- a/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java +++ b/src/main/java/gregtech/api/enums/MetaTileEntityIDs.java @@ -626,7 +626,12 @@ public enum MetaTileEntityIDs { INPUT_HATCH_ME(2717), INPUT_BUS_ME(2718), INDUSTRIAL_LASER_ENGRAVER_CONTROLLER(3004), - INDUSTRIAL_EXTRACTOR_CONTROLLER(3005), + INDUSTRIAL_COMPRESSOR_CONTROLLER(3005), + HIP_COMPRESSOR_CONTROLLER(3006), + NEUTRONIUM_COMPRESSOR_CONTROLLER(3007), + BLACKHOLE_COMPRESSOR_CONTROLLER(3008), + HEAT_DETECTOR_HATCH(3009), + INDUSTRIAL_EXTRACTOR_CONTROLLER(3010), DraconicEvolutionFusionCrafterController(5001), CHEST_BUFFER_ULV(9230), CHEST_BUFFER_LV(9231), diff --git a/src/main/java/gregtech/api/enums/Textures.java b/src/main/java/gregtech/api/enums/Textures.java index d00c5dccb9..4a5142138a 100644 --- a/src/main/java/gregtech/api/enums/Textures.java +++ b/src/main/java/gregtech/api/enums/Textures.java @@ -336,6 +336,13 @@ public class Textures { OVERLAY_FRONT_MULTI_CANNER_ACTIVE_GLOW, OVERLAY_FRONT_MULTI_CANNER_GLOW, + OVERLAY_FRONT_MULTI_COMPRESSOR, + OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE, + OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW, + OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW, + OVERLAY_FRONT_MULTI_COMPRESSOR_COOLING, + OVERLAY_FRONT_MULTI_COMPRESSOR_COOLING_GLOW, + OVERLAY_FRONT_INDUSTRIAL_EXTRACTOR, OVERLAY_FRONT_INDUSTRIAL_EXTRACTOR_ACTIVE, OVERLAY_FRONT_INDUSTRIAL_EXTRACTOR_ACTIVE_GLOW, @@ -347,6 +354,7 @@ public class Textures { OVERLAY_FRONT_ENGRAVER_ACTIVE, OVERLAY_FRONT_ENGRAVER_ACTIVE_GLOW, OVERLAY_FRONT_ENGRAVER_GLOW, + OVERLAY_FRONT_MULTI_LATHE, OVERLAY_FRONT_MULTI_LATHE_ACTIVE, OVERLAY_FRONT_MULTI_LATHE_ACTIVE_GLOW, @@ -1330,6 +1338,9 @@ public class Textures { OVERLAY_HATCH_PH_SENSOR, OVERLAY_HATCH_PH_SENSOR_GLOW, + OVERLAY_HATCH_BLACKHOLE, + OVERLAY_HATCH_BLACKHOLE_GLOW, + STRUCTURE_MARK, MV_TOP_CYCLOTRON_SOLENOID, @@ -1409,7 +1420,15 @@ public class Textures { GLASS_QUARK_CONTAINMENT, BLOCK_QUARK_PIPE, BLOCK_QUARK_RELEASE_CHAMBER, - BLOCK_QUARK_CONTAINMENT_CASING,; + BLOCK_QUARK_CONTAINMENT_CASING, + COMPRESSOR_CASING, + COMPRESSOR_PIPE_CASING, + NEUTRONIUM_CASING, + NEUTRONIUM_ACTIVE_CASING, + NEUTRONIUM_STABLE_CASING, + EXTREME_DENSITY_CASING, + RADIATION_ABSORBENT_CASING, + HAWKING_GLASS; /** * Icon for Fresh CFoam diff --git a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java index 526ba1aa18..6031399c06 100644 --- a/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java +++ b/src/main/java/gregtech/api/gui/modularui/GT_UITextures.java @@ -441,6 +441,10 @@ public class GT_UITextures { .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_slicing"); public static final UITexture OVERLAY_BUTTON_MACHINEMODE_CUTTING = UITexture .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_cutting"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_COMPRESSING = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_compressing"); + public static final UITexture OVERLAY_BUTTON_MACHINEMODE_SINGULARITY = UITexture + .fullImage(GregTech.ID, "gui/overlay_button/machine_mode_singularity"); /** * Can adjust size as needed. diff --git a/src/main/java/gregtech/api/recipe/RecipeMaps.java b/src/main/java/gregtech/api/recipe/RecipeMaps.java index 82dd60441a..293b4f36b5 100644 --- a/src/main/java/gregtech/api/recipe/RecipeMaps.java +++ b/src/main/java/gregtech/api/recipe/RecipeMaps.java @@ -1,8 +1,10 @@ package gregtech.api.recipe; +import static gregtech.api.enums.Mods.Avaritia; import static gregtech.api.enums.Mods.GTNHIntergalactic; import static gregtech.api.enums.Mods.NEICustomDiagrams; import static gregtech.api.enums.Mods.Railcraft; +import static gregtech.api.util.GT_ModHandler.getModItem; import static gregtech.api.util.GT_RecipeConstants.ADDITIVE_AMOUNT; import static gregtech.api.util.GT_RecipeConstants.FUEL_VALUE; import static gregtech.api.util.GT_RecipeMapUtil.GT_RecipeTemplate; @@ -63,6 +65,7 @@ import gregtech.api.recipe.maps.ReplicatorBackend; import gregtech.api.recipe.maps.SpaceProjectFrontend; import gregtech.api.recipe.maps.TranscendentPlasmaMixerFrontend; import gregtech.api.recipe.maps.UnpackagerBackend; +import gregtech.api.recipe.metadata.CompressionTierKey; import gregtech.api.recipe.metadata.PCBFactoryTierKey; import gregtech.api.recipe.metadata.PurificationPlantBaseChanceKey; import gregtech.api.util.GT_ModHandler; @@ -125,9 +128,27 @@ public final class RecipeMaps { (index, isFluid, isOutput, isSpecial) -> !isFluid && !isOutput ? GT_UITextures.OVERLAY_SLOT_COMPRESSOR_STEAM : null) .progressBarSteam(GT_UITextures.PROGRESSBAR_COMPRESS_STEAM) + .neiRecipeComparator( + Comparator + .<GT_Recipe, Integer>comparing(recipe -> recipe.getMetadataOrDefault(CompressionTierKey.INSTANCE, 0)) + .thenComparing(GT_Recipe::compareTo)) // Avoid steam machine being used as handler icon .neiHandlerInfo(builder -> builder.setDisplayStack(ItemList.Machine_LV_Compressor.get(1))) .build(); + public static final RecipeMap<RecipeMapBackend> neutroniumCompressorRecipes = RecipeMapBuilder + .of("gt.recipe.neutroniumcompressor") + .maxIO(1, 1, 1, 0) + .slotOverlays( + (index, isFluid, isOutput, isSpecial) -> !isFluid && !isOutput ? GT_UITextures.OVERLAY_SLOT_COMPRESSOR + : null) + .progressBar(GT_UITextures.PROGRESSBAR_COMPRESS) + .neiHandlerInfo(builder -> builder.setDisplayStack(getModItem(Avaritia.ID, "Singularity", 1L, 0))) + .disableOptimize() + .neiRecipeComparator( + Comparator + .<GT_Recipe, Integer>comparing(recipe -> recipe.getMetadataOrDefault(CompressionTierKey.INSTANCE, 0)) + .thenComparing(GT_Recipe::compareTo)) + .build(); public static final RecipeMap<RecipeMapBackend> extractorRecipes = RecipeMapBuilder.of("gt.recipe.extractor") .maxIO(1, 1, 0, 0) .minInputs(1, 0) diff --git a/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java b/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java index 5844a49180..dc7fc0d6a6 100644 --- a/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java +++ b/src/main/java/gregtech/api/recipe/check/CheckRecipeResultRegistry.java @@ -109,6 +109,16 @@ public final class CheckRecipeResultRegistry { public static final CheckRecipeResult BACKFILLER_NO_CONCRETE = SimpleCheckRecipeResult .ofFailure("backfiller_no_concrete"); + /** + * Black Hole Compressor does not have an active black hole + */ + public static final CheckRecipeResult NO_BLACK_HOLE = SimpleCheckRecipeResult.ofFailure("no_black_hole"); + /** + * Black Hole Compressor became unstable + */ + public static final CheckRecipeResult UNSTABLE_BLACK_HOLE = SimpleCheckRecipeResult + .ofFailure("unstable_black_hole"); + public static final CheckRecipeResult NO_SEE_SKY = SimpleCheckRecipeResult.ofFailure("no_see_sky"); /** diff --git a/src/main/java/gregtech/api/recipe/metadata/CompressionTierKey.java b/src/main/java/gregtech/api/recipe/metadata/CompressionTierKey.java new file mode 100644 index 0000000000..384b5ce2d9 --- /dev/null +++ b/src/main/java/gregtech/api/recipe/metadata/CompressionTierKey.java @@ -0,0 +1,33 @@ +package gregtech.api.recipe.metadata; + +import static gregtech.api.util.GT_Utility.trans; + +import javax.annotation.Nullable; +import javax.annotation.ParametersAreNonnullByDefault; + +import gregtech.api.recipe.RecipeMetadataKey; +import gregtech.api.util.MethodsReturnNonnullByDefault; +import gregtech.nei.RecipeDisplayInfo; + +/** + * Tier of advanced compression required + */ +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +public class CompressionTierKey extends RecipeMetadataKey<Integer> { + + public static final CompressionTierKey INSTANCE = new CompressionTierKey(); + + private CompressionTierKey() { + super(Integer.class, "compression_tier"); + } + + @Override + public void drawInfo(RecipeDisplayInfo recipeInfo, @Nullable Object value) { + int tier = cast(value, 1); + switch (tier) { + case 1 -> recipeInfo.drawText(trans("509", "Requires HIP Unit")); + case 2 -> recipeInfo.drawText(trans("508", "Requires Stabilized Black Hole")); + } + } +} diff --git a/src/main/java/gregtech/api/util/GT_LanguageManager.java b/src/main/java/gregtech/api/util/GT_LanguageManager.java index e153b8e15f..4a9dc878ed 100644 --- a/src/main/java/gregtech/api/util/GT_LanguageManager.java +++ b/src/main/java/gregtech/api/util/GT_LanguageManager.java @@ -549,6 +549,8 @@ public class GT_LanguageManager { addStringLocalization("Interaction_DESCRIPTION_Index_505", "Enable with Signal (Safe)"); addStringLocalization("Interaction_DESCRIPTION_Index_506", "Disable with Signal (Safe)"); addStringLocalization("Interaction_DESCRIPTION_Index_507", "Safe Mode"); + addStringLocalization("Interaction_DESCRIPTION_Index_508", "Needs Stabilized Black Hole"); + addStringLocalization("Interaction_DESCRIPTION_Index_509", "Requires HIP Unit"); addStringLocalization("Interaction_DESCRIPTION_Index_602", "Use Private Frequency"); addStringLocalization("Interaction_DESCRIPTION_Index_756", "Connectable: "); addStringLocalization("Interaction_DESCRIPTION_Index_ALL", "All"); diff --git a/src/main/java/gregtech/api/util/GT_RecipeConstants.java b/src/main/java/gregtech/api/util/GT_RecipeConstants.java index a8cdb19b7a..c8a002c6c2 100644 --- a/src/main/java/gregtech/api/util/GT_RecipeConstants.java +++ b/src/main/java/gregtech/api/util/GT_RecipeConstants.java @@ -144,6 +144,12 @@ public class GT_RecipeConstants { .create(Integer.class, "qft_focus_tier"); /** + * Tier of advanced compression (HIP/black hole) + */ + public static final RecipeMetadataKey<Integer> COMPRESSION_TIER = SimpleRecipeMetadataKey + .create(Integer.class, "compression"); + + /** * Dissolution Tank Ratio. */ public static final RecipeMetadataKey<Integer> DISSOLUTION_TANK_RATIO = SimpleRecipeMetadataKey @@ -677,6 +683,7 @@ public class GT_RecipeConstants { GT_RecipeMapUtil.SPECIAL_VALUE_ALIASES.add(NKE_RANGE); GT_RecipeMapUtil.SPECIAL_VALUE_ALIASES.add(PRECISE_ASSEMBLER_CASING_TIER); GT_RecipeMapUtil.SPECIAL_VALUE_ALIASES.add(COAL_CASING_TIER); + GT_RecipeMapUtil.SPECIAL_VALUE_ALIASES.add(COMPRESSION_TIER); GT_RecipeMapUtil.SPECIAL_VALUE_ALIASES.add(RESEARCH_STATION_DATA); GT_RecipeMapUtil.SPECIAL_VALUE_ALIASES.add(SIEVERTS); GT_RecipeMapUtil.SPECIAL_VALUE_ALIASES.add(DECAY_TICKS); diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings10.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings10.java index 9c9db0a7e9..1a0902da97 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Casings10.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings10.java @@ -19,14 +19,33 @@ public class GT_Block_Casings10 extends GT_Block_Casings_Abstract { super(GT_Item_Casings10.class, "gt.blockcasings10", GT_Material_Casings.INSTANCE, 16); GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "MagTech Casing"); GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".1.name", "Laser Containment Casing"); - GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Quark Exclusion Casing"); GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".3.name", "Pressure Containment Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".4.name", "Electric Compressor Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".5.name", "Compression Pipe Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".6.name", "Neutronium Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".7.name", "Active Neutronium Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".8.name", "Neutronium Stabilization Casing"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".9.name", "Coolant Duct"); + GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".10.name", "Heating Duct"); + GT_LanguageManager + .addStringLocalization(getUnlocalizedName() + ".11.name", "Extreme Density Space-Bending Casing"); + GT_LanguageManager + .addStringLocalization(getUnlocalizedName() + ".12.name", "Background Radiation Absorbent Casing"); ItemList.Casing_Electromagnetic_Separator.set(new ItemStack(this, 1, 0)); - ItemList.BlockQuarkContainmentCasing.set(new ItemStack(this, 1, 2)); ItemList.Casing_Laser.set(new ItemStack(this, 1, 1)); + ItemList.BlockQuarkContainmentCasing.set(new ItemStack(this, 1, 2)); ItemList.Casing_Autoclave.set(new ItemStack(this, 1, 3)); + ItemList.Compressor_Casing.set(new ItemStack(this, 1, 4)); + ItemList.Compressor_Pipe_Casing.set(new ItemStack(this, 1, 5)); + ItemList.Neutronium_Casing.set(new ItemStack(this, 1, 6)); + ItemList.Neutronium_Active_Casing.set(new ItemStack(this, 1, 7)); + ItemList.Neutronium_Stable_Casing.set(new ItemStack(this, 1, 8)); + ItemList.Coolant_Duct_Casing.set(new ItemStack(this, 1, 9)); + ItemList.Heating_Duct_Casing.set(new ItemStack(this, 1, 10)); + ItemList.Extreme_Density_Casing.set(new ItemStack(this, 1, 11)); + ItemList.Background_Radiation_Casing.set(new ItemStack(this, 1, 12)); } @Override @@ -42,6 +61,15 @@ public class GT_Block_Casings10 extends GT_Block_Casings_Abstract { case 1 -> Textures.BlockIcons.MACHINE_CASING_LASER.getIcon(); case 2 -> Textures.BlockIcons.BLOCK_QUARK_CONTAINMENT_CASING.getIcon(); case 3 -> Textures.BlockIcons.MACHINE_CASING_AUTOCLAVE.getIcon(); + case 4 -> Textures.BlockIcons.COMPRESSOR_CASING.getIcon(); + case 5 -> Textures.BlockIcons.COMPRESSOR_PIPE_CASING.getIcon(); + case 6 -> Textures.BlockIcons.NEUTRONIUM_CASING.getIcon(); + case 7 -> Textures.BlockIcons.NEUTRONIUM_ACTIVE_CASING.getIcon(); + case 8 -> Textures.BlockIcons.NEUTRONIUM_STABLE_CASING.getIcon(); + case 9 -> Textures.BlockIcons.MACHINE_CASING_PIPE_TUNGSTENSTEEL.getIcon(); + case 10 -> Textures.BlockIcons.MACHINE_CASING_PIPE_BRONZE.getIcon(); + case 11 -> Textures.BlockIcons.EXTREME_DENSITY_CASING.getIcon(); + case 12 -> Textures.BlockIcons.RADIATION_ABSORBENT_CASING.getIcon(); default -> Textures.BlockIcons.MACHINE_CASING_ROBUST_TUNGSTENSTEEL.getIcon(); }; } diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Glass1.java b/src/main/java/gregtech/common/blocks/GT_Block_Glass1.java index 0665411259..2aa5613d11 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Glass1.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Glass1.java @@ -26,20 +26,20 @@ public class GT_Block_Glass1 extends GT_Block_Casings_Abstract { this.opaque = false; GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".0.name", "Chemical Grade Glass"); - GT_LanguageManager.addStringLocalization( - getUnlocalizedName() + ".0.tooltip", - "Able to resist the most extreme chemical conditions."); - GT_LanguageManager .addStringLocalization(getUnlocalizedName() + ".1.name", "Electron-Permeable Neutronium Coated Glass"); GT_LanguageManager.addStringLocalization(getUnlocalizedName() + ".2.name", "Omni-Purpose Infinity Fused Glass"); GT_LanguageManager .addStringLocalization(getUnlocalizedName() + ".3.name", "Non-Photonic Matter Exclusion Glass"); + GT_LanguageManager + .addStringLocalization(getUnlocalizedName() + ".4.name", "Hawking Radiation Realignment Focus"); ItemList.GlassPHResistant.set(new ItemStack(this, 1, 0)); ItemList.GlassUVResistant.set(new ItemStack(this, 1, 1)); ItemList.GlassOmniPurposeInfinityFused.set(new ItemStack(this, 1, 2)); ItemList.GlassQuarkContainment.set(new ItemStack(this, 1, 3)); + ItemList.GlassQuarkContainment.set(new ItemStack(this, 1, 3)); + ItemList.Hawking_Glass.set(new ItemStack(this, 1, 4)); } @Override @@ -77,6 +77,7 @@ public class GT_Block_Glass1 extends GT_Block_Casings_Abstract { case 1 -> Textures.BlockIcons.NEUTRONIUM_COATED_UV_RESISTANT_GLASS.getIcon(); case 2 -> Textures.BlockIcons.OMNI_PURPOSE_INFINITY_FUSED_GLASS.getIcon(); case 3 -> Textures.BlockIcons.GLASS_QUARK_CONTAINMENT.getIcon(); + case 4 -> Textures.BlockIcons.HAWKING_GLASS.getIcon(); default -> Textures.BlockIcons.MACHINE_CASING_ROBUST_TUNGSTENSTEEL.getIcon(); }; } diff --git a/src/main/java/gregtech/common/blocks/GT_Item_Glass1.java b/src/main/java/gregtech/common/blocks/GT_Item_Glass1.java index 7fbb33ff6e..e8d0b6c236 100644 --- a/src/main/java/gregtech/common/blocks/GT_Item_Glass1.java +++ b/src/main/java/gregtech/common/blocks/GT_Item_Glass1.java @@ -1,6 +1,12 @@ package gregtech.common.blocks; +import java.util.List; + import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +import gregtech.api.util.GT_LanguageManager; /** * The glass types are split into separate files because they are registered as regular blocks, and a regular block can @@ -9,7 +15,22 @@ import net.minecraft.block.Block; */ public class GT_Item_Glass1 extends GT_Item_Casings_Abstract { + protected final String chemicalGlassTooltip = GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".0.tooltip", + "Able to resist the most extreme chemical conditions."); + protected final String hawkingGlassTooltip = GT_LanguageManager.addStringLocalization( + getUnlocalizedName() + ".4.tooltip", + "Controls the outward flow of Hawking Radiation to stabilize a black hole."); + public GT_Item_Glass1(Block block) { super(block); } + + @Override + public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List<String> aList, boolean aF3_H) { + switch (getDamage(aStack)) { + case 0 -> aList.add(chemicalGlassTooltip); + case 4 -> aList.add(hawkingGlassTooltip); + } + } } diff --git a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java index 17d0c13f03..f7463ae576 100644 --- a/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java +++ b/src/main/java/gregtech/common/items/GT_MetaGenerated_Item_01.java @@ -48,7 +48,410 @@ import static gregtech.client.GT_TooltipHandler.Tier.UV; import static gregtech.client.GT_TooltipHandler.Tier.UXV; import static gregtech.client.GT_TooltipHandler.Tier.ZPM; import static gregtech.client.GT_TooltipHandler.registerTieredTooltip; -import static gregtech.common.items.ID_MetaItem_01.*; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_EV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_EV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_IV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_IV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_LuV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_LuV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UEV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UEV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UHV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UHV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UIV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UIV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UMV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UMV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UxV; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_UxV_Full; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_ZPM; +import static gregtech.common.items.ID_MetaItem_01.BatteryHull_ZPM_Full; +import static gregtech.common.items.ID_MetaItem_01.Battery_Hull_HV; +import static gregtech.common.items.ID_MetaItem_01.Battery_Hull_LV; +import static gregtech.common.items.ID_MetaItem_01.Battery_Hull_MV; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_HV_Cadmium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_HV_Lithium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_HV_Sodium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_LV_Cadmium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_LV_Lithium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_LV_Sodium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_MV_Cadmium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_MV_Lithium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_MV_Sodium; +import static gregtech.common.items.ID_MetaItem_01.Battery_RE_ULV_Tantalum; +import static gregtech.common.items.ID_MetaItem_01.Battery_SU_HV_Mercury; +import static gregtech.common.items.ID_MetaItem_01.Battery_SU_HV_Sulfuric_Acid; +import static gregtech.common.items.ID_MetaItem_01.Battery_SU_LV_Mercury; +import static gregtech.common.items.ID_MetaItem_01.Battery_SU_LV_Sulfuric_Acid; +import static gregtech.common.items.ID_MetaItem_01.Battery_SU_MV_Mercury; +import static gregtech.common.items.ID_MetaItem_01.Battery_SU_MV_Sulfuric_Acid; +import static gregtech.common.items.ID_MetaItem_01.Black_Hole_Closer; +import static gregtech.common.items.ID_MetaItem_01.Black_Hole_Opener; +import static gregtech.common.items.ID_MetaItem_01.Book_Written_01; +import static gregtech.common.items.ID_MetaItem_01.Book_Written_02; +import static gregtech.common.items.ID_MetaItem_01.Book_Written_03; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Advanced; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Basic; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Board_Advanced; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Board_Basic; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Board_Elite; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Data; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Elite; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Good; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Master; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Parts_Advanced; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Parts_Crystal_Chip_Elite; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Parts_Crystal_Chip_Master; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Parts_Crystal_Chip_Wetware; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Parts_Wiring_Advanced; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Parts_Wiring_Basic; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Parts_Wiring_Elite; +import static gregtech.common.items.ID_MetaItem_01.Circuit_Primitive; +import static gregtech.common.items.ID_MetaItem_01.Component_Filter; +import static gregtech.common.items.ID_MetaItem_01.Component_Grinder_Diamond; +import static gregtech.common.items.ID_MetaItem_01.Component_Grinder_Tungsten; +import static gregtech.common.items.ID_MetaItem_01.Component_Minecraft_Wheels_Iron; +import static gregtech.common.items.ID_MetaItem_01.Component_Minecraft_Wheels_Steel; +import static gregtech.common.items.ID_MetaItem_01.Component_Sawblade_Diamond; +import static gregtech.common.items.ID_MetaItem_01.Compressed_Fireclay; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_EV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_HV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_IV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_LV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_LuV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_MAX; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_MV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_UEV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_UHV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_UIV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_UMV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_UV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_UXV; +import static gregtech.common.items.ID_MetaItem_01.Conveyor_Module_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Cover_ActivityDetector; +import static gregtech.common.items.ID_MetaItem_01.Cover_Chest_Advanced; +import static gregtech.common.items.ID_MetaItem_01.Cover_Chest_Basic; +import static gregtech.common.items.ID_MetaItem_01.Cover_Chest_Good; +import static gregtech.common.items.ID_MetaItem_01.Cover_Controller; +import static gregtech.common.items.ID_MetaItem_01.Cover_Crafting; +import static gregtech.common.items.ID_MetaItem_01.Cover_Drain; +import static gregtech.common.items.ID_MetaItem_01.Cover_EnergyDetector; +import static gregtech.common.items.ID_MetaItem_01.Cover_FLuidStorageMonitor; +import static gregtech.common.items.ID_MetaItem_01.Cover_FluidDetector; +import static gregtech.common.items.ID_MetaItem_01.Cover_FluidLimiter; +import static gregtech.common.items.ID_MetaItem_01.Cover_ItemDetector; +import static gregtech.common.items.ID_MetaItem_01.Cover_NeedsMaintenance; +import static gregtech.common.items.ID_MetaItem_01.Cover_PlayerDetector; +import static gregtech.common.items.ID_MetaItem_01.Cover_RedstoneReceiverExternal; +import static gregtech.common.items.ID_MetaItem_01.Cover_RedstoneReceiverInternal; +import static gregtech.common.items.ID_MetaItem_01.Cover_RedstoneTransmitterExternal; +import static gregtech.common.items.ID_MetaItem_01.Cover_RedstoneTransmitterInternal; +import static gregtech.common.items.ID_MetaItem_01.Cover_Screen; +import static gregtech.common.items.ID_MetaItem_01.Cover_Shutter; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_8V; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_EV; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_HV; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_IV; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_LV; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_LuV; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_MV; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_UV; +import static gregtech.common.items.ID_MetaItem_01.Cover_SolarPanel_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Crate_Empty; +import static gregtech.common.items.ID_MetaItem_01.Duct_Tape; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_EV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_HV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_IV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_LV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_LuV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_MAX; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_MV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_UEV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_UHV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_UIV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_UMV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_UV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_UXV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Motor_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_EV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_HV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_IV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_LV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_LuV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_MAX; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_MV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_UEV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_UHV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_UIV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_UMV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_UV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_UXV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Piston_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_EV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_HV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_IV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_LV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_LuV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_MAX; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_MV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_UEV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_UHV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_UIV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_UMV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_UV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_UXV; +import static gregtech.common.items.ID_MetaItem_01.Electric_Pump_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Electromagnet_Iron; +import static gregtech.common.items.ID_MetaItem_01.Electromagnet_Neodymium; +import static gregtech.common.items.ID_MetaItem_01.Electromagnet_Samarium; +import static gregtech.common.items.ID_MetaItem_01.Electromagnet_Steel; +import static gregtech.common.items.ID_MetaItem_01.Electromagnet_Tengam; +import static gregtech.common.items.ID_MetaItem_01.Emitter_EV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_HV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_IV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_LV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_LuV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_MAX; +import static gregtech.common.items.ID_MetaItem_01.Emitter_MV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_UEV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_UHV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_UIV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_UMV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_UV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_UXV; +import static gregtech.common.items.ID_MetaItem_01.Emitter_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Empty_Board_Basic; +import static gregtech.common.items.ID_MetaItem_01.Empty_Board_Elite; +import static gregtech.common.items.ID_MetaItem_01.EnergisedTesseract; +import static gregtech.common.items.ID_MetaItem_01.Energy_Cluster; +import static gregtech.common.items.ID_MetaItem_01.Energy_Lapotronic_Orb; +import static gregtech.common.items.ID_MetaItem_01.Energy_Lapotronic_orb_2; +import static gregtech.common.items.ID_MetaItem_01.Energy_Module; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_EV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_HV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_IV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_LV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_LuV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_MAX; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_MV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_UEV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_UHV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_UIV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_UMV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_UV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_UXV; +import static gregtech.common.items.ID_MetaItem_01.Field_Generator_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Firebrick; +import static gregtech.common.items.ID_MetaItem_01.FluidFilter; +import static gregtech.common.items.ID_MetaItem_01.FluidRegulator_EV; +import static gregtech.common.items.ID_MetaItem_01.FluidRegulator_HV; +import static gregtech.common.items.ID_MetaItem_01.FluidRegulator_IV; +import static gregtech.common.items.ID_MetaItem_01.FluidRegulator_LV; +import static gregtech.common.items.ID_MetaItem_01.FluidRegulator_LuV; +import static gregtech.common.items.ID_MetaItem_01.FluidRegulator_MV; +import static gregtech.common.items.ID_MetaItem_01.FluidRegulator_UV; +import static gregtech.common.items.ID_MetaItem_01.FluidRegulator_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Fuel_Can_Plastic_Empty; +import static gregtech.common.items.ID_MetaItem_01.Fuel_Can_Plastic_Filled; +import static gregtech.common.items.ID_MetaItem_01.GigaChad; +import static gregtech.common.items.ID_MetaItem_01.Gravistar; +import static gregtech.common.items.ID_MetaItem_01.Ingot_Heavy1; +import static gregtech.common.items.ID_MetaItem_01.Ingot_Heavy2; +import static gregtech.common.items.ID_MetaItem_01.Ingot_Heavy3; +import static gregtech.common.items.ID_MetaItem_01.Ingot_Iridium_Alloy; +import static gregtech.common.items.ID_MetaItem_01.ItemFilter_Export; +import static gregtech.common.items.ID_MetaItem_01.ItemFilter_Import; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_Aluminium; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_Chrome; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_Iridium; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_Neutronium; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_Osmium; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_StainlessSteel; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_Steel; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_Titanium; +import static gregtech.common.items.ID_MetaItem_01.Large_Fluid_Cell_TungstenSteel; +import static gregtech.common.items.ID_MetaItem_01.McGuffium_239; +import static gregtech.common.items.ID_MetaItem_01.NC_SensorKit; +import static gregtech.common.items.ID_MetaItem_01.NaquadriaSupersolid; +import static gregtech.common.items.ID_MetaItem_01.Paper_Magic_Empty; +import static gregtech.common.items.ID_MetaItem_01.Paper_Magic_Page; +import static gregtech.common.items.ID_MetaItem_01.Paper_Magic_Pages; +import static gregtech.common.items.ID_MetaItem_01.Paper_Printed_Pages; +import static gregtech.common.items.ID_MetaItem_01.Paper_Punch_Card_Empty; +import static gregtech.common.items.ID_MetaItem_01.Paper_Punch_Card_Encoded; +import static gregtech.common.items.ID_MetaItem_01.QuantumEye; +import static gregtech.common.items.ID_MetaItem_01.QuantumStar; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_EV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_HV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_IV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_LV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_LuV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_MAX; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_MV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_UEV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_UHV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_UIV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_UMV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_UV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_UXV; +import static gregtech.common.items.ID_MetaItem_01.Robot_Arm_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Schematic; +import static gregtech.common.items.ID_MetaItem_01.Schematic_1by1; +import static gregtech.common.items.ID_MetaItem_01.Schematic_2by2; +import static gregtech.common.items.ID_MetaItem_01.Schematic_3by3; +import static gregtech.common.items.ID_MetaItem_01.Schematic_Crafting; +import static gregtech.common.items.ID_MetaItem_01.Schematic_Dust; +import static gregtech.common.items.ID_MetaItem_01.Sensor_EV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_HV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_IV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_LV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_LuV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_MAX; +import static gregtech.common.items.ID_MetaItem_01.Sensor_MV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_UEV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_UHV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_UIV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_UMV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_UV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_UXV; +import static gregtech.common.items.ID_MetaItem_01.Sensor_ZPM; +import static gregtech.common.items.ID_MetaItem_01.Shape_Empty; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Axe; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Block; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Bolt; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Bottle; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Casing; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Cell; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_File; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Gear; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Hammer; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Hoe; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Ingot; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Pickaxe; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Pipe_Huge; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Pipe_Large; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Pipe_Medium; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Pipe_Small; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Pipe_Tiny; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Plate; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Ring; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Rod; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Rotor; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Saw; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Shovel; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Small_Gear; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Sword; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Tool_Head_Drill; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Turbine_Blade; +import static gregtech.common.items.ID_MetaItem_01.Shape_Extruder_Wire; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Anvil; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Arrow; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Baguette; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Ball; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Block; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Bolt; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Bottle; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Bread; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Bun; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Casing; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Credit; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Cylinder; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Gear; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Gear_Small; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Ingot; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Name; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Nugget; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Pipe_Huge; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Pipe_Large; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Pipe_Medium; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Pipe_Small; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Pipe_Tiny; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Plate; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Ring; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Rod; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Rod_Long; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Rotor; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Round; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Screw; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Tool_Head_Drill; +import static gregtech.common.items.ID_MetaItem_01.Shape_Mold_Turbine_Blade; +import static gregtech.common.items.ID_MetaItem_01.Shape_Slicer_Flat; +import static gregtech.common.items.ID_MetaItem_01.Shape_Slicer_Stripes; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_0; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_1; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_10; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_11; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_12; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_13; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_14; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_15; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_2; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_3; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_4; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_5; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_6; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_7; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_8; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_9; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Remover; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Remover_Empty; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_0; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_1; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_10; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_11; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_12; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_13; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_14; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_15; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_2; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_3; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_4; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_5; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_6; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_7; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_8; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_9; +import static gregtech.common.items.ID_MetaItem_01.Spray_Color_Used_Remover; +import static gregtech.common.items.ID_MetaItem_01.Spray_Empty; +import static gregtech.common.items.ID_MetaItem_01.StableAdhesive; +import static gregtech.common.items.ID_MetaItem_01.Steam_Regulator_EV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Regulator_HV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Regulator_IV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Regulator_LV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Regulator_MV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Valve_EV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Valve_HV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Valve_IV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Valve_LV; +import static gregtech.common.items.ID_MetaItem_01.Steam_Valve_MV; +import static gregtech.common.items.ID_MetaItem_01.SuperconductorComposite; +import static gregtech.common.items.ID_MetaItem_01.Tesseract; +import static gregtech.common.items.ID_MetaItem_01.Thermos_Can_Empty; +import static gregtech.common.items.ID_MetaItem_01.Tool_Cheat; +import static gregtech.common.items.ID_MetaItem_01.Tool_Cover_Copy_Paste; +import static gregtech.common.items.ID_MetaItem_01.Tool_DataOrb; +import static gregtech.common.items.ID_MetaItem_01.Tool_DataStick; +import static gregtech.common.items.ID_MetaItem_01.Tool_Lighter_Invar_Empty; +import static gregtech.common.items.ID_MetaItem_01.Tool_Lighter_Invar_Full; +import static gregtech.common.items.ID_MetaItem_01.Tool_Lighter_Invar_Used; +import static gregtech.common.items.ID_MetaItem_01.Tool_Lighter_Platinum_Empty; +import static gregtech.common.items.ID_MetaItem_01.Tool_Lighter_Platinum_Full; +import static gregtech.common.items.ID_MetaItem_01.Tool_Lighter_Platinum_Used; +import static gregtech.common.items.ID_MetaItem_01.Tool_MatchBox_Full; +import static gregtech.common.items.ID_MetaItem_01.Tool_MatchBox_Used; +import static gregtech.common.items.ID_MetaItem_01.Tool_Matches; +import static gregtech.common.items.ID_MetaItem_01.Tool_Scanner; +import static gregtech.common.items.ID_MetaItem_01.Tool_Sonictron; +import static gregtech.common.items.ID_MetaItem_01.Upgrade_Lock; +import static gregtech.common.items.ID_MetaItem_01.Upgrade_Muffler; +import static gregtech.common.items.ID_MetaItem_01.ZPM2; +import static gregtech.common.items.ID_MetaItem_01.ZPM3; +import static gregtech.common.items.ID_MetaItem_01.ZPM4; +import static gregtech.common.items.ID_MetaItem_01.ZPM5; +import static gregtech.common.items.ID_MetaItem_01.ZPM6; import java.util.Collection; import java.util.HashMap; @@ -2754,6 +3157,20 @@ public class GT_MetaGenerated_Item_01 extends GT_MetaGenerated_Item_X32 { EnumChatFormatting.GREEN + "Tengam Electromagnet", MagnetTiers.buildMagnetTooltip(MagnetTiers.Tengam), new TC_Aspects.TC_AspectStack(TC_Aspects.MAGNETO, 40))); + ItemList.Black_Hole_Opener.set( + addItem( + Black_Hole_Opener.ID, + "Black Hole Activation Catalyst", + "Opens a semi-stable black hole", + new TC_Aspects.TC_AspectStack(TC_Aspects.ALIENIS, 32), + new TC_Aspects.TC_AspectStack(TC_Aspects.ORDO, 64))); + ItemList.Black_Hole_Closer.set( + addItem( + Black_Hole_Closer.ID, + "Black Hole Deactivation Catalyst", + "Safely closes a semi-stable black hole", + new TC_Aspects.TC_AspectStack(TC_Aspects.ALIENIS, 32), + new TC_Aspects.TC_AspectStack(TC_Aspects.PERDITIO, 64))); // Empty battery hulls ItemList.BatteryHull_EV.set( diff --git a/src/main/java/gregtech/common/items/ID_MetaItem_01.java b/src/main/java/gregtech/common/items/ID_MetaItem_01.java index 1de01d7bef..5748442f86 100644 --- a/src/main/java/gregtech/common/items/ID_MetaItem_01.java +++ b/src/main/java/gregtech/common/items/ID_MetaItem_01.java @@ -152,6 +152,8 @@ public enum ID_MetaItem_01 { Tesseract(415), GigaChad(416), EnergisedTesseract(417), + Black_Hole_Opener(418), + Black_Hole_Closer(419), StableAdhesive(427), SuperconductorComposite(428), NaquadriaSupersolid(429), diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_BlackHoleCompressor.java b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_BlackHoleCompressor.java new file mode 100644 index 0000000000..0b36d35cf8 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_BlackHoleCompressor.java @@ -0,0 +1,539 @@ +package gregtech.common.tileentities.machines.multi.compressor; + +import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; +import static gregtech.api.enums.GT_HatchElement.*; +import static gregtech.api.enums.GT_Values.AuthorFourIsTheNumber; +import static gregtech.api.enums.GT_Values.Ollie; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW; +import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; +import static gregtech.api.util.GT_StructureUtility.ofFrame; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.stream.Stream; + +import javax.annotation.Nonnull; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidStack; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; +import com.gtnewhorizon.structurelib.structure.IStructureDefinition; +import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; +import com.gtnewhorizon.structurelib.structure.StructureDefinition; + +import gregtech.api.GregTech_API; +import gregtech.api.enums.Materials; +import gregtech.api.enums.MaterialsUEVplus; +import gregtech.api.enums.Textures; +import gregtech.api.gui.modularui.GT_UITextures; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.logic.ProcessingLogic; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Input; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; +import gregtech.api.recipe.check.CheckRecipeResult; +import gregtech.api.recipe.check.CheckRecipeResultRegistry; +import gregtech.api.recipe.metadata.CompressionTierKey; +import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; +import gregtech.common.blocks.GT_Block_Casings10; +import gregtech.common.items.GT_MetaGenerated_Item_01; +import gtPlusPlus.core.util.minecraft.PlayerUtils; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; + +public class GT_MetaTileEntity_BlackHoleCompressor + extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<GT_MetaTileEntity_BlackHoleCompressor> + implements ISurvivalConstructable { + + private static final String STRUCTURE_PIECE_MAIN = "main"; + private static final IStructureDefinition<GT_MetaTileEntity_BlackHoleCompressor> STRUCTURE_DEFINITION = StructureDefinition + .<GT_MetaTileEntity_BlackHoleCompressor>builder() + .addShape( + STRUCTURE_PIECE_MAIN, + // spotless:off + transpose(new String[][]{ + {" "," "," "," "," "," "," "," "," "," CC CC "," CC CC "," CC CC "," CCC CCC "," CCC CCC "," CCCCC CCCCC "," CCCC CCCC "," "," "," "," CCCC CCCC "," CCCCC CCCCC "," CCC CCC "," CCC CCC "," CC CC "," CC CC "," CC CC "," "," "," "," "," "," "," "," "," "}, + {" "," "," "," "," "," "," "," CC CC "," CC CC "," CCC CCC "," CCC CCC "," CCCC CCCC "," CCCCC CCCCC "," CCCCCC CCCCCC "," CCCCCCC CCCCCCC "," CCCCCC CCCCCC "," "," "," "," CCCCCC CCCCCC "," CCCCCCC CCCCCCC "," CCCCCC CCCCCC "," CCCCC CCCCC "," CCCC CCCC "," CCC CCC "," CCC CCC "," CC CC "," CC CC "," "," "," "," "," "," "," "}, + {" "," "," "," "," "," "," CCBBBCC "," BBCCCCCCCBB "," BCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCB BCCCCCCB "," CCCCCCCB BCCCCCCC "," CCCCCCB BBB BCCCCCC "," BCCCCCB B B BCCCCCB "," BCCCCCB B B BCCCCCB "," BCCCCCB B B BCCCCCB "," CCCCCCB BBB BCCCCCC "," CCCCCCCB BCCCCCCC "," BCCCCCCB BCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCB "," BBCCCCCCCBB "," CCBBBCC "," "," "," "," "," "," "}, + {" "," "," "," "," "," CC CC "," CCBBBCC "," BBCCCCCCCBB "," BCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCBCCCCCBCCCCCCB "," CCCCCCCCBCCCCCCCBCCCCCCCC "," CCCCCCCBCCCCCCCCCBCCCCCCC "," BCCCCCBCCCCCCCCCBCCCCCB "," BCCCCCBCCCCCCCCCBCCCCCB "," BCCCCCBCCCCCCCCCBCCCCCB "," CCCCCCCBCCCCCCCCCBCCCCCCC "," CCCCCCCCBCCCCCCCBCCCCCCCC "," BCCCCCCBCCCCCBCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCB "," BBCCCCCCCBB "," CCBBBCC "," CC CC "," "," "," "," "," "}, + {" "," "," "," "," CC CC "," CCDDDCC "," CCBBBCC "," BBCCCCCCCBB "," BCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCB BCCCCCCB "," CCCCCCCCCB BCCCCCCCCC "," CCCCCCCCB BCCCCCCCC "," DBCCCCCB BCCCCCBD "," DBCCCCCB BCCCCCBD "," DBCCCCCB BCCCCCBD "," CCCCCCCCB BCCCCCCCC "," CCCCCCCCCB BCCCCCCCCC "," BCCCCCCB BCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCB "," BBCCCCCCCBB "," CCBBBCC "," CCDDDCC "," CC CC "," "," "," "," "}, + {" "," "," "," CC CC "," CC CC "," CC CC "," "," "," "," BB BB "," BBBB CCCCC BBBB "," BBBBCC CCBBBB "," BBC CBB "," C C "," CCC C C CCC "," CCC C C CCC "," C C "," C C "," C C "," CCC C C CCC "," CCC C C CCC "," C C "," BBC CBB "," BBBBCC CCBBBB "," BBBB CCCCC BBBB "," BB BB "," "," "," "," CC CC "," CC CC "," CC CC "," "," "," "}, + {" "," "," "," CC CC "," CCDDDCC "," "," "," "," "," "," "," BBB CCCCC BBB "," BBCC CCBB "," BC CB "," CC C C CC "," CC C C CC "," D C C D "," D C C D "," D C C D "," CC C C CC "," CC C C CC "," BC CB "," BBCC CCBB "," BBB CCCCC BBB "," "," "," "," "," "," "," CCDDDCC "," CC CC "," "," "," "}, + {" "," "," CC CC "," CC CC "," CC CC "," "," "," "," "," "," "," "," BBBCCCCCBBB "," BBC CBB "," CCC BC CB CCC "," CCC C C CCC "," C C "," C C "," C C "," CCC C C CCC "," CCC BC CB CCC "," BBC CBB "," BBBCCCCCBBB "," "," "," "," "," "," "," "," CC CC "," CC CC "," CC CC "," "," "}, + {" "," "," CC CC "," CCDDDCC "," "," "," "," "," "," "," "," "," "," BBCCCCCBB "," CC BC CB CC "," CC C C CC "," D C C D "," D C C D "," D C C D "," CC C C CC "," CC BC CB CC "," BBCCCCCBB "," "," "," "," "," "," "," "," "," "," CCDDDCC "," CC CC "," "," "}, + {" "," "," CC CC "," CC CC "," "," "," "," "," "," "," "," "," "," BCCCCCB "," CC BC CB CC "," CC C C CC "," C C "," C C "," C C "," CC C C CC "," CC BC CB CC "," BCCCCCB "," "," "," "," "," "," "," "," "," "," CC CC "," CC CC "," "," "}, + {" "," CC CC "," CCDDDCC "," CC CC "," "," "," "," "," "," "," "," "," "," "," CCC BBCCCBB CCC "," CCC BC CB CCC "," D C C D "," D C C D "," D C C D "," CCC BC CB CCC "," CCC BBCCCBB CCC "," "," "," "," "," "," "," "," "," "," "," CC CC "," CCDDDCC "," CC CC "," "}, + {" "," CC CC "," CC CC "," "," "," "," "," "," "," "," "," "," "," "," CC BCCCB CC "," CC BC CB CC "," C C "," C C "," C C "," CC BC CB CC "," CC BCCCB CC "," "," "," "," "," "," "," "," "," "," "," "," CC CC "," CC CC "," "}, + {" "," CCDDDCC "," CC CC "," "," "," "," "," "," "," "," "," "," "," "," CC BBB CC "," CC BCCCB CC "," D BCCCCCB D "," D BCCCCCB D "," D BCCCCCB D "," CC BCCCB CC "," CC BBB CC "," "," "," "," "," "," "," "," "," "," "," "," CC CC "," CCDDDCC "," "}, + {" "," CC CC "," CCBBBCC "," CCC "," "," "," "," "," "," "," "," "," "," "," CC CC "," CC BBB CC "," BC B B CB "," BC B B CB "," BC B B CB "," CC BBB CC "," CC CC "," "," "," "," "," "," "," "," "," "," "," CCC "," CCBBBCC "," CC CC "," "}, + {" CCDDDCC "," CC CC "," CBBBBBC "," C C "," "," "," "," "," "," "," "," "," "," ","CCC CCC","CCBC CBCC","D B B D","D B B D","D B B D","CCBC CBCC","CCC CCC"," "," "," "," "," "," "," "," "," "," "," C C "," CBBBBBC "," CC CC "," CCDDDCC "}, + {" CC CC "," CCCCCCC "," BBBBBBB "," C ABA C "," ABA "," A "," A "," "," "," "," "," "," "," ","CCBC CBCC","CCB BCC"," CBAA AABC "," CBBBAA AABBBC "," CBAA AABC ","CCB BCC","CCBC CBCC"," "," "," "," "," "," "," "," A "," A "," ABA "," C ABA C "," BBBBBBB "," CCCCCCC "," CC CC "}, + {" CC CC "," CCCECCC "," BBBBBBB "," C BBB C "," BBB "," ABA "," ABA "," B "," B "," "," "," "," "," ","CCBC CBCC","CCB BCC"," CBBBAA AABBBC "," EBBBBBBB BBBBBBBE "," CBBBAA AABBBC ","CCB BCC","CCBC CBCC"," "," "," "," "," "," B "," B "," ABA "," ABA "," BBB "," C BBB C "," BBBBBBB "," CCCECCC "," CC CC "}, + {" CC CC "," CCCCCCC "," BBBBBBB "," C ABA C "," ABA "," A "," A "," "," "," "," "," "," "," ","CCBC CBCC","CCB BCC"," CBAA AABC "," CBBBAA AABBBC "," CBAA AABC ","CCB BCC","CCBC CBCC"," "," "," "," "," "," "," "," A "," A "," ABA "," C ABA C "," BBBBBBB "," CCCCCCC "," CC CC "}, + {" CCDDDCC "," CC CC "," CBBBBBC "," C C "," "," "," "," "," "," "," "," "," "," ","CCC CCC","CCBC CBCC","D B B D","D B B D","D B B D","CCBC CBCC","CCC CCC"," "," "," "," "," "," "," "," "," "," "," C C "," CBBBBBC "," CC CC "," CCDDDCC "}, + {" "," CC CC "," CCBBBCC "," CCC "," "," "," "," "," "," "," "," "," "," "," CC CC "," CC BBB CC "," BC B B CB "," BC B B CB "," BC B B CB "," CC BBB CC "," CC CC "," "," "," "," "," "," "," "," "," "," "," CCC "," CCBBBCC "," CC CC "," "}, + {" "," CCDDDCC "," CC CC "," "," "," "," "," "," "," "," "," "," "," "," CC BBB CC "," CC BCCCB CC "," D BCCCCCB D "," D BCCCCCB D "," D BCCCCCB D "," CC BCCCB CC "," CC BBB CC "," "," "," "," "," "," "," "," "," "," "," "," CC CC "," CCDDDCC "," "}, + {" "," CC CC "," CC CC "," "," "," "," "," "," "," "," "," "," "," "," CC BCCCB CC "," CC BC CB CC "," C C "," C C "," C C "," CC BC CB CC "," CC BCCCB CC "," "," "," "," "," "," "," "," "," "," "," "," CC CC "," CC CC "," "}, + {" "," CC CC "," CCDDDCC "," CC CC "," "," "," "," "," "," "," "," "," "," "," CCC BBCCCBB CCC "," CCC BC CB CCC "," D C C D "," D C C D "," D C C D "," CCC BC CB CCC "," CCC BBCCCBB CCC "," "," "," "," "," "," "," "," "," "," "," CC CC "," CCDDDCC "," CC CC "," "}, + {" "," "," CC CC "," CC CC "," "," "," "," "," "," "," "," "," "," BCCCCCB "," CC BC CB CC "," CC C C CC "," C C "," C C "," C C "," CC C C CC "," CC BC CB CC "," BCCCCCB "," "," "," "," "," "," "," "," "," "," CC CC "," CC CC "," "," "}, + {" "," "," CC CC "," CCDDDCC "," "," "," "," "," "," "," "," "," "," BBCCCCCBB "," CC BC CB CC "," CC C C CC "," D C C D "," D C C D "," D C C D "," CC C C CC "," CC BC CB CC "," BBCCCCCBB "," "," "," "," "," "," "," "," "," "," CCDDDCC "," CC CC "," "," "}, + {" "," "," CC CC "," CC CC "," CC CC "," "," "," "," "," "," "," "," BBBCCCCCBBB "," BBC CBB "," CCC BC CB CCC "," CCC C C CCC "," C C "," C C "," C C "," CCC C C CCC "," CCC BC CB CCC "," BBC CBB "," BBBCCCCCBBB "," "," "," "," "," "," "," "," CC CC "," CC CC "," CC CC "," "," "}, + {" "," "," "," CC CC "," CCDDDCC "," "," "," "," "," "," "," BBB CCCCC BBB "," BBCC CCBB "," BC CB "," CC C C CC "," CC C C CC "," D C C D "," D C C D "," D C C D "," CC C C CC "," CC C C CC "," BC CB "," BBCC CCBB "," BBB CCCCC BBB "," "," "," "," "," "," "," CCDDDCC "," CC CC "," "," "," "}, + {" "," "," "," CC CC "," CC CC "," CC CC "," "," "," "," BB BB "," BBBB CC~CC BBBB "," BBBBCC CCBBBB "," BBC CBB "," C C "," CCC C C CCC "," CCC C C CCC "," C C "," C C "," C C "," CCC C C CCC "," CCC C C CCC "," C C "," BBC CBB "," BBBBCC CCBBBB "," BBBB CCCCC BBBB "," BB BB "," "," "," "," CC CC "," CC CC "," CC CC "," "," "," "}, + {" "," "," "," "," CC CC "," CCDDDCC "," CCBBBCC "," BBCCCCCCCBB "," BCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCB BCCCCCCB "," CCCCCCCCCB BCCCCCCCCC "," CCCCCCCCB BCCCCCCCC "," DBCCCCCB BCCCCCBD "," DBCCCCCB BCCCCCBD "," DBCCCCCB BCCCCCBD "," CCCCCCCCB BCCCCCCCC "," CCCCCCCCCB BCCCCCCCCC "," BCCCCCCB BCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCB "," BBCCCCCCCBB "," CCBBBCC "," CCDDDCC "," CC CC "," "," "," "," "}, + {" "," "," "," "," "," CC CC "," CCBBBCC "," BBCCCCCCCBB "," BCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCBCCCCCBCCCCCCB "," CCCCCCCCBCCCCCCCBCCCCCCCC "," CCCCCCCBCCCCCCCCCBCCCCCCC "," BCCCCCBCCCCCCCCCBCCCCCB "," BCCCCCBCCCCCCCCCBCCCCCB "," BCCCCCBCCCCCCCCCBCCCCCB "," CCCCCCCBCCCCCCCCCBCCCCCCC "," CCCCCCCCBCCCCCCCBCCCCCCCC "," BCCCCCCBCCCCCBCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCB "," BBCCCCCCCBB "," CCBBBCC "," CC CC "," "," "," "," "," "}, + {" "," "," "," "," "," "," CCBBBCC "," BBCCCCCCCBB "," BCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCB BCCCCCCB "," CCCCCCCB BCCCCCCC "," CCCCCCB BBB BCCCCCC "," BCCCCCB B B BCCCCCB "," BCCCCCB B B BCCCCCB "," BCCCCCB B B BCCCCCB "," CCCCCCB BBB BCCCCCC "," CCCCCCCB BCCCCCCC "," BCCCCCCB BCCCCCCB "," BCCCCCCCBBBBBCCCCCCCB "," BCCCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCCCB "," BCCCCCCCCCCCCCB "," BCCCCCCCCCCCB "," BBCCCCCCCBB "," CCBBBCC "," "," "," "," "," "," "}, + {" "," "," "," "," "," "," "," CC CC "," CC CC "," CCC CCC "," CCC CCC "," CCCC CCCC "," CCCCC CCCCC "," CCCCCC CCCCCC "," CCCCCCC CCCCCCC "," CCCCCC CCCCCC "," "," "," "," CCCCCC CCCCCC "," CCCCCCC CCCCCCC "," CCCCCC CCCCCC "," CCCCC CCCCC "," CCCC CCCC "," CCC CCC "," CCC CCC "," CC CC "," CC CC "," "," "," "," "," "," "," "}, + {" "," "," "," "," "," "," "," "," "," CC CC "," CC CC "," CC CC "," CCC CCC "," CCC CCC "," CCCCC CCCCC "," CCCC CCCC "," "," "," "," CCCC CCCC "," CCCCC CCCCC "," CCC CCC "," CCC CCC "," CC CC "," CC CC "," CC CC "," "," "," "," "," "," "," "," "," "} + })) + //spotless:on + .addElement('A', ofBlock(GregTech_API.sBlockGlass1, 4)) + .addElement( + 'B', + buildHatchAdder(GT_MetaTileEntity_BlackHoleCompressor.class).atLeast(Maintenance, Energy) + .casingIndex(((GT_Block_Casings10) GregTech_API.sBlockCasings10).getTextureIndex(12)) + .dot(2) + .buildAndChain( + onElementPass( + GT_MetaTileEntity_BlackHoleCompressor::onCasingAdded, + ofBlock(GregTech_API.sBlockCasings10, 12)))) + .addElement('C', ofBlock(GregTech_API.sBlockCasings10, 11)) + .addElement('D', ofFrame(Materials.NaquadahAlloy)) + .addElement( + 'E', + buildHatchAdder(GT_MetaTileEntity_BlackHoleCompressor.class).atLeast(InputBus, OutputBus, InputHatch) + .casingIndex(((GT_Block_Casings10) GregTech_API.sBlockCasings10).getTextureIndex(11)) + .dot(1) + .buildAndChain( + onElementPass( + GT_MetaTileEntity_BlackHoleCompressor::onCasingAdded, + ofBlock(GregTech_API.sBlockCasings10, 11)))) + + .build(); + + private boolean blackholeOn = false; + private int catalyzingCounter = 0; + private float blackHoleStability = 100; + + private final FluidStack blackholeCatalyzingCost = (MaterialsUEVplus.SpaceTime).getMolten(1); + private int catalyzingCostModifier = 1; + + public GT_MetaTileEntity_BlackHoleCompressor(final int aID, final String aName, final String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public GT_MetaTileEntity_BlackHoleCompressor(String aName) { + super(aName); + } + + @Override + public IStructureDefinition<GT_MetaTileEntity_BlackHoleCompressor> getStructureDefinition() { + return STRUCTURE_DEFINITION; + } + + @Override + public boolean isCorrectMachinePart(ItemStack aStack) { + return true; + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_BlackHoleCompressor(this.mName); + } + + @Override + public boolean supportsMachineModeSwitch() { + return true; + } + + @Override + public void setMachineModeIcons() { + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_COMPRESSING); + machineModeIcons.add(GT_UITextures.OVERLAY_BUTTON_MACHINEMODE_SINGULARITY); + } + + @Override + public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { + setMachineMode(nextMachineMode()); + PlayerUtils.messagePlayer( + aPlayer, + String.format(StatCollector.translateToLocal("GT5U.MULTI_MACHINE_CHANGE"), getMachineModeName())); + } + + @Override + public String getMachineModeName() { + return StatCollector.translateToLocal("GT5U.COMPRESSION_TIER.mode." + machineMode); + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity baseMetaTileEntity, ForgeDirection side, ForgeDirection aFacing, + int colorIndex, boolean aActive, boolean redstoneLevel) { + ITexture[] rTexture; + if (side == aFacing) { + if (aActive) { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 11)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW) + .extFacing() + .glow() + .build() }; + } else { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 11)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW) + .extFacing() + .glow() + .build() }; + } + } else { + rTexture = new ITexture[] { Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 11)) }; + } + return rTexture; + } + + @Override + protected GT_Multiblock_Tooltip_Builder createTooltip() { + GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); + tt.addMachineType("Compressor/Advanced Neutronium Compressor") + .addInfo("Controller Block for the Semi-Stable Black Hole Containment Field") + .addInfo(EnumChatFormatting.LIGHT_PURPLE + "Uses the immense power of the event horizon to compress things") + .addInfo("No longer requires heat management to perform perfect compression") + .addInfo("Can create advanced singularities!") + .addSeparator() + .addInfo( + "Insert a " + EnumChatFormatting.WHITE + + "Black Hole Activation Catalyst" + + EnumChatFormatting.GRAY + + " to open a black hole") + .addInfo( + "The black hole will begin its life at " + EnumChatFormatting.RED + + "100%" + + EnumChatFormatting.GRAY + + " stability and slowly decay") + .addSeparator() + .addInfo("Natural decay takes " + EnumChatFormatting.RED + "100" + EnumChatFormatting.GRAY + " seconds") + .addInfo("Running recipes in the machine will slow the decay by " + EnumChatFormatting.RED + "25%") + .addInfo( + "The decay can be " + EnumChatFormatting.BOLD + + "halted" + + EnumChatFormatting.RESET + + EnumChatFormatting.GRAY + + " by inserting spacetime") + .addInfo( + "Every " + EnumChatFormatting.RED + + "30" + + EnumChatFormatting.GRAY + + " seconds saved by spacetime insertion will " + + EnumChatFormatting.RED + + "double" + + EnumChatFormatting.GRAY + + " the cost per second!") + .addInfo("Once the black hole becomes unstable, it will void all inputs for recipes which require it") + .addInfo( + "Insert a " + EnumChatFormatting.WHITE + + "Black Hole Deactivation Catalyst" + + EnumChatFormatting.GRAY + + " to close the black hole") + .addSeparator() + .addInfo( + "Recipes not utilizing the black hole have their lengths " + EnumChatFormatting.RED + + "doubled" + + EnumChatFormatting.GRAY + + " if it becomes unstable") + .addInfo("400% faster than singleblock machines of the same voltage when black hole is open") + .addInfo("Only uses 70% of the EU/t normally required") + .addInfo("Gains 8 parallels per voltage tier") + .addInfo( + "Parallels are " + EnumChatFormatting.RED + + "doubled" + + EnumChatFormatting.GRAY + + " when stability is BELOW " + + EnumChatFormatting.RED + + "50%") + .addInfo( + "Parallels are " + EnumChatFormatting.RED + + "quadrupled" + + EnumChatFormatting.GRAY + + " when stability is BELOW " + + EnumChatFormatting.RED + + "20%") + .addInfo(AuthorFourIsTheNumber + EnumChatFormatting.RESET + " & " + Ollie) + .addSeparator() + .beginStructureBlock(35, 33, 35, false) + .addCasingInfoMin("Background Radiation Absorbent Casing", 985, false) + .addCasingInfoExactly("Extreme Density Space-Bending Casing", 3667, false) + .addCasingInfoExactly("Hawking Radiation Realignment Focus", 64, false) + .addCasingInfoExactly("Naquadah Alloy Frame Box", 144, false) + .addInputBus("Behind Laser", 1) + .addOutputBus("Behind Laser", 1) + .addInputHatch("Behind Laser", 1) + .addEnergyHatch("Any Radiation Absorbent Casing", 2) + .addMaintenanceHatch("Any Radiation Absorbent Casing", 2) + .toolTipFinisher("GregTech"); + return tt; + } + + @Override + public void construct(ItemStack stackSize, boolean hintsOnly) { + buildPiece(STRUCTURE_PIECE_MAIN, stackSize, hintsOnly, 17, 27, 10); + } + + @Override + public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) { + if (mMachine) return -1; + return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 17, 27, 10, elementBudget, env, false, true); + } + + private int mCasingAmount; + + private void onCasingAdded() { + mCasingAmount++; + } + + @Override + public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + mCasingAmount = 0; + mEnergyHatches.clear(); + + if (!checkPiece(STRUCTURE_PIECE_MAIN, 17, 27, 10)) return false; + if (mCasingAmount < 0) return false; + + return true; + } + + @Override + public void loadNBTData(NBTTagCompound aNBT) { + super.loadNBTData(aNBT); + aNBT.setInteger("catalyzingCostModifier", catalyzingCostModifier); + aNBT.setInteger("catalyzingCounter", catalyzingCounter); + aNBT.setBoolean("blackholeOn", blackholeOn); + aNBT.setFloat("blackholeStability", blackHoleStability); + } + + @Override + public void saveNBTData(NBTTagCompound aNBT) { + super.saveNBTData(aNBT); + if (aNBT.hasKey("catalyzingCounter")) catalyzingCostModifier = aNBT.getInteger("catalyzingCounter"); + if (aNBT.hasKey("catalyzingCostModifier")) catalyzingCostModifier = aNBT.getInteger("catalyzingCostModifier"); + if (aNBT.hasKey("blackholeOn")) blackholeOn = aNBT.getBoolean("blackholeOn"); + if (aNBT.hasKey("blackholeStability")) blackHoleStability = aNBT.getFloat("blackholeStability"); + } + + @Override + protected void setProcessingLogicPower(ProcessingLogic logic) { + logic.setAvailableVoltage(GT_Utility.roundUpVoltage(this.getMaxInputVoltage())); + logic.setAvailableAmperage(1L); + } + + @Override + public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, + int z) { + super.getWailaNBTData(player, tile, tag, world, x, y, z); + tag.setBoolean("blackholeOn", blackholeOn); + tag.setFloat("blackHoleStability", blackHoleStability); + } + + @Override + public void getWailaBody(ItemStack itemStack, List<String> currentTip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + super.getWailaBody(itemStack, currentTip, accessor, config); + final NBTTagCompound tag = accessor.getNBTData(); + if (tag.getBoolean("blackholeOn")) { + if (tag.getFloat("blackHoleStability") > 0) { + currentTip.add(EnumChatFormatting.DARK_PURPLE + "Black Hole Active"); + currentTip.add( + EnumChatFormatting.DARK_PURPLE + " Stability: " + + EnumChatFormatting.BOLD + + Math.round(tag.getFloat("blackHoleStability")) + + "%"); + } else { + currentTip.add(EnumChatFormatting.RED + "BLACK HOLE UNSTABLE"); + } + } else currentTip.add(EnumChatFormatting.DARK_PURPLE + "Black Hole Offline"); + } + + @Override + protected ProcessingLogic createProcessingLogic() { + return new ProcessingLogic() { + + @NotNull + @Override + protected Stream<GT_Recipe> findRecipeMatches(@Nullable RecipeMap<?> map) { + + // Loop through all items and look for the Activation and Deactivation Catalysts + // Deactivation resets stability to 100 and catalyzing cost to 1 + for (ItemStack inputItem : inputItems) { + if (inputItem.getItem() instanceof GT_MetaGenerated_Item_01) { + if (inputItem.getItemDamage() == 32418 && !blackholeOn) { + inputItem.stackSize -= 1; + blackholeOn = true; + break; + } else if (inputItem.getItemDamage() == 32419 && blackholeOn) { + inputItem.stackSize -= 1; + blackholeOn = false; + blackHoleStability = 100; + catalyzingCostModifier = 1; + break; + } + } + } + return super.findRecipeMatches(map); + } + + @NotNull + @Override + protected CheckRecipeResult validateRecipe(@NotNull GT_Recipe recipe) { + + // Default speed bonus + setSpeedBonus(1F); + + // If recipe needs a black hole and one is not open, just wait + // If the recipe doesn't require black hole, incur a 0.5x speed penalty + // If recipe doesn't require black hole but one is open, give 5x speed bonus + if (recipe.getMetadataOrDefault(CompressionTierKey.INSTANCE, 1) > 0) { + if (!blackholeOn) return CheckRecipeResultRegistry.NO_BLACK_HOLE; + } else { + if (blackHoleStability <= 0) setSpeedBonus(5F); + else if (blackholeOn) setSpeedBonus(0.2F); + } + return super.validateRecipe(recipe); + } + + @Nonnull + protected CheckRecipeResult onRecipeStart(@Nonnull GT_Recipe recipe) { + // If recipe needs a black hole and one is active but unstable, continuously void items + if (blackHoleStability <= 0 && recipe.getMetadataOrDefault(CompressionTierKey.INSTANCE, 1) > 0) { + return CheckRecipeResultRegistry.UNSTABLE_BLACK_HOLE; + } + return CheckRecipeResultRegistry.SUCCESSFUL; + } + }.setMaxParallelSupplier(this::getMaxParallelRecipes) + .setEuModifier(0.7F); + } + + @Override + public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + super.onPostTick(aBaseMetaTileEntity, aTick); + + if (aTick % 20 == 0) { + if (blackholeOn && blackHoleStability >= 0) { + float stabilityDecrease = 1F; + // If the machine is running, reduce stability loss by 25% + if (this.maxProgresstime() != 0) { + stabilityDecrease = 0.75F; + } + // Search all hatches for catalyst fluid + // If found enough, drain it and reduce stability loss to 0 + // Every 30 drains, double the cost + FluidStack totalCost = new FluidStack(blackholeCatalyzingCost, catalyzingCostModifier); + for (GT_MetaTileEntity_Hatch_Input hatch : mInputHatches) { + if (drain(hatch, totalCost, false)) { + drain(hatch, totalCost, true); + catalyzingCounter += 1; + stabilityDecrease = 0; + if (catalyzingCounter >= 30) { + catalyzingCostModifier *= 2; + catalyzingCounter = 0; + } + } + } + if (blackHoleStability >= 0) blackHoleStability -= stabilityDecrease; + else blackHoleStability = 0; + } + } + } + + public int getMaxParallelRecipes() { + int parallels = (8 * GT_Utility.getTier(this.getMaxInputVoltage())); + if (blackHoleStability < 60) { + parallels *= 2; + if (blackHoleStability < 20) parallels *= 2; + } + return parallels; + } + + private static final int MACHINEMODE_COMPRESSOR = 0; + private static final int MACHINEMODE_BLACKHOLE = 1; + + @Override + public RecipeMap<?> getRecipeMap() { + return (machineMode == MACHINEMODE_COMPRESSOR) ? RecipeMaps.compressorRecipes + : RecipeMaps.neutroniumCompressorRecipes; + } + + @Nonnull + @Override + public Collection<RecipeMap<?>> getAvailableRecipeMaps() { + return Arrays.asList(RecipeMaps.compressorRecipes, RecipeMaps.neutroniumCompressorRecipes); + } + + @Override + public int getMaxEfficiency(ItemStack aStack) { + return 10000; + } + + @Override + public int getDamageToComponent(ItemStack aStack) { + return 0; + } + + @Override + public boolean explodesOnComponentBreak(ItemStack aStack) { + return false; + } + + @Override + public boolean supportsVoidProtection() { + return true; + } + + @Override + public boolean supportsBatchMode() { + return true; + } + + @Override + public boolean supportsInputSeparation() { + return true; + } + + @Override + public boolean supportsSingleRecipeLocking() { + return true; + } +} diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_HIPCompressor.java b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_HIPCompressor.java new file mode 100644 index 0000000000..bb79cf692b --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_HIPCompressor.java @@ -0,0 +1,525 @@ +package gregtech.common.tileentities.machines.multi.compressor; + +import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; +import static gregtech.api.enums.GT_HatchElement.*; +import static gregtech.api.enums.GT_Values.AuthorFourIsTheNumber; +import static gregtech.api.enums.GT_Values.Ollie; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_COOLING; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_COOLING_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW; +import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; +import static gregtech.api.util.GT_StructureUtility.ofCoil; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import org.jetbrains.annotations.NotNull; + +import com.github.bartimaeusnek.bartworks.util.MathUtils; +import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; +import com.gtnewhorizon.structurelib.structure.IStructureDefinition; +import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; +import com.gtnewhorizon.structurelib.structure.StructureDefinition; + +import gregtech.api.GregTech_API; +import gregtech.api.enums.HeatingCoilLevel; +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.IHatchElement; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.logic.ProcessingLogic; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase; +import gregtech.api.multitileentity.multiblock.casing.Glasses; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; +import gregtech.api.recipe.check.CheckRecipeResult; +import gregtech.api.recipe.metadata.CompressionTierKey; +import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; +import gregtech.api.util.IGT_HatchAdder; +import gregtech.api.util.shutdown.SimpleShutDownReason; +import gregtech.common.blocks.GT_Block_Casings10; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; + +public class GT_MetaTileEntity_HIPCompressor extends + GT_MetaTileEntity_ExtendedPowerMultiBlockBase<GT_MetaTileEntity_HIPCompressor> implements ISurvivalConstructable { + + private static final String STRUCTURE_PIECE_MAIN = "main"; + private static final IStructureDefinition<GT_MetaTileEntity_HIPCompressor> STRUCTURE_DEFINITION = StructureDefinition + .<GT_MetaTileEntity_HIPCompressor>builder() + .addShape( + STRUCTURE_PIECE_MAIN, + // spotless:off + transpose(new String[][]{ + {" "," "," "," CCCCCC DDDDDD "," "," "," "}, + {" "," "," "," C C D D "," "," "," "}, + {" "," HHH "," HHHHH "," C HHHHH D "," HHHHH "," HHH "," "}, + {" BBB "," BBBBB "," BBBBBBB "," C BBBBBBB D "," BBBBBBB "," BBBBB "," BBB "}, + {" HHH "," B B "," BF FB "," C BF FB D "," BF FB "," B B "," HHH "}, + {" HAH "," B B "," GF FG "," C GF FG D "," GF FG "," B B "," HAH "}, + {" HAH "," B B "," E GF FG E ","EEE GF FG EEE"," E GF FG E "," B B "," HAH "}, + {" HAH "," B B "," A GF FG A ","A A GF FG A A"," A GF FG A "," B B "," HAH "}, + {" HHH "," B B "," A BF FB A ","A A BF FB A A"," A BF FB A "," B B "," HHH "}, + {" B~B "," BBBBB "," E BBBBBBB E ","EEE BBBBBBB EEE"," E BBBBBBB E "," BBBBB "," BBB "} + })) + //spotless:on + .addElement('A', Glasses.chainAllGlasses()) + .addElement( + 'B', + buildHatchAdder(GT_MetaTileEntity_HIPCompressor.class) + .atLeast(Maintenance, Energy, SpecialHatchElement.HeatSensor) + .casingIndex(((GT_Block_Casings10) GregTech_API.sBlockCasings10).getTextureIndex(4)) + .dot(1) + .buildAndChain( + onElementPass( + GT_MetaTileEntity_HIPCompressor::onCasingAdded, + ofBlock(GregTech_API.sBlockCasings10, 4)))) + .addElement('C', ofBlock(GregTech_API.sBlockCasings10, 9)) + .addElement('D', ofBlock(GregTech_API.sBlockCasings10, 10)) + .addElement('E', ofBlock(GregTech_API.sBlockCasings4, 1)) + .addElement( + 'F', + ofCoil(GT_MetaTileEntity_HIPCompressor::setCoilLevel, GT_MetaTileEntity_HIPCompressor::getCoilLevel)) + .addElement( + 'G', + buildHatchAdder(GT_MetaTileEntity_HIPCompressor.class).atLeast(InputBus, OutputBus) + .casingIndex(((GT_Block_Casings10) GregTech_API.sBlockCasings10).getTextureIndex(5)) + .dot(1) + .buildAndChain( + onElementPass( + GT_MetaTileEntity_HIPCompressor::onCasingAdded, + ofBlock(GregTech_API.sBlockCasings10, 5)))) + .addElement('H', ofBlock(GregTech_API.sBlockCasings10, 5)) + .build(); + + private final ArrayList<GT_MetaTileEntity_HeatSensor> sensorHatches = new ArrayList<>(); + + private HeatingCoilLevel heatLevel; + private int coilTier = 0; + + private float heat = 0; + private boolean cooling = false; + + public GT_MetaTileEntity_HIPCompressor(final int aID, final String aName, final String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public GT_MetaTileEntity_HIPCompressor(String aName) { + super(aName); + } + + @Override + public IStructureDefinition<GT_MetaTileEntity_HIPCompressor> getStructureDefinition() { + return STRUCTURE_DEFINITION; + } + + @Override + public boolean isCorrectMachinePart(ItemStack aStack) { + return true; + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_HIPCompressor(this.mName); + } + + @Override + public void onValueUpdate(byte aValue) { + boolean oCooling = cooling; + cooling = (aValue & 1) == 1; + if (oCooling != cooling) getBaseMetaTileEntity().issueTextureUpdate(); + } + + @Override + public byte getUpdateData() { + return (byte) (cooling ? 1 : 0); + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity baseMetaTileEntity, ForgeDirection side, ForgeDirection aFacing, + int colorIndex, boolean aActive, boolean redstoneLevel) { + ITexture[] rTexture; + if (side == aFacing) { + if (cooling) { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 4)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_COOLING) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_COOLING_GLOW) + .extFacing() + .glow() + .build() }; + } else if (aActive) { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 4)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW) + .extFacing() + .glow() + .build() }; + } else { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 4)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW) + .extFacing() + .glow() + .build() }; + } + } else { + rTexture = new ITexture[] { Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 4)) }; + } + return rTexture; + } + + @Override + protected GT_Multiblock_Tooltip_Builder createTooltip() { + GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); + tt.addMachineType("Compressor") + .addInfo("Controller Block for the Hot Isostatic Pressurization Unit") + .addInfo("HIP Unit heats up while running") + .addInfo( + "When it reaches maximum heat, it becomes " + EnumChatFormatting.DARK_RED + + EnumChatFormatting.BOLD + + "overheated!") + .addInfo("This is only resolved by letting the machine fully cool down") + .addInfo( + "When " + EnumChatFormatting.DARK_RED + + "overheated" + + EnumChatFormatting.GRAY + + ", recipes are slowed down drastically") + .addSeparator() + .addInfo( + "Some recipes " + EnumChatFormatting.BOLD + + "require" + + EnumChatFormatting.RESET + + EnumChatFormatting.GRAY + + " HIP") + .addInfo( + "If the machine " + EnumChatFormatting.DARK_RED + + "overheats" + + EnumChatFormatting.GRAY + + " during these recipes, recipe will be voided!") + .addInfo("Read the current heat using Heat Sensor Hatches") + .addSeparator() + .addInfo("More advanced coils allow better heat control - the unit will take longer to overheat") + .addInfo( + "Unit heats by " + EnumChatFormatting.GREEN + + "(5% x 0.90 ^ (Coil Tier - 1))" + + EnumChatFormatting.GRAY + + " every second while running") + .addInfo( + "Unit cools by " + EnumChatFormatting.GREEN + + "2%" + + EnumChatFormatting.GRAY + + " every second while not running") + .addSeparator() + .addInfo( + "250% " + EnumChatFormatting.RED + + "faster" + + EnumChatFormatting.GRAY + + "/" + + EnumChatFormatting.BLUE + + "slower" + + EnumChatFormatting.GRAY + + " than singleblock machines of the same voltage") + .addInfo( + "Uses " + EnumChatFormatting.RED + + "75%" + + EnumChatFormatting.GRAY + + "/" + + EnumChatFormatting.BLUE + + "110%" + + EnumChatFormatting.GRAY + + " the EU/t normally required") + .addInfo( + "Gains " + EnumChatFormatting.RED + + "4" + + EnumChatFormatting.GRAY + + "/" + + EnumChatFormatting.BLUE + + "1" + + EnumChatFormatting.GRAY + + " parallels per voltage tier") + .addInfo(AuthorFourIsTheNumber + EnumChatFormatting.RESET + " & " + Ollie) + .addSeparator() + .beginStructureBlock(7, 5, 7, true) + .addController("Front Center") + .addCasingInfoMin("Electric Compressor Casing", 95, false) + .addCasingInfoMin("Compressor Pipe Casing", 45, false) + .addCasingInfoExactly("Coolant Duct", 12, false) + .addCasingInfoExactly("Heating Duct", 12, false) + .addCasingInfoExactly("EV+ Glass", 22, false) + .addCasingInfoExactly("Clean Stainless Steel Machine Casing", 20, false) + .addCasingInfoExactly("Coil", 30, true) + .addInputBus("Pipe Casings on Side", 2) + .addOutputBus("Pipe Casings on Side", 2) + .addEnergyHatch("Any Electric Compressor Casing", 1) + .addMaintenanceHatch("Any Electric Compressor Casing", 1) + .toolTipFinisher("GregTech"); + return tt; + } + + @Override + public void construct(ItemStack stackSize, boolean hintsOnly) { + buildPiece(STRUCTURE_PIECE_MAIN, stackSize, hintsOnly, 7, 9, 0); + } + + @Override + public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) { + if (mMachine) return -1; + return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 7, 9, 0, elementBudget, env, false, true); + } + + private int mCasingAmount; + + private void onCasingAdded() { + mCasingAmount++; + } + + @Override + public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + setCoilLevel(HeatingCoilLevel.None); + mCasingAmount = 0; + return checkPiece(STRUCTURE_PIECE_MAIN, 7, 9, 0) && mCasingAmount >= 95; + } + + @Override + protected void setProcessingLogicPower(ProcessingLogic logic) { + logic.setAvailableVoltage(GT_Utility.roundUpVoltage(this.getMaxInputVoltage())); + logic.setAvailableAmperage(1L); + } + + @Override + public void saveNBTData(NBTTagCompound aNBT) { + aNBT.setFloat("heat", heat); + aNBT.setBoolean("cooling", cooling); + aNBT.setInteger("coilTier", coilTier); + aNBT.setBoolean("doingHIP", doingHIP); + super.saveNBTData(aNBT); + } + + @Override + public void loadNBTData(NBTTagCompound aNBT) { + if (aNBT.hasKey("heat")) heat = aNBT.getFloat("heat"); + if (aNBT.hasKey("cooling")) cooling = aNBT.getBoolean("cooling"); + if (aNBT.hasKey("coilTier")) coilTier = aNBT.getInteger("coilTier"); + if (aNBT.hasKey("doingHIP")) doingHIP = aNBT.getBoolean("doingHIP"); + super.loadNBTData(aNBT); + } + + @Override + public void getWailaNBTData(EntityPlayerMP player, TileEntity tile, NBTTagCompound tag, World world, int x, int y, + int z) { + super.getWailaNBTData(player, tile, tag, world, x, y, z); + tag.setInteger("heat", Math.round(heat)); + tag.setBoolean("cooling", cooling); + } + + @Override + public void getWailaBody(ItemStack itemStack, List<String> currentTip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + super.getWailaBody(itemStack, currentTip, accessor, config); + final NBTTagCompound tag = accessor.getNBTData(); + if (tag.getBoolean("cooling")) currentTip.add( + "HIP Heat: " + EnumChatFormatting.RED + + EnumChatFormatting.BOLD + + tag.getInteger("heat") + + "%" + + EnumChatFormatting.RESET); + else currentTip.add( + "HIP Heat: " + EnumChatFormatting.AQUA + + EnumChatFormatting.BOLD + + tag.getInteger("heat") + + "%" + + EnumChatFormatting.RESET); + } + + private boolean doingHIP = false; + + @Override + protected ProcessingLogic createProcessingLogic() { + return new ProcessingLogic() { + + @NotNull + @Override + protected CheckRecipeResult validateRecipe(@NotNull GT_Recipe recipe) { + doingHIP = false; + setSpeedBonus(1F / 1.25F); + setEuModifier(0.75F); + + if (cooling) { + setSpeedBonus(2.5F); + setEuModifier(1.1F); + } + + if (recipe.getMetadataOrDefault(CompressionTierKey.INSTANCE, 1) > 0) doingHIP = true; + return super.validateRecipe(recipe); + } + }.setMaxParallelSupplier(this::getMaxParallelRecipes); + } + + @Override + public boolean onRunningTick(ItemStack aStack) { + if (cooling && doingHIP) { + stopMachine(SimpleShutDownReason.ofCritical("overheated")); + doingHIP = false; + } + return super.onRunningTick(aStack); + } + + @Override + public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + super.onPostTick(aBaseMetaTileEntity, aTick); + + if (aTick % 20 == 0) { + + // Default to cooling by 2% + float heatMod = -2; + + // If the machine is running, heat by 5% x 0.90 ^ (Coil Tier) + // Cupronickel is 0, so base will be 5% increase + if (this.maxProgresstime() != 0) { + heatMod = (float) (5 * Math.pow(0.9, coilTier)); + } + + heat = MathUtils.clamp(heat + heatMod, 0, 100); + + if ((cooling && heat <= 0) || (!cooling && heat >= 100)) { + cooling = !cooling; + } + } + + // Update all the sensors + for (GT_MetaTileEntity_HeatSensor hatch : sensorHatches) { + hatch.updateRedstoneOutput(heat); + } + + } + + public int getMaxParallelRecipes() { + return cooling ? GT_Utility.getTier(this.getMaxInputVoltage()) + : (4 * GT_Utility.getTier(this.getMaxInputVoltage())); + } + + @Override + public RecipeMap<?> getRecipeMap() { + return RecipeMaps.compressorRecipes; + } + + @Override + public int getMaxEfficiency(ItemStack aStack) { + return 10000; + } + + @Override + public int getDamageToComponent(ItemStack aStack) { + return 0; + } + + @Override + public boolean explodesOnComponentBreak(ItemStack aStack) { + return false; + } + + @Override + public boolean supportsVoidProtection() { + return true; + } + + @Override + public boolean supportsBatchMode() { + return true; + } + + @Override + public boolean supportsInputSeparation() { + return true; + } + + @Override + public boolean supportsSingleRecipeLocking() { + return true; + } + + public HeatingCoilLevel getCoilLevel() { + return heatLevel; + } + + public void setCoilLevel(HeatingCoilLevel aCoilLevel) { + heatLevel = aCoilLevel; + coilTier = aCoilLevel.getTier(); + } + + public boolean addSensorHatchToMachineList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) { + if (aTileEntity == null) return false; + IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity(); + if (aMetaTileEntity instanceof GT_MetaTileEntity_HeatSensor sensor) { + sensor.updateTexture(aBaseCasingIndex); + return this.sensorHatches.add(sensor); + } + return false; + } + + private enum SpecialHatchElement implements IHatchElement<GT_MetaTileEntity_HIPCompressor> { + + HeatSensor(GT_MetaTileEntity_HIPCompressor::addSensorHatchToMachineList, GT_MetaTileEntity_HeatSensor.class) { + + @Override + public long count(GT_MetaTileEntity_HIPCompressor gtMetaTileEntityHIPCompressor) { + return gtMetaTileEntityHIPCompressor.sensorHatches.size(); + } + }; + + private final List<Class<? extends IMetaTileEntity>> mteClasses; + private final IGT_HatchAdder<GT_MetaTileEntity_HIPCompressor> adder; + + @SafeVarargs + SpecialHatchElement(IGT_HatchAdder<GT_MetaTileEntity_HIPCompressor> adder, + Class<? extends IMetaTileEntity>... mteClasses) { + this.mteClasses = Collections.unmodifiableList(Arrays.asList(mteClasses)); + this.adder = adder; + } + + @Override + public List<? extends Class<? extends IMetaTileEntity>> mteClasses() { + return mteClasses; + } + + public IGT_HatchAdder<? super GT_MetaTileEntity_HIPCompressor> adder() { + return adder; + } + } +} diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_HeatSensor.java b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_HeatSensor.java new file mode 100644 index 0000000000..e4721428fc --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_HeatSensor.java @@ -0,0 +1,188 @@ +package gregtech.common.tileentities.machines.multi.compressor; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.StatCollector; +import net.minecraftforge.common.util.ForgeDirection; + +import com.gtnewhorizons.modularui.api.math.Alignment; +import com.gtnewhorizons.modularui.api.math.Color; +import com.gtnewhorizons.modularui.api.screen.ModularWindow; +import com.gtnewhorizons.modularui.api.screen.UIBuildContext; +import com.gtnewhorizons.modularui.common.widget.TextWidget; +import com.gtnewhorizons.modularui.common.widget.textfield.NumericWidget; + +import gregtech.api.enums.Textures; +import gregtech.api.gui.modularui.GT_UIInfos; +import gregtech.api.gui.modularui.GT_UITextures; +import gregtech.api.interfaces.IIconContainer; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch; +import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_Utility; +import gregtech.common.gui.modularui.widget.CoverCycleButtonWidget; + +public class GT_MetaTileEntity_HeatSensor extends GT_MetaTileEntity_Hatch { + + protected float threshold = 0; + protected boolean inverted = false; + private boolean isOn = false; + + private static final IIconContainer textureFont = Textures.BlockIcons.OVERLAY_HATCH_BLACKHOLE; + private static final IIconContainer textureFont_Glow = Textures.BlockIcons.OVERLAY_HATCH_BLACKHOLE_GLOW; + + public GT_MetaTileEntity_HeatSensor(int aID, String aName, String aNameRegional, int aTier) { + super(aID, aName, aNameRegional, aTier, 0, "Reads heat from HIP Unit."); + } + + public GT_MetaTileEntity_HeatSensor(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) { + super(aName, aTier, 0, aDescription, aTextures); + } + + @Override + public boolean isValidSlot(int aIndex) { + return false; + } + + @Override + public boolean isSimpleMachine() { + return true; + } + + @Override + public boolean isFacingValid(ForgeDirection facing) { + return true; + } + + @Override + public boolean isAccessAllowed(EntityPlayer aPlayer) { + return true; + } + + @Override + public boolean allowGeneralRedstoneOutput() { + return true; + } + + @Override + public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection Side, + ItemStack aStack) { + return false; + } + + @Override + public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, ForgeDirection side, + ItemStack aStack) { + return false; + } + + @Override + public void initDefaultModes(NBTTagCompound aNBT) { + getBaseMetaTileEntity().setActive(true); + } + + @Override + public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer, ForgeDirection side, + float aX, float aY, float aZ) { + GT_UIInfos.openGTTileEntityUI(aBaseMetaTileEntity, aPlayer); + return true; + } + + @Override + public String[] getDescription() { + return new String[] { "Reads heat of Hot Isostatic Pressurization Unit.", + "Right click to open the GUI and change settings." }; + } + + @Override + public void loadNBTData(NBTTagCompound aNBT) { + threshold = aNBT.getFloat("mThreshold"); + inverted = aNBT.getBoolean("mInverted"); + super.loadNBTData(aNBT); + } + + @Override + public void saveNBTData(NBTTagCompound aNBT) { + aNBT.setFloat("mThreshold", threshold); + aNBT.setBoolean("mInverted", inverted); + super.saveNBTData(aNBT); + } + + /** + * Updates redstone output strength based on the heat of the HIP unit. + */ + public void updateRedstoneOutput(float heat) { + isOn = (heat > threshold) ^ inverted; + } + + @Override + public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + if (isOn) { + for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { + aBaseMetaTileEntity.setStrongOutputRedstoneSignal(side, (byte) 15); + } + } else { + for (final ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) { + aBaseMetaTileEntity.setStrongOutputRedstoneSignal(side, (byte) 0); + } + } + super.onPostTick(aBaseMetaTileEntity, aTick); + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_HeatSensor(mName, mTier, mDescriptionArray, mTextures); + } + + @Override + public ITexture[] getTexturesActive(ITexture aBaseTexture) { + return new ITexture[] { aBaseTexture, TextureFactory.of(textureFont), TextureFactory.builder() + .addIcon(textureFont_Glow) + .glow() + .build() }; + } + + @Override + public ITexture[] getTexturesInactive(ITexture aBaseTexture) { + return new ITexture[] { aBaseTexture, TextureFactory.of(textureFont) }; + } + + public void addUIWidgets(ModularWindow.Builder builder, UIBuildContext buildContext) { + final String INVERTED = GT_Utility.trans("INVERTED", "Inverted"); + final String NORMAL = GT_Utility.trans("NORMAL", "Normal"); + + builder.widget( + new CoverCycleButtonWidget().setToggle(() -> inverted, (val) -> inverted = val) + .setTextureGetter( + (state) -> state == 1 ? GT_UITextures.OVERLAY_BUTTON_REDSTONE_ON + : GT_UITextures.OVERLAY_BUTTON_REDSTONE_OFF) + .addTooltip(0, NORMAL) + .addTooltip(1, INVERTED) + .setPos(10, 8)) + .widget( + new TextWidget().setStringSupplier(() -> inverted ? INVERTED : NORMAL) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setTextAlignment(Alignment.CenterLeft) + .setPos(28, 12)) + .widget( + new NumericWidget().setBounds(0, 100) + .setGetter(() -> (double) threshold) + .setSetter((value) -> threshold = (float) value) + .setScrollValues(0.1, 0.01, 1.0) + .setMaximumFractionDigits(2) + .setTextColor(Color.WHITE.dark(1)) + .setTextAlignment(Alignment.CenterLeft) + .setFocusOnGuiOpen(true) + .setBackground(GT_UITextures.BACKGROUND_TEXT_FIELD.withOffset(-1, -1, 2, 2)) + .setPos(10, 28) + .setSize(77, 12)) + .widget( + new TextWidget(StatCollector.translateToLocal("GT5U.gui.text.heat_sensor")) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setTextAlignment(Alignment.CenterLeft) + .setPos(90, 30)); + } +} diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_IndustrialCompressor.java b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_IndustrialCompressor.java new file mode 100644 index 0000000000..489841c5d4 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_IndustrialCompressor.java @@ -0,0 +1,244 @@ +package gregtech.common.tileentities.machines.multi.compressor; + +import static com.gtnewhorizon.structurelib.structure.StructureUtility.*; +import static gregtech.api.enums.GT_HatchElement.*; +import static gregtech.api.enums.GT_Values.AuthorFourIsTheNumber; +import static gregtech.api.enums.GT_Values.Ollie; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW; +import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.ForgeDirection; + +import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; +import com.gtnewhorizon.structurelib.structure.IStructureDefinition; +import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; +import com.gtnewhorizon.structurelib.structure.StructureDefinition; + +import gregtech.api.GregTech_API; +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.logic.ProcessingLogic; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase; +import gregtech.api.multitileentity.multiblock.casing.Glasses; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; +import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.api.util.GT_Utility; +import gregtech.common.blocks.GT_Block_Casings10; + +public class GT_MetaTileEntity_IndustrialCompressor + extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<GT_MetaTileEntity_IndustrialCompressor> + implements ISurvivalConstructable { + + private static final String STRUCTURE_PIECE_MAIN = "main"; + private static final IStructureDefinition<GT_MetaTileEntity_IndustrialCompressor> STRUCTURE_DEFINITION = StructureDefinition + .<GT_MetaTileEntity_IndustrialCompressor>builder() + .addShape( + STRUCTURE_PIECE_MAIN, + // spotless:off + transpose(new String[][]{ + {" "," DDD "," DDDDD "," DDDDD "," DDDDD "," DDD "," "}, + {" BBB "," BBBBB ","BBBBBBB","BBBBBBB","BBBBBBB"," BBBBB "," BBB "}, + {" DDD "," B B ","B B","B B","B B"," B B "," DDD "}, + {" DAD "," B B ","C C","C C","C C"," B B "," DAD "}, + {" DAD "," B B ","C C","C C","C C"," B B "," DAD "}, + {" DAD "," B B ","C C","C C","C C"," B B "," DAD "}, + {" DDD "," B B ","B B","B B","B B"," B B "," DDD "}, + {" B~B "," BBBBB ","BBBBBBB","BBBBBBB","BBBBBBB"," BBBBB "," BBB "} + })) + //spotless:on + .addElement( + 'C', + buildHatchAdder(GT_MetaTileEntity_IndustrialCompressor.class).atLeast(InputBus, OutputBus) + .casingIndex(((GT_Block_Casings10) GregTech_API.sBlockCasings10).getTextureIndex(5)) + .dot(1) + .buildAndChain( + onElementPass( + GT_MetaTileEntity_IndustrialCompressor::onCasingAdded, + ofBlock(GregTech_API.sBlockCasings10, 5)))) + .addElement( + 'B', + buildHatchAdder(GT_MetaTileEntity_IndustrialCompressor.class).atLeast(Maintenance, Energy) + .casingIndex(((GT_Block_Casings10) GregTech_API.sBlockCasings10).getTextureIndex(4)) + .dot(1) + .buildAndChain( + onElementPass( + GT_MetaTileEntity_IndustrialCompressor::onCasingAdded, + ofBlock(GregTech_API.sBlockCasings10, 4)))) + .addElement('A', Glasses.chainAllGlasses()) + .addElement('D', ofBlock(GregTech_API.sBlockCasings10, 5)) + .build(); + + public GT_MetaTileEntity_IndustrialCompressor(final int aID, final String aName, final String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public GT_MetaTileEntity_IndustrialCompressor(String aName) { + super(aName); + } + + @Override + public IStructureDefinition<GT_MetaTileEntity_IndustrialCompressor> getStructureDefinition() { + return STRUCTURE_DEFINITION; + } + + @Override + public boolean isCorrectMachinePart(ItemStack aStack) { + return true; + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_IndustrialCompressor(this.mName); + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity baseMetaTileEntity, ForgeDirection side, ForgeDirection aFacing, + int colorIndex, boolean aActive, boolean redstoneLevel) { + ITexture[] rTexture; + if (side == aFacing) { + if (aActive) { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 4)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW) + .extFacing() + .glow() + .build() }; + } else { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 4)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW) + .extFacing() + .glow() + .build() }; + } + } else { + rTexture = new ITexture[] { Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 4)) }; + } + return rTexture; + } + + @Override + protected GT_Multiblock_Tooltip_Builder createTooltip() { + GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); + tt.addMachineType("Compressor") + .addInfo("Controller Block for the Large Electric Compressor") + .addInfo("100% faster than singleblock machines of the same voltage") + .addInfo("Only uses 90% of the EU/t normally required") + .addInfo("Gains 2 parallels per voltage tier") + .addInfo(AuthorFourIsTheNumber + EnumChatFormatting.RESET + " & " + Ollie) + .addSeparator() + .beginStructureBlock(7, 5, 7, true) + .addController("Front Center") + .addCasingInfoMin("Electric Compressor Casing", 95, false) + .addCasingInfoMin("Compressor Pipe Casing", 45, false) + .addCasingInfoExactly("EV+ Glass", 6, false) + .addInputBus("Pipe Casings on Side", 2) + .addOutputBus("Pipe Casings on Side", 2) + .addEnergyHatch("Any Electric Compressor Casing", 1) + .addMaintenanceHatch("Any Electric Compressor Casing", 1) + .toolTipFinisher("GregTech"); + return tt; + } + + @Override + public void construct(ItemStack stackSize, boolean hintsOnly) { + buildPiece(STRUCTURE_PIECE_MAIN, stackSize, hintsOnly, 3, 7, 0); + } + + @Override + public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) { + if (mMachine) return -1; + return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 3, 7, 0, elementBudget, env, false, true); + } + + private int mCasingAmount; + + private void onCasingAdded() { + mCasingAmount++; + } + + @Override + public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + mCasingAmount = 0; + return checkPiece(STRUCTURE_PIECE_MAIN, 3, 7, 0) && mCasingAmount >= 95; + } + + @Override + protected void setProcessingLogicPower(ProcessingLogic logic) { + logic.setAvailableVoltage(GT_Utility.roundUpVoltage(this.getMaxInputVoltage())); + logic.setAvailableAmperage(1L); + } + + @Override + protected ProcessingLogic createProcessingLogic() { + return new ProcessingLogic().setSpeedBonus(1F / 2F) + .setMaxParallelSupplier(this::getMaxParallelRecipes) + .setEuModifier(0.9F); + } + + public int getMaxParallelRecipes() { + return (2 * GT_Utility.getTier(this.getMaxInputVoltage())); + } + + @Override + public RecipeMap<?> getRecipeMap() { + return RecipeMaps.compressorRecipes; + } + + @Override + public int getMaxEfficiency(ItemStack aStack) { + return 10000; + } + + @Override + public int getDamageToComponent(ItemStack aStack) { + return 0; + } + + @Override + public boolean explodesOnComponentBreak(ItemStack aStack) { + return false; + } + + @Override + public boolean supportsVoidProtection() { + return true; + } + + @Override + public boolean supportsBatchMode() { + return true; + } + + @Override + public boolean supportsInputSeparation() { + return true; + } + + @Override + public boolean supportsSingleRecipeLocking() { + return true; + } +} diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_NeutroniumCompressor.java b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_NeutroniumCompressor.java new file mode 100644 index 0000000000..90406bcb50 --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/GT_MetaTileEntity_NeutroniumCompressor.java @@ -0,0 +1,261 @@ +package gregtech.common.tileentities.machines.multi.compressor; + +import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock; +import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass; +import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose; +import static gregtech.api.enums.GT_HatchElement.Energy; +import static gregtech.api.enums.GT_HatchElement.InputBus; +import static gregtech.api.enums.GT_HatchElement.Maintenance; +import static gregtech.api.enums.GT_HatchElement.OutputBus; +import static gregtech.api.enums.GT_Values.AuthorFourIsTheNumber; +import static gregtech.api.enums.GT_Values.Ollie; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW; +import static gregtech.api.enums.Textures.BlockIcons.OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW; +import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; +import static gregtech.api.util.GT_StructureUtility.ofFrame; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.common.util.ForgeDirection; + +import org.jetbrains.annotations.NotNull; + +import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; +import com.gtnewhorizon.structurelib.structure.IStructureDefinition; +import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; +import com.gtnewhorizon.structurelib.structure.StructureDefinition; + +import gregtech.api.GregTech_API; +import gregtech.api.enums.Materials; +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.logic.ProcessingLogic; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_ExtendedPowerMultiBlockBase; +import gregtech.api.multitileentity.multiblock.casing.Glasses; +import gregtech.api.recipe.RecipeMap; +import gregtech.api.recipe.RecipeMaps; +import gregtech.api.recipe.check.CheckRecipeResult; +import gregtech.api.recipe.check.CheckRecipeResultRegistry; +import gregtech.api.render.TextureFactory; +import gregtech.api.util.GT_Multiblock_Tooltip_Builder; +import gregtech.api.util.GT_Recipe; +import gregtech.api.util.GT_Utility; +import gregtech.common.blocks.GT_Block_Casings10; + +public class GT_MetaTileEntity_NeutroniumCompressor + extends GT_MetaTileEntity_ExtendedPowerMultiBlockBase<GT_MetaTileEntity_NeutroniumCompressor> + implements ISurvivalConstructable { + + private static final String STRUCTURE_PIECE_MAIN = "main"; + private static final IStructureDefinition<GT_MetaTileEntity_NeutroniumCompressor> STRUCTURE_DEFINITION = StructureDefinition + .<GT_MetaTileEntity_NeutroniumCompressor>builder() + .addShape( + STRUCTURE_PIECE_MAIN, + // spotless:off + transpose(new String[][]{ + {" CEEEEEC "," CE EC ","CE EC","E E","E E","E E","E E","E E","CE EC"," CE EC "," CEEEEEC "}, + {" CE EC ","C BBBBB C","E BBBBBBB E"," BBCCCCCBB "," BBCBBBCBB "," BBCCCCCBB "," BBCBBBCBB "," BBCCCCCBB ","E BBBBBBB E","C BBBBB C"," CE EC "}, + {"CE EC","E BBBBBBB E"," B B "," D D "," B B "," B B "," D D "," B B "," B B ","E BDDDBDB E","CE EC"}, + {"E E"," BBAAAAABB "," B B "," D D "," B B "," D D "," D D "," B B "," B B "," BBDBBBDBB ","E E"}, + {"E E"," BBAAAAABB "," B B "," D D "," B B "," B B "," D D "," D D "," D D "," BDDBDDDDB ","E E"}, + {"E E"," BBAAAAABB "," D D "," D D "," D D "," B B "," B B "," B B "," B B "," BBDBBBBDB ","E E"}, + {"E E"," BBAAAAABB "," B B "," B B "," D D "," B B "," B B "," D D "," B B "," BBDBBDBBB ","E E"}, + {"E E"," BBAAAAABB "," B B "," D D "," D D "," B B "," D D "," D D "," D D "," BBBBBDDDB ","E E"}, + {"CE EC","E BBBBBBB E"," B B "," D D "," B B "," B B "," D D "," B B "," B B ","E BDDBBBB E","CE EC"}, + {" CE EC ","C BB~BB C","E BBBBBBB E"," BBBBBBBBB "," BBBBBBBBB "," BBBBBBBBB "," BBBBBBBBB "," BBBBBBBBB ","E BBBBBBB E","C BBBBB C"," CE EC "}, + {" CEEEEEC "," CE EC ","CE EC","E E","E E","E E","E E","E E","CE EC"," CE EC "," CEEEEEC "} + })) + //spotless:on + .addElement('A', Glasses.chainAllGlasses()) + .addElement( + 'B', + buildHatchAdder(GT_MetaTileEntity_NeutroniumCompressor.class) + .atLeast(InputBus, OutputBus, Maintenance, Energy) + .casingIndex(((GT_Block_Casings10) GregTech_API.sBlockCasings10).getTextureIndex(6)) + .dot(1) + .buildAndChain( + onElementPass( + GT_MetaTileEntity_NeutroniumCompressor::onCasingAdded, + ofBlock(GregTech_API.sBlockCasings10, 6)))) + .addElement('C', ofBlock(GregTech_API.sBlockCasings10, 8)) + .addElement('D', ofBlock(GregTech_API.sBlockCasings10, 7)) + .addElement('E', ofFrame(Materials.NaquadahAlloy)) + .build(); + + public GT_MetaTileEntity_NeutroniumCompressor(final int aID, final String aName, final String aNameRegional) { + super(aID, aName, aNameRegional); + } + + public GT_MetaTileEntity_NeutroniumCompressor(String aName) { + super(aName); + } + + @Override + public IStructureDefinition<GT_MetaTileEntity_NeutroniumCompressor> getStructureDefinition() { + return STRUCTURE_DEFINITION; + } + + @Override + public boolean isCorrectMachinePart(ItemStack aStack) { + return true; + } + + @Override + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_NeutroniumCompressor(this.mName); + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity baseMetaTileEntity, ForgeDirection side, ForgeDirection aFacing, + int colorIndex, boolean aActive, boolean redstoneLevel) { + ITexture[] rTexture; + if (side == aFacing) { + if (aActive) { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 6)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_ACTIVE_GLOW) + .extFacing() + .glow() + .build() }; + } else { + rTexture = new ITexture[] { + Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 6)), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR) + .extFacing() + .build(), + TextureFactory.builder() + .addIcon(OVERLAY_FRONT_MULTI_COMPRESSOR_GLOW) + .extFacing() + .glow() + .build() }; + } + } else { + rTexture = new ITexture[] { Textures.BlockIcons + .getCasingTextureForId(GT_Utility.getCasingTextureIndex(GregTech_API.sBlockCasings10, 6)) }; + } + return rTexture; + } + + @Override + protected GT_Multiblock_Tooltip_Builder createTooltip() { + GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder(); + tt.addMachineType("Neutronium Compressor") + .addInfo("Controller Block for the Neutronium Compressor") + .addInfo("Has a static 8 parallels") + .addInfo("Capable of compressing matter into " + EnumChatFormatting.GOLD + "singularities") + .addInfo("More advanced singularities will require even stronger compression...") + .addInfo(AuthorFourIsTheNumber + EnumChatFormatting.RESET + " & " + Ollie) + .addSeparator() + .beginStructureBlock(11, 11, 11, true) + .addController("Front Center") + .addCasingInfoMin("Neutronium Casing", 220, false) + .addCasingInfoExactly("Active Neutronium Casing", 63, false) + .addCasingInfoExactly("Any Glass", 25, false) + .addCasingInfoExactly("Naquadah Alloy Frame Box", 108, false) + .addCasingInfoExactly("Neutronium Stabilization Casing", 67, false) + .addInputBus("Any Neutronium Casing", 1) + .addOutputBus("Any Neutronium Casing", 1) + .addEnergyHatch("Any Neutronium Casing", 1) + .addMaintenanceHatch("Any Neutronium Casing", 1) + .toolTipFinisher("GregTech"); + return tt; + } + + @Override + public void construct(ItemStack stackSize, boolean hintsOnly) { + buildPiece(STRUCTURE_PIECE_MAIN, stackSize, hintsOnly, 5, 9, 1); + } + + @Override + public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBuildEnvironment env) { + if (mMachine) return -1; + return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 5, 9, 1, elementBudget, env, false, true); + } + + private int mCasingAmount; + + private void onCasingAdded() { + mCasingAmount++; + } + + @Override + public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) { + mCasingAmount = 0; + + return (checkPiece(STRUCTURE_PIECE_MAIN, 5, 9, 1)) && mCasingAmount >= 220; + } + + @Override + protected void setProcessingLogicPower(ProcessingLogic logic) { + logic.setAvailableVoltage(GT_Utility.roundUpVoltage(this.getMaxInputVoltage())); + logic.setAvailableAmperage(1L); + } + + @Override + protected ProcessingLogic createProcessingLogic() { + + return new ProcessingLogic() { + + @NotNull + @Override + protected CheckRecipeResult validateRecipe(@NotNull GT_Recipe recipe) { + if (recipe.mSpecialValue > 0) { + return CheckRecipeResultRegistry.NO_BLACK_HOLE; + } + return super.validateRecipe(recipe); + } + }.setMaxParallel(8); + } + + @Override + public RecipeMap<?> getRecipeMap() { + return RecipeMaps.neutroniumCompressorRecipes; + } + + @Override + public int getMaxEfficiency(ItemStack aStack) { + return 10000; + } + + @Override + public int getDamageToComponent(ItemStack aStack) { + return 0; + } + + @Override + public boolean explodesOnComponentBreak(ItemStack aStack) { + return false; + } + + @Override + public boolean supportsVoidProtection() { + return true; + } + + @Override + public boolean supportsBatchMode() { + return true; + } + + @Override + public boolean supportsInputSeparation() { + return true; + } + + @Override + public boolean supportsSingleRecipeLocking() { + return true; + } +} diff --git a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java index 8ad2a37ba2..856ddf2f82 100644 --- a/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java +++ b/src/main/java/gregtech/loaders/preload/GT_Loader_MetaTileEntities.java @@ -1,7 +1,892 @@ package gregtech.loaders.preload; import static gregtech.api.enums.MetaTileEntityIDs.*; +import static gregtech.api.enums.MetaTileEntityIDs.ADVANCED_DATA_ACCESS_HATCH; +import static gregtech.api.enums.MetaTileEntityIDs.ADVANCED_DEBUG_STRUCTURE_WRITTER; +import static gregtech.api.enums.MetaTileEntityIDs.ADVANCED_SEISMIC_PROSPECTOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.ADVANCED_SEISMIC_PROSPECTOR_HV; +import static gregtech.api.enums.MetaTileEntityIDs.ADVANCED_SEISMIC_PROSPECTOR_LV; +import static gregtech.api.enums.MetaTileEntityIDs.ADVANCED_SEISMIC_PROSPECTOR_MV; +import static gregtech.api.enums.MetaTileEntityIDs.ALLOY_SMELTER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ALLOY_SMELTER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ALLOY_SMELTER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ALLOY_SMELTER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ALLOY_SMELTER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ALLOY_SMELTER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ALLOY_SMELTER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.ARC_FURNACE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ARC_FURNACE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ARC_FURNACE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ARC_FURNACE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ARC_FURNACE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ARC_FURNACE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ARC_FURNACE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.ASSEMBLING_LINE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.ASSEMBLING_MACHINE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ASSEMBLING_MACHINE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ASSEMBLING_MACHINE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ASSEMBLING_MACHINE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ASSEMBLING_MACHINE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ASSEMBLING_MACHINE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ASSEMBLING_MACHINE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.AUTOCLAVE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.AUTOCLAVE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.AUTOCLAVE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.AUTOCLAVE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.AUTOCLAVE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.AUTOCLAVE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.AUTOCLAVE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.AUTOMATABLE_DATA_ACCESS_HATCH; +import static gregtech.api.enums.MetaTileEntityIDs.AUTO_MAINTENANCE_HATCH; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_EV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_HV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_IV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_LV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_MV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_UV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_1_BY_1_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_EV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_HV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_IV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_LV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_MV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_UV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_2_BY_2_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_EV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_HV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_IV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_LV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_MV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_UV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_3_BY_3_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_EV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_HV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_IV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_LV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_MV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_UV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_BUFFER_4_BY_4_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_4_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_4_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_4_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_4_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_EV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_HV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_IV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_LV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_MV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_UV; +import static gregtech.api.enums.MetaTileEntityIDs.BATTERY_CHARGER_4_BY_4_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.BENDING_MACHINE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.BENDING_MACHINE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.BENDING_MACHINE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.BENDING_MACHINE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.BENDING_MACHINE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.BENDING_MACHINE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.BENDING_MACHINE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.BETTER_JUKEBOX_EV; +import static gregtech.api.enums.MetaTileEntityIDs.BETTER_JUKEBOX_HV; +import static gregtech.api.enums.MetaTileEntityIDs.BETTER_JUKEBOX_IV; +import static gregtech.api.enums.MetaTileEntityIDs.BETTER_JUKEBOX_LV; +import static gregtech.api.enums.MetaTileEntityIDs.BETTER_JUKEBOX_MV; +import static gregtech.api.enums.MetaTileEntityIDs.BLACKHOLE_COMPRESSOR_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_EV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_HV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_IV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_LV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_MV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_UV; +import static gregtech.api.enums.MetaTileEntityIDs.BREWERY_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.BRICKED_BLAST_FURNACE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.CANNING_MACHINE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.CANNING_MACHINE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.CANNING_MACHINE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.CANNING_MACHINE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.CANNING_MACHINE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.CANNING_MACHINE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.CANNING_MACHINE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.CENTRIFUGE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.CENTRIFUGE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.CENTRIFUGE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.CENTRIFUGE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.CENTRIFUGE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.CENTRIFUGE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.CENTRIFUGE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.CHARCOAL_PILE_IGNITER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_BATH_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_BATH_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_BATH_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_BATH_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_BATH_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_BATH_UV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_BATH_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_REACTOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_REACTOR_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_REACTOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_REACTOR_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_REACTOR_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_REACTOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEMICAL_REACTOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.CHEST_BUFFER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.CIRCUIT_ASSEMBLER_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.CIRCUIT_ASSEMBLER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.CIRCUIT_ASSEMBLER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.CIRCUIT_ASSEMBLER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.CIRCUIT_ASSEMBLER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.CIRCUIT_ASSEMBLER_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.CLEANROOM_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.COMBUSTION_ENGINE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.COMBUSTION_GENERATOR_HV; +import static gregtech.api.enums.MetaTileEntityIDs.COMBUSTION_GENERATOR_LV; +import static gregtech.api.enums.MetaTileEntityIDs.COMBUSTION_GENERATOR_MV; +import static gregtech.api.enums.MetaTileEntityIDs.COMPRESSOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.COMPRESSOR_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.COMPRESSOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.COMPRESSOR_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.COMPRESSOR_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.COMPRESSOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.COMPRESSOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.CONCRETE_BACKFILLER_II_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.CONCRETE_BACKFILLER_I_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.CRAFTING_INPUT_ME; +import static gregtech.api.enums.MetaTileEntityIDs.CRAFTING_INPUT_ME_BUS; +import static gregtech.api.enums.MetaTileEntityIDs.CRAFTING_INPUT_SLAVE; +import static gregtech.api.enums.MetaTileEntityIDs.CUTTING_MACHINE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.CUTTING_MACHINE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.CUTTING_MACHINE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.CUTTING_MACHINE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.CUTTING_MACHINE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.CUTTING_MACHINE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.CUTTING_MACHINE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.DATA_ACCESS_HATCH; +import static gregtech.api.enums.MetaTileEntityIDs.DISTILLATION_TOWER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.DISTILLERY_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.DISTILLERY_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.DISTILLERY_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.DISTILLERY_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.DISTILLERY_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.DISTILLERY_UV; +import static gregtech.api.enums.MetaTileEntityIDs.DISTILLERY_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.DTPF_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_EV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_HV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_IV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_LV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_MV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_UV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.DYNAMO_HATCH_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.DroneDownLink; +import static gregtech.api.enums.MetaTileEntityIDs.Drone_Centre; +import static gregtech.api.enums.MetaTileEntityIDs.EBF_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTRIC_FURNACE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTRIC_FURNACE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTRIC_FURNACE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTRIC_FURNACE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTRIC_FURNACE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTRIC_FURNACE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTRIC_FURNACE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROLYZER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROLYZER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROLYZER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROLYZER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROLYZER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROLYZER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROLYZER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROMAGNETIC_SEPARATOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROMAGNETIC_SEPARATOR_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROMAGNETIC_SEPARATOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROMAGNETIC_SEPARATOR_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROMAGNETIC_SEPARATOR_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROMAGNETIC_SEPARATOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ELECTROMAGNETIC_SEPARATOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_EV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_HV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_IV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_LV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_MV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.ENERGY_HATCH_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRACTOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRACTOR_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRACTOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRACTOR_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRACTOR_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRACTOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRACTOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.EXTREME_COMBUSTION_ENGINE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRUDER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRUDER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRUDER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRUDER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRUDER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRUDER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.EXTRUDER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.FERMENTER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.FERMENTER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.FERMENTER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.FERMENTER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.FERMENTER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.FERMENTER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.FERMENTER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_CANNER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_CANNER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_CANNER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_CANNER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_CANNER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_CANNER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_CANNER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_EXTRACTOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_EXTRACTOR_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_EXTRACTOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_EXTRACTOR_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_EXTRACTOR_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_EXTRACTOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_EXTRACTOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_HEATER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_HEATER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_HEATER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_HEATER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_HEATER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_HEATER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_HEATER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_SOLIDIFIER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_SOLIDIFIER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_SOLIDIFIER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_SOLIDIFIER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_SOLIDIFIER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_SOLIDIFIER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.FLUID_SOLIDIFIER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.FORGE_HAMMER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.FORGE_HAMMER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.FORGE_HAMMER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.FORGE_HAMMER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.FORGE_HAMMER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.FORGE_HAMMER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.FORGE_HAMMER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.FORMING_PRESS_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.FORMING_PRESS_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.FORMING_PRESS_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.FORMING_PRESS_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.FORMING_PRESS_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.FORMING_PRESS_UV; +import static gregtech.api.enums.MetaTileEntityIDs.FORMING_PRESS_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.FUSION_CONTROLLER_MKI; +import static gregtech.api.enums.MetaTileEntityIDs.FUSION_CONTROLLER_MKII; +import static gregtech.api.enums.MetaTileEntityIDs.FUSION_CONTROLLER_MKIII; +import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_EV; +import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_HV; +import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_IV; +import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_LV; +import static gregtech.api.enums.MetaTileEntityIDs.GAS_TURBINE_MV; +import static gregtech.api.enums.MetaTileEntityIDs.HATCH_DEGASIFIER_CONTROL; +import static gregtech.api.enums.MetaTileEntityIDs.HATCH_LENS_HOUSING; +import static gregtech.api.enums.MetaTileEntityIDs.HATCH_LENS_INDICATOR; +import static gregtech.api.enums.MetaTileEntityIDs.HATCH_PH_SENSOR; +import static gregtech.api.enums.MetaTileEntityIDs.HEAT_DETECTOR_HATCH; +import static gregtech.api.enums.MetaTileEntityIDs.HIGH_AMP_TRANSFORMER_MAX_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.HIGH_AMP_TRANSFORMER_UEV_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.HIGH_AMP_TRANSFORMER_UIV_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.HIGH_AMP_TRANSFORMER_UMV_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.HIGH_AMP_TRANSFORMER_UXV_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.HIGH_PRESSURE_COAL_BOILER; +import static gregtech.api.enums.MetaTileEntityIDs.HIGH_PRESSURE_LAVA_BOILER; +import static gregtech.api.enums.MetaTileEntityIDs.HIGH_PRESSURE_SOLAR_BOILER; +import static gregtech.api.enums.MetaTileEntityIDs.HIP_COMPRESSOR_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.HP_STEAM_ALLOY_SMELTER; +import static gregtech.api.enums.MetaTileEntityIDs.HP_STEAM_COMPRESSOR; +import static gregtech.api.enums.MetaTileEntityIDs.HP_STEAM_EXTRACTOR; +import static gregtech.api.enums.MetaTileEntityIDs.HP_STEAM_FORGE_HAMMER; +import static gregtech.api.enums.MetaTileEntityIDs.HP_STEAM_FURNACE; +import static gregtech.api.enums.MetaTileEntityIDs.HP_STEAM_MACERATOR; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_BRICKED_BRONZE; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_BRONZE; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_EV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_HV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_IV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_LV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_MV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_STEEL; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_UV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_WROUGHT_IRON; +import static gregtech.api.enums.MetaTileEntityIDs.HULL_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.IMPLOSION_COMPRESSOR_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.INDUSTRIAL_APIARY; +import static gregtech.api.enums.MetaTileEntityIDs.INDUSTRIAL_COMPRESSOR_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.INDUSTRIAL_ELECTROMAGNETIC_SEPARATOR_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.INDUSTRIAL_LASER_ENGRAVER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_EV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_HV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_IV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_LV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_ME; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_ME_ADVANCED; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_MV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_UV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_BUS_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_EV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_HV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_IV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_LV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_ME; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_ME_ADVANCED; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_MV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_UV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.INPUT_HATCH_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.INTEGRATED_ORE_FACTORY_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_HV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_IV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_LV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_MV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_DISTRIBUTOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ITEM_FILTER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_ADVANCED_GAS_TURBINE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_BRONZE_BOILER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_GAS_TURBINE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_HEAT_EXCHANGER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_HP_STEAM_TURBINE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_PLASMA_TURBINE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_STEAM_TURBINE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_STEEL_BOILER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_TITANIUM_BOILER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LARGE_TUNGSTENSTEEL_BOILER_CONTROLLER; import static gregtech.api.enums.MetaTileEntityIDs.LASER_ENGRAVER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.LATHE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.LATHE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.LATHE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.LATHE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.LATHE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.LATHE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.LATHE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.LCR_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.LIGHTNING_ROD_EV; +import static gregtech.api.enums.MetaTileEntityIDs.LIGHTNING_ROD_HV; +import static gregtech.api.enums.MetaTileEntityIDs.LIGHTNING_ROD_IV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.LOCKER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.LONG_DISTANCE_PIPELINE_FLUID; +import static gregtech.api.enums.MetaTileEntityIDs.LONG_DISTANCE_PIPELINE_ITEM; +import static gregtech.api.enums.MetaTileEntityIDs.MACERATOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MACERATOR_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.MACERATOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.MACERATOR_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.MACERATOR_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.MACERATOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MACERATOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MAGIC_ENERGY_ABSORBER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.MAGIC_ENERGY_ABSORBER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.MAGIC_ENERGY_ABSORBER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.MAGIC_ENERGY_ABSORBER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.MAGIC_ENERGY_CONVERTER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.MAGIC_ENERGY_CONVERTER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.MAGIC_ENERGY_CONVERTER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.MAG_HATCH; +import static gregtech.api.enums.MetaTileEntityIDs.MAINTENANCE_HATCH; +import static gregtech.api.enums.MetaTileEntityIDs.MASS_FABRICATOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.MASS_FABRICATOR_HV; +import static gregtech.api.enums.MetaTileEntityIDs.MASS_FABRICATOR_IV; +import static gregtech.api.enums.MetaTileEntityIDs.MASS_FABRICATOR_LV; +import static gregtech.api.enums.MetaTileEntityIDs.MASS_FABRICATOR_MV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_AMPLIFIER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_AMPLIFIER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_AMPLIFIER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_AMPLIFIER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_AMPLIFIER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_AMPLIFIER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_AMPLIFIER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_FABRICATOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_FABRICATOR_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_FABRICATOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_FABRICATOR_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_FABRICATOR_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_FABRICATOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_FABRICATOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_REPLICATOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_REPLICATOR_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_REPLICATOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_REPLICATOR_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_REPLICATOR_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_REPLICATOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MATTER_REPLICATOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_ENERGY_TRANSMITTER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_ENERGY_TRANSMITTER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_ENERGY_TRANSMITTER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_ENERGY_TRANSMITTER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_ENERGY_TRANSMITTER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_ENERGY_TRANSMITTER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MICROWAVE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MINER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.MINER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.MINER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.MIXER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MIXER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.MIXER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.MIXER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.MIXER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.MIXER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MIXER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MONSTER_REPELLATOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.MONSTER_REPELLATOR_HV; +import static gregtech.api.enums.MetaTileEntityIDs.MONSTER_REPELLATOR_IV; +import static gregtech.api.enums.MetaTileEntityIDs.MONSTER_REPELLATOR_LV; +import static gregtech.api.enums.MetaTileEntityIDs.MONSTER_REPELLATOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MONSTER_REPELLATOR_MV; +import static gregtech.api.enums.MetaTileEntityIDs.MONSTER_REPELLATOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MONSTER_REPELLATOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_EV; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_HV; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_IV; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_LV; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_MV; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_UV; +import static gregtech.api.enums.MetaTileEntityIDs.MUFFLER_HATCH_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.MULTIBLOCK_PUMP_INFINITE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.MULTIBLOCK_PUMP_MKI_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.MULTILOCK_PUMP_MKIII_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.MULTILOCK_PUMP_MKII_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.MULTILOCK_PUMP_MKIV_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.MULTI_CANNER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.MULTI_LATHE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.MULTI_SMELTER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.NANO_FORGE_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.NAQUADAH_REACTOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.NAQUADAH_REACTOR_IV; +import static gregtech.api.enums.MetaTileEntityIDs.NAQUADAH_REACTOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.NAQUADAH_REACTOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.NAQUADAH_REACTOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.NEUTRONIUM_COMPRESSOR_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.OIL_CRACKER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_DRILL_MKIII_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_DRILL_MKII_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_DRILL_MKIV_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_DRILL_MKI_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_WASHING_PLANT_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_WASHING_PLANT_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_WASHING_PLANT_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_WASHING_PLANT_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_WASHING_PLANT_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_WASHING_PLANT_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ORE_WASHING_PLANT_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_EV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_HV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_IV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_LV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_ME; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_MV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_UV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_BUS_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_EV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_HV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_IV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_LV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_ME; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_MV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_UV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.OUTPUT_HATCH_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.PACKAGER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.PACKAGER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.PACKAGER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.PACKAGER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.PACKAGER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.PACKAGER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.PACKAGER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.PACKAGER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.PCB_FACTORY_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_ARC_FURNACE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_ARC_FURNACE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_ARC_FURNACE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_ARC_FURNACE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_ARC_FURNACE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_ARC_FURNACE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_ARC_FURNACE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_GENERATOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_GENERATOR_IV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_GENERATOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_GENERATOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.PLASMA_GENERATOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.POLARIZER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.POLARIZER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.POLARIZER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.POLARIZER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.POLARIZER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.POLARIZER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.POLARIZER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.PRECISION_LASER_ENGRAVER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.PRECISION_LASER_ENGRAVER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.PRECISION_LASER_ENGRAVER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.PRECISION_LASER_ENGRAVER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.PRECISION_LASER_ENGRAVER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.PRECISION_LASER_ENGRAVER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.PRECISION_LASER_ENGRAVER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.PROCESSING_ARRAY_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.PUMP_EV; +import static gregtech.api.enums.MetaTileEntityIDs.PUMP_HV; +import static gregtech.api.enums.MetaTileEntityIDs.PUMP_IV; +import static gregtech.api.enums.MetaTileEntityIDs.PUMP_LV; +import static gregtech.api.enums.MetaTileEntityIDs.PUMP_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.PUMP_MV; +import static gregtech.api.enums.MetaTileEntityIDs.PUMP_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_PLANT_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_CLARIFIER; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_DEGASIFIER; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_FLOCCULATOR; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_OZONATION; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_PARTICLE_EXTRACTOR; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_PH_ADJUSTMENT; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_PLASMA_HEATER; +import static gregtech.api.enums.MetaTileEntityIDs.PURIFICATION_UNIT_UV_TREATMENT; +import static gregtech.api.enums.MetaTileEntityIDs.PYROLYSE_OVEN_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_EV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_IV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_UV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.QUADRUPLE_INPUT_HATCHES_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_CHEST_EV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_CHEST_HV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_CHEST_IV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_CHEST_LV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_CHEST_MV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_TANK_EV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_TANK_HV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_TANK_IV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_TANK_LV; +import static gregtech.api.enums.MetaTileEntityIDs.QUANTUM_TANK_MV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.RECIPE_FILTER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.RECYCLER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.RECYCLER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.RECYCLER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.RECYCLER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.RECYCLER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.RECYCLER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.RECYCLER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.REPLICATOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.REPLICATOR_HV; +import static gregtech.api.enums.MetaTileEntityIDs.REPLICATOR_IV; +import static gregtech.api.enums.MetaTileEntityIDs.REPLICATOR_LV; +import static gregtech.api.enums.MetaTileEntityIDs.REPLICATOR_MV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.ROCK_BREAKER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.SCANNER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.SIFTING_MACHINE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.SIFTING_MACHINE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.SIFTING_MACHINE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.SIFTING_MACHINE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.SIFTING_MACHINE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.SIFTING_MACHINE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.SIFTING_MACHINE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.SIMPLE_SOLAR_BOILER; +import static gregtech.api.enums.MetaTileEntityIDs.SLICING_MACHINE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.SLICING_MACHINE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.SLICING_MACHINE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.SLICING_MACHINE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.SLICING_MACHINE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.SLICING_MACHINE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.SLICING_MACHINE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.SMALL_COAL_BOILER; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_ALLOY_SMELTER; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_COMPRESSOR; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_EXTRACTOR; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_FORGE_HAMMER; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_FURNACE; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_MACERATOR; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_TURBINE_HV; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_TURBINE_LV; +import static gregtech.api.enums.MetaTileEntityIDs.STEAM_TURBINE_MV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_BUFFER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_CHEST_EV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_CHEST_HV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_CHEST_IV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_CHEST_LV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_CHEST_MV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_TANK_EV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_TANK_HV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_TANK_IV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_TANK_LV; +import static gregtech.api.enums.MetaTileEntityIDs.SUPER_TANK_MV; +import static gregtech.api.enums.MetaTileEntityIDs.TELEPORTER; +import static gregtech.api.enums.MetaTileEntityIDs.THERMAL_CENTRIFUGE_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.THERMAL_CENTRIFUGE_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.THERMAL_CENTRIFUGE_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.THERMAL_CENTRIFUGE_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.THERMAL_CENTRIFUGE_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.THERMAL_CENTRIFUGE_UV; +import static gregtech.api.enums.MetaTileEntityIDs.THERMAL_CENTRIFUGE_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.TRANSCENDENT_PLASMA_MIXER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.TRANSFORMER_MAX_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.TRANSFORMER_UEV_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.TRANSFORMER_UIV_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.TRANSFORMER_UMV_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.TRANSFORMER_UXV_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.TURBO_CHARGER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_EV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_HV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_IV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_LV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_MV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_UV; +import static gregtech.api.enums.MetaTileEntityIDs.TYPE_FILTER_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.VACUUM_FREEZER_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_HV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_IV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_LV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_MV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.VOLTAGE_REGULATOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_EV_HV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_HV_MV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_IV_EV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_LV_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_LuV_IV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_MAX_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_MV_LV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_UEV_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_UHV_UV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_UIV_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_UMV_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_UV_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_UXV_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.WET_TRANSFORMER_ZPM_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_EV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_HV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_IV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_LV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_MV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_UV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_DYNAMO_ENERGY_HATCH_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_EV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_HV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_IV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_LV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_MAX; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_MV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_UV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_UXV; +import static gregtech.api.enums.MetaTileEntityIDs.WIRELESS_HATCH_ENERGY_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.WIREMILL_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.WIREMILL_UEV; +import static gregtech.api.enums.MetaTileEntityIDs.WIREMILL_UHV; +import static gregtech.api.enums.MetaTileEntityIDs.WIREMILL_UIV; +import static gregtech.api.enums.MetaTileEntityIDs.WIREMILL_UMV; +import static gregtech.api.enums.MetaTileEntityIDs.WIREMILL_UV; +import static gregtech.api.enums.MetaTileEntityIDs.WIREMILL_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.WORLD_ACCELERATOR_EV; +import static gregtech.api.enums.MetaTileEntityIDs.WORLD_ACCELERATOR_HV; +import static gregtech.api.enums.MetaTileEntityIDs.WORLD_ACCELERATOR_IV; +import static gregtech.api.enums.MetaTileEntityIDs.WORLD_ACCELERATOR_LV; +import static gregtech.api.enums.MetaTileEntityIDs.WORLD_ACCELERATOR_LuV; +import static gregtech.api.enums.MetaTileEntityIDs.WORLD_ACCELERATOR_MV; +import static gregtech.api.enums.MetaTileEntityIDs.WORLD_ACCELERATOR_UV; +import static gregtech.api.enums.MetaTileEntityIDs.WORLD_ACCELERATOR_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.WORMHOLE_GENERATOR_CONTROLLER; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_EV_HV; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_HV_MV; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_IV_EV; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_LV_ULV; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_LuV_IV; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_MV_LV; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_UHV_UV; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_UV_ZPM; +import static gregtech.api.enums.MetaTileEntityIDs.transformer_ZPM_LuV; import static gregtech.api.enums.Mods.Forestry; import static gregtech.api.enums.Mods.NewHorizonsCoreMod; import static gregtech.api.recipe.RecipeMaps.alloySmelterRecipes; @@ -190,6 +1075,11 @@ import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_PyrolyseOve import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_TranscendentPlasmaMixer; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_VacuumFreezer; import gregtech.common.tileentities.machines.multi.GT_MetaTileEntity_WormholeGenerator; +import gregtech.common.tileentities.machines.multi.compressor.GT_MetaTileEntity_BlackHoleCompressor; +import gregtech.common.tileentities.machines.multi.compressor.GT_MetaTileEntity_HIPCompressor; +import gregtech.common.tileentities.machines.multi.compressor.GT_MetaTileEntity_HeatSensor; +import gregtech.common.tileentities.machines.multi.compressor.GT_MetaTileEntity_IndustrialCompressor; +import gregtech.common.tileentities.machines.multi.compressor.GT_MetaTileEntity_NeutroniumCompressor; import gregtech.common.tileentities.machines.multi.drone.GT_MetaTileEntity_DroneCentre; import gregtech.common.tileentities.machines.multi.drone.GT_MetaTileEntity_Hatch_DroneDownLink; import gregtech.common.tileentities.machines.multi.purification.GT_MetaTileEntity_Hatch_DegasifierControlHatch; @@ -714,7 +1604,6 @@ public class GT_Loader_MetaTileEntities implements Runnable { // TODO CHECK CIRC INDUSTRIAL_ELECTROMAGNETIC_SEPARATOR_CONTROLLER.ID, "multimachine.electromagneticseparator", "Magnetic Flux Exhibitor").getStackForm(1)); - ItemList.Machine_Multi_Canner.set( new GT_MetaTileEntity_MultiCanner(MULTI_CANNER_CONTROLLER.ID, "multimachine.canner", "TurboCan Pro") .getStackForm(1)); @@ -743,6 +1632,27 @@ public class GT_Loader_MetaTileEntities implements Runnable { // TODO CHECK CIRC "multimachine.lathe", "Industrial Precision Lathe").getStackForm(1)); + ItemList.Machine_Multi_IndustrialCompressor.set( + new GT_MetaTileEntity_IndustrialCompressor( + INDUSTRIAL_COMPRESSOR_CONTROLLER.ID, + "multimachine.basiccompressor", + "Large Electric Compressor").getStackForm(1)); + ItemList.Machine_Multi_HIPCompressor.set( + new GT_MetaTileEntity_HIPCompressor( + HIP_COMPRESSOR_CONTROLLER.ID, + "multimachine.hipcompressor", + "Hot Isostatic Pressurization Unit").getStackForm(1)); + ItemList.Machine_Multi_NeutroniumCompressor.set( + new GT_MetaTileEntity_NeutroniumCompressor( + NEUTRONIUM_COMPRESSOR_CONTROLLER.ID, + "multimachine.neutroniumcompressor", + "Neutronium Compressor").getStackForm(1)); + ItemList.Machine_Multi_BlackHoleCompressor.set( + new GT_MetaTileEntity_BlackHoleCompressor( + BLACKHOLE_COMPRESSOR_CONTROLLER.ID, + "multimachine.blackholecompressor", + "Semi-Stable Black Hole Containment Field").getStackForm(1)); + ItemList.Machine_Multi_Autoclave.set( new GT_MetaTileEntity_MultiAutoclave( MULTI_AUTOCLAVE_CONTROLLER.ID, @@ -12582,6 +13492,9 @@ public class GT_Loader_MetaTileEntities implements Runnable { // TODO CHECK CIRC "hatch.dataaccess.auto", "Automatable Data Access Hatch", 8).getStackForm(1L)); + ItemList.Hatch_HeatSensor.set( + new GT_MetaTileEntity_HeatSensor(HEAT_DETECTOR_HATCH.ID, "hatch.heatsensor", "Heat Sensor Hatch", 7) + .getStackForm(1)); ItemList.Hatch_pHSensor.set( new GT_MetaTileEntity_pHSensor(HATCH_PH_SENSOR.ID, "hatch.phsensor", "pH Sensor Hatch", 7).getStackForm(1)); ItemList.Hatch_LensHousing.set( |