aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dependencies.gradle2
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java36
-rw-r--r--src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java30
-rw-r--r--src/main/java/com/github/technus/tectech/thing/block/QuantumStuffBlock.java107
-rw-r--r--src/main/java/com/github/technus/tectech/thing/block/QuantumStuffRender.java111
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_bhg.java2611
7 files changed, 2885 insertions, 16 deletions
diff --git a/dependencies.gradle b/dependencies.gradle
index c2bde2eded..fc80700899 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -2,7 +2,7 @@
dependencies {
shadowImplementation('com.github.GTNewHorizons:AVRcore:1.0.1')
- compile('com.github.GTNewHorizons:GT5-Unofficial:5.09.41.259-pre:dev')
+ compile("com.github.GTNewHorizons:GT5-Unofficial:5.09.41.259-pre:dev")
compile('com.github.GTNewHorizons:ModularUI:1.0.38:dev')
compile('com.github.GTNewHorizons:Yamcl:0.5.84:dev')
compile('com.github.GTNewHorizons:NotEnoughItems:2.3.20-GTNH:dev')
diff --git a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java
index 5f5a73c71c..fe4e0227d0 100644
--- a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java
+++ b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipe.java
@@ -14,6 +14,9 @@ import gregtech.api.enums.Materials;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+
+import gregtech.api.enums.OrePrefixes;
+import gregtech.api.util.GT_OreDictUnificator;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.FluidStack;
@@ -103,12 +106,15 @@ public class EyeOfHarmonyRecipe {
this.recipeTriggerItem = new ItemStack(block);
this.outputItems = validDustGenerator(materialList);
- this.outputItems.sort(Comparator.comparingLong(ItemStackLong::getStackSize));
- Collections.reverse(this.outputItems);
this.sumOfItems =
this.outputItems.stream().map(ItemStackLong::getStackSize).reduce(0L, Long::sum);
+ this.outputItems.add(new ItemStackLong(GT_OreDictUnificator.get(OrePrefixes.dust, Materials.Stone, 1), this.sumOfItems * 3));
+ this.outputItems.sort(Comparator.comparingLong(ItemStackLong::getStackSize));
+ Collections.reverse(this.outputItems);
+
+
for (ItemStackLong itemStackLong : outputItems) {
double stackSize = (double) itemStackLong.getStackSize();
double probability = Math.round(100_000 * stackSize / sumOfItems) / 1000.0;
@@ -126,9 +132,33 @@ public class EyeOfHarmonyRecipe {
}
// Add a bonus fluid of compressed star matter.
- // todo replace with Bonus star matter when added to GT5.
fluidStackArrayList.add(Materials.RawStarMatter.getFluid((this.spacetimeCasingTierRequired + 1) * 100_000));
+ // Tier 0 - 576 White
+ // Tier 1 - 2304 White
+ // Tier 2 - 9216 White
+ // Tier 3 - 36864 White
+
+ // Tier 4 - 576 Black
+ // Tier 5 - 2304 Black
+ // Tier 6 - 9216 Black
+ // Tier 7 - 36864 Black
+
+ // Tier 8 - 576 Universium
+ // Tier 9 - 2304 Universium
+
+ if (rocketTierOfRecipe <= 3) {
+ fluidStackArrayList.add(Materials.WhiteDwarfMatter.getMolten(576L * pow(4, (int) rocketTierOfRecipe)));
+ }
+
+ if ((4 <= rocketTierOfRecipe) && (rocketTierOfRecipe <= 7)) {
+ fluidStackArrayList.add(Materials.BlackDwarfMatter.getMolten(576L * pow(4, (int) rocketTierOfRecipe - 4)));
+ }
+
+ if (rocketTierOfRecipe >= 8) {
+ fluidStackArrayList.add(Materials.Universium.getMolten(576L * pow(4, (int) (rocketTierOfRecipe - 8))));
+ }
+
outputFluids = fluidStackArrayList;
// End fluid processing.
diff --git a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java
index 091ec4f7f5..f9c5cfeed5 100644
--- a/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java
+++ b/src/main/java/com/github/technus/tectech/recipe/EyeOfHarmonyRecipeStorage.java
@@ -38,15 +38,27 @@ public class EyeOfHarmonyRecipeStorage {
BlockDimensionDisplay blockDimensionDisplay =
(BlockDimensionDisplay) ModBlocks.blocks.get(dimAbbreviation);
- try {
- if (dimAbbreviation.equals("DD")) {
- specialDeepDarkRecipe(this, blockDimensionDisplay);
- } else {
+ if (dimAbbreviation.equals("DD")) {
+ specialDeepDarkRecipe(this, blockDimensionDisplay);
+ } else {
+
+ GT5OreLayerHelper.NormalOreDimensionWrapper normalOre =
+ GT5OreLayerHelper.dimToOreWrapper.getOrDefault(dimAbbreviation, null);
+ GT5OreSmallHelper.SmallOreDimensionWrapper smallOre =
+ GT5OreSmallHelper.dimToSmallOreWrapper.getOrDefault(dimAbbreviation, null);
+
+ if ((normalOre == null) || (smallOre == null)) {
+ System.out.println(dimAbbreviation
+ + " dimension not found in dimToOreWrapper. Report error to GTNH team.");
+ continue;
+ }
+
+ try {
put(
dimAbbreviation,
new EyeOfHarmonyRecipe(
- GT5OreLayerHelper.dimToOreWrapper.get(dimAbbreviation),
- GT5OreSmallHelper.dimToSmallOreWrapper.get(dimAbbreviation),
+ normalOre,
+ smallOre,
blockDimensionDisplay,
0.6 + blockDimensionDisplay.getDimensionRocketTier() / 10.0,
BILLION * (blockDimensionDisplay.getDimensionRocketTier() + 1),
@@ -54,11 +66,9 @@ public class EyeOfHarmonyRecipeStorage {
timeCalculator(blockDimensionDisplay.getDimensionRocketTier()),
blockDimensionDisplay.getDimensionRocketTier(),
1.0 - blockDimensionDisplay.getDimensionRocketTier() / 10.0));
+ } catch (Exception e) {
+ e.printStackTrace();
}
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println(
- dimAbbreviation + " dimension not found in dimToOreWrapper. Report error to GTNH team.");
}
}
}
diff --git a/src/main/java/com/github/technus/tectech/thing/block/QuantumStuffBlock.java b/src/main/java/com/github/technus/tectech/thing/block/QuantumStuffBlock.java
new file mode 100644
index 0000000000..2717a95425
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/block/QuantumStuffBlock.java
@@ -0,0 +1,107 @@
+package com.github.technus.tectech.thing.block;
+
+import static com.github.technus.tectech.Reference.MODID;
+
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import eu.usrv.yamcore.blocks.BlockBase;
+import java.util.ArrayList;
+import java.util.Random;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+
+/**
+ * Created by danie_000 on 17.12.2016.
+ */
+public final class QuantumStuffBlock extends BlockBase {
+ public static IIcon stuff;
+ public static int renderID;
+ public static QuantumStuffBlock INSTANCE;
+
+ public QuantumStuffBlock() {
+ super(Material.iron);
+ setBlockBounds(0, 0, 0, 1, 1, 1);
+ setBlockName("quantumStuff");
+ setHarvestLevel("wrench", 0);
+ setHardness(500);
+ setResistance(1);
+ setLightOpacity(0);
+ setBlockTextureName(MODID + ":blockQuantumStuff");
+ }
+
+ @Override
+ public boolean isBeaconBase(IBlockAccess worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ) {
+ return false;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerBlockIcons(IIconRegister p_149651_1_) {
+ super.registerBlockIcons(p_149651_1_);
+ stuff = blockIcon;
+ }
+
+ @Override
+ public boolean isOpaqueCube() {
+ return false;
+ }
+
+ @Override
+ public boolean getCanBlockGrass() {
+ return false;
+ }
+
+ // @Override
+ // public boolean canRenderInPass(int pass) {
+ // return true;
+ // }
+
+ @Override
+ public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) {
+ return false;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public int getRenderBlockPass() {
+ return 1;
+ }
+
+ @Override
+ public boolean renderAsNormalBlock() {
+ return false;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public boolean shouldSideBeRendered(
+ IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) {
+ return false;
+ }
+
+ @Override
+ public int getRenderType() {
+ return renderID;
+ }
+
+ public static void run() {
+ INSTANCE = new QuantumStuffBlock();
+ GameRegistry.registerBlock(INSTANCE, INSTANCE.getUnlocalizedName());
+ }
+
+ @Override
+ public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
+ return new ArrayList<>();
+ }
+
+ @Override
+ public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) {
+ return null;
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/thing/block/QuantumStuffRender.java b/src/main/java/com/github/technus/tectech/thing/block/QuantumStuffRender.java
new file mode 100644
index 0000000000..1c974a1510
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/block/QuantumStuffRender.java
@@ -0,0 +1,111 @@
+package com.github.technus.tectech.thing.block;
+
+import com.github.technus.tectech.TecTech;
+import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.RenderBlocks;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.util.IIcon;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.IBlockAccess;
+import org.lwjgl.opengl.GL11;
+
+/**
+ * Created by danie_000 on 19.12.2016.
+ */
+public final class QuantumStuffRender implements ISimpleBlockRenderingHandler {
+ private static Tessellator tes = Tessellator.instance;
+
+ @Override
+ public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
+ GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
+ GL11.glPushMatrix();
+ // Get icons from custom register (useful for renderers and fluids)
+ IIcon side = QuantumStuffBlock.stuff;
+ tes.startDrawingQuads();
+ tes.setNormal(0.0F, -1.0F, 0.0F);
+ renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, side);
+ tes.draw();
+ tes.startDrawingQuads();
+ tes.setNormal(0.0F, 0.0F, -1.0F);
+ renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, side);
+ tes.draw();
+ tes.startDrawingQuads();
+ tes.setNormal(0.0F, 0.0F, 1.0F);
+ renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, side);
+ tes.draw();
+ tes.startDrawingQuads();
+ tes.setNormal(-1.0F, 0.0F, 0.0F);
+ renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, side);
+ tes.draw();
+ tes.startDrawingQuads();
+ tes.setNormal(1.0F, 0.0F, 0.0F);
+ renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, side);
+ tes.draw();
+ tes.startDrawingQuads();
+ tes.setNormal(0.0F, 1.0F, 0.0F);
+ renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, side);
+ tes.draw();
+ GL11.glTranslatef(0.5F, 0.5F, 0.5F);
+ GL11.glPopMatrix();
+ }
+
+ @Override
+ public boolean renderWorldBlock(
+ IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
+ // renderer.renderStandardBlock(block, x, y, z);
+ GL11.glPushMatrix();
+ tes.setNormal(0F, 1F, 0F);
+ tes.setBrightness(15728880);
+ IIcon side = QuantumStuffBlock.stuff;
+ for (int i = 0; i < 6; i++) {
+ float f = 1 - TecTech.RANDOM.nextFloat() / 4f,
+ g = f - TecTech.RANDOM.nextFloat() / 4f,
+ r = g - TecTech.RANDOM.nextFloat() / 4f - 0.25f;
+ tes.setColorOpaque_F(r, g, f);
+ float rotX = TecTech.RANDOM.nextFloat() * 2 * (float) Math.PI,
+ rotY = TecTech.RANDOM.nextFloat() * 2 * (float) Math.PI,
+ rotZ = TecTech.RANDOM.nextFloat() * 2 * (float) Math.PI;
+ tesAbuse(x, y, z, -1.425f, -1.425f, .1f, rotX, rotY, rotZ, side.getMinU(), side.getMaxV());
+ tesAbuse(x, y, z, -1.425f, 1.425f, .1f, rotX, rotY, rotZ, side.getMinU(), side.getMinV());
+ tesAbuse(x, y, z, 1.425f, 1.425f, .1f, rotX, rotY, rotZ, side.getMaxU(), side.getMinV());
+ tesAbuse(x, y, z, 1.425f, -1.425f, .1f, rotX, rotY, rotZ, side.getMaxU(), side.getMaxV());
+
+ tesAbuse(x, y, z, 1.425f, -1.425f, -.1f, rotX, rotY, rotZ, side.getMaxU(), side.getMaxV());
+ tesAbuse(x, y, z, 1.425f, 1.425f, -.1f, rotX, rotY, rotZ, side.getMaxU(), side.getMinV());
+ tesAbuse(x, y, z, -1.425f, 1.425f, -.1f, rotX, rotY, rotZ, side.getMinU(), side.getMinV());
+ tesAbuse(x, y, z, -1.425f, -1.425f, -.1f, rotX, rotY, rotZ, side.getMinU(), side.getMaxV());
+ }
+ GL11.glPopMatrix();
+ return true;
+ }
+
+ private void tesAbuse(
+ int x,
+ int y,
+ int z,
+ float sx,
+ float sy,
+ float sz,
+ float rotX,
+ float rotY,
+ float rotZ,
+ float sideU,
+ float sideV) {
+ Vec3 pos = Vec3.createVectorHelper(sx, sy, sz);
+ pos.rotateAroundX(rotX);
+ pos.rotateAroundY(rotY);
+ pos.rotateAroundZ(rotZ);
+ tes.addVertexWithUV(pos.xCoord + x + .5f, pos.yCoord + y + .5f, pos.zCoord + z + .5f, sideU, sideV);
+ }
+
+ @Override
+ public boolean shouldRender3DInInventory(int modelId) {
+ return true;
+ }
+
+ @Override
+ public int getRenderId() {
+ return QuantumStuffBlock.renderID;
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java
index 539ec3de9c..781c1cc5d1 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_EyeOfHarmony.java
@@ -1286,9 +1286,9 @@ public class GT_MetaTileEntity_EM_EyeOfHarmony extends GT_MetaTileEntity_Multibl
'H',
buildHatchAdder(GT_MetaTileEntity_EM_EyeOfHarmony.class)
.atLeast(InputHatch, OutputHatch, OutputBus, Maintenance)
- .casingIndex(13)
+ .casingIndex(texturePage << 7)
.dot(1)
- .buildAndChain(sBlockCasingsBA0, 13))
+ .buildAndChain(sBlockCasingsBA0, 12))
.addElement(
'E',
ofBlocksTiered(
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_bhg.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_bhg.java
new file mode 100644
index 0000000000..9d595339d0
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_bhg.java
@@ -0,0 +1,2611 @@
+package com.github.technus.tectech.thing.metaTileEntity.multi;
+
+import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.textureOffset;
+import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.texturePage;
+import static com.github.technus.tectech.thing.casing.TT_Container_Casings.sBlockCasingsTT;
+import static com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_decay.URANIUM_INGOT_MASS_DIFF;
+import static com.github.technus.tectech.thing.metaTileEntity.multi.GT_MetaTileEntity_EM_decay.URANIUM_MASS_TO_EU_INSTANT;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdderOptional;
+import static net.minecraft.util.StatCollector.translateToLocal;
+
+import com.github.technus.tectech.thing.block.QuantumGlassBlock;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.GT_MetaTileEntity_MultiblockBase_EM;
+import com.github.technus.tectech.thing.metaTileEntity.multi.base.render.TT_RenderedExtendedFacingTexture;
+import com.github.technus.tectech.util.CommonValues;
+import com.gtnewhorizon.structurelib.alignment.constructable.IConstructable;
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+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.util.GT_Multiblock_Tooltip_Builder;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+
+/**
+ * Created by danie_000 on 17.12.2016.
+ */
+public class GT_MetaTileEntity_EM_bhg extends GT_MetaTileEntity_MultiblockBase_EM implements IConstructable {
+ // region variables
+ private static Textures.BlockIcons.CustomIcon ScreenOFF;
+ private static Textures.BlockIcons.CustomIcon ScreenON;
+
+ // todo CHECK VALUES
+ private static final double NEUTRONIUM_BLOCK_MASS = 4.1E17;
+ private static final double NEUTRONIUM_BLOCK_ATOM_COUNT = 2.4478671E44;
+ private static final double NEUTRONIUM_BLOCK_TO_EU_INSTANT = URANIUM_MASS_TO_EU_INSTANT
+ * NEUTRONIUM_BLOCK_MASS
+ / (URANIUM_INGOT_MASS_DIFF * 1.78266191e-36); // ~ 5.314e40
+ private static final double NEUTRON_TO_EU_INSTANT =
+ NEUTRONIUM_BLOCK_TO_EU_INSTANT / NEUTRONIUM_BLOCK_ATOM_COUNT; // ~ 0.00021708694
+
+ public boolean glassDome = false;
+ // endregion
+
+ // Time dillatation - to slow down the explosion thing but REALLY REDUCE POWER OUTPUT
+ // Startcodes to startup
+ // per dim disable thingies
+
+ // region structure actual
+ private static final IStructureDefinition<GT_MetaTileEntity_EM_bhg> STRUCTURE_DEFINITION =
+ IStructureDefinition.<GT_MetaTileEntity_EM_bhg>builder()
+ .addShape("main_t1", transpose(new String[][] {
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " CCCCCCCCC ",
+ " C C ",
+ " CCCCCCCCC ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " DDDDD ",
+ " DDCDCDD ",
+ " CCCCDCCDCCDCCCC ",
+ " DDDDDDD ",
+ " CCCCDCCDCCDCCCC ",
+ " DDCDCDD ",
+ " DDDDD ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " D ",
+ " D ",
+ " DDDDDDD ",
+ " DD DD ",
+ " D EEE D ",
+ " CCC D EAAAE D CCC ",
+ " DDD EAAAE DDD ",
+ " CCC D EAAAE D CCC ",
+ " D EEE D ",
+ " DD DD ",
+ " DDDDDDD ",
+ " D ",
+ " D ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " D ",
+ " D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " CC CC ",
+ " DD DD ",
+ " CC CC ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D ",
+ " D ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " CCCCC ",
+ " D ",
+ " B ",
+ " B ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " CC CC ",
+ " CDBB BBDC ",
+ " CC CC ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " B ",
+ " B ",
+ " D ",
+ " CCCCC ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " D ",
+ " EEEBEEE ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " E E ",
+ " E E ",
+ " CC E E CC ",
+ " DB BD ",
+ " CC E E CC ",
+ " E E ",
+ " E E ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " EEEBEEE ",
+ " D ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " CCCCC ",
+ " D ",
+ " B ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " CC CC ",
+ " CDB BDC ",
+ " CC CC ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " B ",
+ " D ",
+ " CCCCC ",
+ " C C ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " D ",
+ " EEEBEEE ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " E E ",
+ " E E ",
+ " CC E E CC ",
+ " DB BD ",
+ " CC E E CC ",
+ " E E ",
+ " E E ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " EEEBEEE ",
+ " D ",
+ " C C ",
+ " C C ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " C C ",
+ " D ",
+ " B ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " DB BD ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " B ",
+ " D ",
+ " C C ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " C C ",
+ " C C ",
+ " D ",
+ " B ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " CC CC ",
+ " DB BD ",
+ " CC CC ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " B ",
+ " D ",
+ " C C ",
+ " C C ",
+ " "
+ },
+ {
+ " ",
+ " C C ",
+ " D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " D D ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D ",
+ " C C ",
+ " "
+ },
+ {
+ " ",
+ " C C ",
+ " D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " D D ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D ",
+ " C C ",
+ " "
+ },
+ {
+ " CCCCCCC ",
+ " C C ",
+ " DDDDDDD ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D D ",
+ " D D ",
+ "CCD DCC",
+ " D D ",
+ "CCD DCC",
+ " D D ",
+ " D D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " DDDDDDD ",
+ " C C ",
+ " C C "
+ },
+ {
+ " CCHHHHHCC ",
+ " DDDDD ",
+ " DD DD ",
+ " ",
+ " ",
+ " E E ",
+ " ",
+ " E E ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D D ",
+ " D D ",
+ " D D ",
+ "CD DC",
+ " D D ",
+ "CD DC",
+ " D D ",
+ " D D ",
+ " D D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " E E ",
+ " ",
+ " E E ",
+ " ",
+ " ",
+ " DD DD ",
+ " DDDDD ",
+ " C C "
+ },
+ {
+ " CHHHHHHHC ",
+ " DDCDCDD ",
+ " D EEE D ",
+ " ",
+ " C C ",
+ " E E ",
+ " C C ",
+ " E E ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D D ",
+ " D D ",
+ " D D ",
+ "CCE ECC",
+ " DE ED ",
+ "CCE ECC",
+ " D D ",
+ " D D ",
+ " D D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " E E ",
+ " C C ",
+ " E E ",
+ " C C ",
+ " ",
+ " D EEE D ",
+ " DDCDCDD ",
+ " C C "
+ },
+ {
+ " CHHFFFHHC ",
+ " CCCCDCCDCCDCCCC ",
+ " CCC D EAAAE D CCC ",
+ " CC CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " C C ",
+ " CC CC ",
+ " C C ",
+ " C C ",
+ "CCD DCC",
+ "CD DC",
+ "CCE ECC",
+ "CCA ACC",
+ "CDA ADC",
+ "CCA ACC",
+ "CCE ECC",
+ "CD DC",
+ "CCD DCC",
+ " C C ",
+ " C C ",
+ " CC CC ",
+ " C C ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC CC ",
+ " CCC D EAAAE D CCC ",
+ " CCCCDCCDCCDCCCC ",
+ " CCCCCCCCC "
+ },
+ {
+ " CHHF~FHHC ",
+ " DDDDDDD ",
+ " DDD EAAAE DDD ",
+ " DD DD ",
+ " CDBB BBDC ",
+ " DB BD ",
+ " CDB BDC ",
+ " DB BD ",
+ " DB BD ",
+ " DB BD ",
+ " D D ",
+ " D D ",
+ " D D ",
+ " D D ",
+ " DE ED ",
+ "CDA ADC",
+ " DA AD ",
+ "CDA ADC",
+ " DE ED ",
+ " D D ",
+ " D D ",
+ " D D ",
+ " D D ",
+ " DB BD ",
+ " DB BD ",
+ " DB BD ",
+ " CDB BDC ",
+ " DB BD ",
+ " CDBB BBDC ",
+ " DD DD ",
+ " DDD EAAAE DDD ",
+ " DDDDDDD ",
+ " C C "
+ },
+ {
+ " CHHFFFHHC ",
+ " CCCCDCCDCCDCCCC ",
+ " CCC D EAAAE D CCC ",
+ " CC CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " C C ",
+ " CC CC ",
+ " C C ",
+ " C C ",
+ "CCD DCC",
+ "CD DC",
+ "CCE ECC",
+ "CCA ACC",
+ "CDA ADC",
+ "CCA ACC",
+ "CCE ECC",
+ "CD DC",
+ "CCD DCC",
+ " C C ",
+ " C C ",
+ " CC CC ",
+ " C C ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC CC ",
+ " CCC D EAAAE D CCC ",
+ " CCCCDCCDCCDCCCC ",
+ " CCCCCCCCC "
+ },
+ {
+ " CHHHHHHHC ",
+ " DDCDCDD ",
+ " D EEE D ",
+ " ",
+ " C C ",
+ " E E ",
+ " C C ",
+ " E E ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D D ",
+ " D D ",
+ " D D ",
+ "CCE ECC",
+ " DE ED ",
+ "CCE ECC",
+ " D D ",
+ " D D ",
+ " D D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " E E ",
+ " C C ",
+ " E E ",
+ " C C ",
+ " ",
+ " D EEE D ",
+ " DDCDCDD ",
+ " C C "
+ },
+ {
+ " CCHHHHHCC ",
+ " DDDDD ",
+ " DD DD ",
+ " ",
+ " ",
+ " E E ",
+ " ",
+ " E E ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D D ",
+ " D D ",
+ " D D ",
+ "CD DC",
+ " D D ",
+ "CD DC",
+ " D D ",
+ " D D ",
+ " D D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " E E ",
+ " ",
+ " E E ",
+ " ",
+ " ",
+ " DD DD ",
+ " DDDDD ",
+ " C C "
+ },
+ {
+ " CCCCCCC ",
+ " C C ",
+ " DDDDDDD ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D D ",
+ " D D ",
+ "CCD DCC",
+ " D D ",
+ "CCD DCC",
+ " D D ",
+ " D D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " DDDDDDD ",
+ " C C ",
+ " C C "
+ },
+ {
+ " ",
+ " C C ",
+ " D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " D D ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D ",
+ " C C ",
+ " "
+ },
+ {
+ " ",
+ " C C ",
+ " D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " D D ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " D ",
+ " C C ",
+ " "
+ },
+ {
+ " ",
+ " C C ",
+ " C C ",
+ " D ",
+ " B ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " CC CC ",
+ " DB BD ",
+ " CC CC ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " B ",
+ " D ",
+ " C C ",
+ " C C ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " C C ",
+ " D ",
+ " B ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " DB BD ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " B ",
+ " D ",
+ " C C ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " D ",
+ " EEEBEEE ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " E E ",
+ " E E ",
+ " CC E E CC ",
+ " DB BD ",
+ " CC E E CC ",
+ " E E ",
+ " E E ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " EEEBEEE ",
+ " D ",
+ " C C ",
+ " C C ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " CCCCC ",
+ " D ",
+ " B ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " CC CC ",
+ " CDB BDC ",
+ " CC CC ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " B ",
+ " D ",
+ " CCCCC ",
+ " C C ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " D ",
+ " EEEBEEE ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " E E ",
+ " E E ",
+ " CC E E CC ",
+ " DB BD ",
+ " CC E E CC ",
+ " E E ",
+ " E E ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " EEEBEEE ",
+ " D ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " CCCCC ",
+ " D ",
+ " B ",
+ " B ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " CC CC ",
+ " CDBB BBDC ",
+ " CC CC ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " B ",
+ " B ",
+ " D ",
+ " CCCCC ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " D ",
+ " D ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " CC CC ",
+ " DD DD ",
+ " CC CC ",
+ " ",
+ " ",
+ " ",
+ " D ",
+ " D ",
+ " D ",
+ " D ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " D ",
+ " D ",
+ " DDDDDDD ",
+ " DD DD ",
+ " D EEE D ",
+ " CCC D EAAAE D CCC ",
+ " DDD EAAAE DDD ",
+ " CCC D EAAAE D CCC ",
+ " D EEE D ",
+ " DD DD ",
+ " DDDDDDD ",
+ " D ",
+ " D ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " DDDDD ",
+ " DDCDCDD ",
+ " CCCCDCCDCCDCCCC ",
+ " DDDDDDD ",
+ " CCCCDCCDCCDCCCC ",
+ " DDCDCDD ",
+ " DDDDD ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " CCCCCCCCC ",
+ " C C ",
+ " CCCCCCCCC ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ }
+ }))
+ .addShape("main_t2", transpose(new String[][] {
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " CCCCCCCCC ",
+ " C C ",
+ " CCCCCCCCC ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGC CGG ",
+ " GGGC CGGG ",
+ " GGGGC CGGGG ",
+ " GGGGDDDDDGGGG ",
+ " GGGDDCDCDDGGG ",
+ " CCCCDCCDCCDCCCC ",
+ " DDDDDDD ",
+ " CCCCDCCDCCDCCCC ",
+ " GGGDDCDCDDGGG ",
+ " GGGGDDDDDGGGG ",
+ " GGGGC CGGGG ",
+ " GGGC CGGG ",
+ " GGC CGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGC CGG ",
+ " GGGGC CGGGG ",
+ " GGG D GGG ",
+ " GGG D GGG ",
+ " GG DDDDDDD GG ",
+ " GG DD DD GG ",
+ " GG D EEE D GG ",
+ " CCC D EAAAE D CCC ",
+ " DDD EAAAE DDD ",
+ " CCC D EAAAE D CCC ",
+ " GG D EEE D GG ",
+ " GG DD DD GG ",
+ " GG DDDDDDD GG ",
+ " GGG D GGG ",
+ " GGG D GGG ",
+ " GGGGC CGGGG ",
+ " GGC CGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGGC CGGG ",
+ " GGG D GGG ",
+ " GG D GG ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " CC CC ",
+ " DD DD ",
+ " CC CC ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " GG D GG ",
+ " GGG D GGG ",
+ " GGGC CGGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGGCCCCCGGG ",
+ " GGG D GGG ",
+ " GG B GG ",
+ " GG B GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " CC CC ",
+ " CDBB BBDC ",
+ " CC CC ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG B GG ",
+ " GG B GG ",
+ " GGG D GGG ",
+ " GGGCCCCCGGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGGGGC CGGGGG ",
+ " GGG D GGG ",
+ " GG EEEBEEE GG ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " G E E G ",
+ " CC E E CC ",
+ " DB BD ",
+ " CC E E CC ",
+ " G E E G ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " GG EEEBEEE GG ",
+ " GGG D GGG ",
+ " GGGGGC CGGGGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGGCCCCCGGG ",
+ " GGG D GGG ",
+ " GG B GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " CC CC ",
+ " CDB BDC ",
+ " CC CC ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG B GG ",
+ " GGG D GGG ",
+ " GGGCCCCCGGG ",
+ " C C ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " C C ",
+ " GGGC CGGG ",
+ " GGG D GGG ",
+ " GG EEEBEEE GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " G E E G ",
+ " CC E E CC ",
+ " DB BD ",
+ " CC E E CC ",
+ " G E E G ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG EEEBEEE GG ",
+ " GGG D GGG ",
+ " GGGC CGGG ",
+ " C C ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " GGC CGG ",
+ " GGG D GGG ",
+ " GG B GG ",
+ " GG GG ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " DB BD ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " GG GG ",
+ " GG B GG ",
+ " GGG D GGG ",
+ " GGC CGG ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " C C ",
+ " GGGGC CGGGG ",
+ " GG D GG ",
+ " GG B GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " CC CC ",
+ " DB BD ",
+ " CC CC ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG B GG ",
+ " GG D GG ",
+ " GGGGC CGGGG ",
+ " C C ",
+ " "
+ },
+ {
+ " ",
+ " GGC CGG ",
+ " GGG D GGG ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " D D ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " GGG D GGG ",
+ " GGC CGG ",
+ " "
+ },
+ {
+ " ",
+ " GGGC CGGG ",
+ " GGG D GGG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " D D ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GGG D GGG ",
+ " GGGC CGGG ",
+ " "
+ },
+ {
+ " CCCCCCC ",
+ " GGGGC CGGGG ",
+ " GG DDDDDDD GG ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GD DG ",
+ " GD DG ",
+ "CCD DCC",
+ " D D ",
+ "CCD DCC",
+ " GD DG ",
+ " GD DG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " GG DDDDDDD GG ",
+ " GGGGC CGGGG ",
+ " C C "
+ },
+ {
+ " CCHHHHHCC ",
+ " GGGGDDDDDGGGG ",
+ " GG DD DD GG ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " G G ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GD DG ",
+ " GD DG ",
+ " D D ",
+ "CD DC",
+ " D D ",
+ "CD DC",
+ " D D ",
+ " GD DG ",
+ " GD DG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " G G ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " GG DD DD GG ",
+ " GGGGDDDDDGGGG ",
+ " C C "
+ },
+ {
+ " CHHHHHHHC ",
+ " GGGDDCDCDDGGG ",
+ " GG D EEE D GG ",
+ " G G ",
+ " C C ",
+ " G E E G ",
+ " C C ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GD DG ",
+ " D D ",
+ " D D ",
+ "CCE ECC",
+ " DE ED ",
+ "CCE ECC",
+ " D D ",
+ " D D ",
+ " GD DG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " C C ",
+ " G E E G ",
+ " C C ",
+ " G G ",
+ " GG D EEE D GG ",
+ " GGGDDCDCDDGGG ",
+ " C C "
+ },
+ {
+ " CHHFFFHHC ",
+ " CCCCDCCDCCDCCCC ",
+ " CCC D EAAAE D CCC ",
+ " CC CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " C C ",
+ " CC CC ",
+ " C C ",
+ " C C ",
+ "CCD DCC",
+ "CD DC",
+ "CCE ECC",
+ "CCA ACC",
+ "CDA ADC",
+ "CCA ACC",
+ "CCE ECC",
+ "CD DC",
+ "CCD DCC",
+ " C C ",
+ " C C ",
+ " CC CC ",
+ " C C ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC CC ",
+ " CCC D EAAAE D CCC ",
+ " CCCCDCCDCCDCCCC ",
+ " CCCCCCCCC "
+ },
+ {
+ " CHHF~FHHC ",
+ " DDDDDDD ",
+ " DDD EAAAE DDD ",
+ " DD DD ",
+ " CDBB BBDC ",
+ " DB BD ",
+ " CDB BDC ",
+ " DB BD ",
+ " DB BD ",
+ " DB BD ",
+ " D D ",
+ " D D ",
+ " D D ",
+ " D D ",
+ " DE ED ",
+ "CDA ADC",
+ " DA AD ",
+ "CDA ADC",
+ " DE ED ",
+ " D D ",
+ " D D ",
+ " D D ",
+ " D D ",
+ " DB BD ",
+ " DB BD ",
+ " DB BD ",
+ " CDB BDC ",
+ " DB BD ",
+ " CDBB BBDC ",
+ " DD DD ",
+ " DDD EAAAE DDD ",
+ " DDDDDDD ",
+ " C C "
+ },
+ {
+ " CHHFFFHHC ",
+ " CCCCDCCDCCDCCCC ",
+ " CCC D EAAAE D CCC ",
+ " CC CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " C C ",
+ " CC CC ",
+ " C C ",
+ " C C ",
+ "CCD DCC",
+ "CD DC",
+ "CCE ECC",
+ "CCA ACC",
+ "CDA ADC",
+ "CCA ACC",
+ "CCE ECC",
+ "CD DC",
+ "CCD DCC",
+ " C C ",
+ " C C ",
+ " CC CC ",
+ " C C ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC E E CC ",
+ " CC CC ",
+ " CC CC ",
+ " CCC D EAAAE D CCC ",
+ " CCCCDCCDCCDCCCC ",
+ " CCCCCCCCC "
+ },
+ {
+ " CHHHHHHHC ",
+ " GGGDDCDCDDGGG ",
+ " GG D EEE D GG ",
+ " G G ",
+ " C C ",
+ " G E E G ",
+ " C C ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GD DG ",
+ " D D ",
+ " D D ",
+ "CCE ECC",
+ " DE ED ",
+ "CCE ECC",
+ " D D ",
+ " D D ",
+ " GD DG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " C C ",
+ " G E E G ",
+ " C C ",
+ " G G ",
+ " GG D EEE D GG ",
+ " GGGDDCDCDDGGG ",
+ " C C "
+ },
+ {
+ " CCHHHHHCC ",
+ " GGGGDDDDDGGGG ",
+ " GG DD DD GG ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " G G ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GD DG ",
+ " GD DG ",
+ " D D ",
+ "CD DC",
+ " D D ",
+ "CD DC",
+ " D D ",
+ " GD DG ",
+ " GD DG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " G G ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " GG DD DD GG ",
+ " GGGGDDDDDGGGG ",
+ " C C "
+ },
+ {
+ " CCCCCCC ",
+ " GGGGC CGGGG ",
+ " GG DDDDDDD GG ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GD DG ",
+ " GD DG ",
+ "CCD DCC",
+ " D D ",
+ "CCD DCC",
+ " GD DG ",
+ " GD DG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " GG DDDDDDD GG ",
+ " GGGGC CGGGG ",
+ " C C "
+ },
+ {
+ " ",
+ " GGGC CGGG ",
+ " GGG D GGG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " D D ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GGG D GGG ",
+ " GGGC CGGG ",
+ " "
+ },
+ {
+ " ",
+ " GGC CGG ",
+ " GGG D GGG ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " D D ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " GGG D GGG ",
+ " GGC CGG ",
+ " "
+ },
+ {
+ " ",
+ " C C ",
+ " GGGGC CGGGG ",
+ " GG D GG ",
+ " GG B GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " CC CC ",
+ " DB BD ",
+ " CC CC ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG B GG ",
+ " GG D GG ",
+ " GGGGC CGGGG ",
+ " C C ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " GGC CGG ",
+ " GGG D GGG ",
+ " GG B GG ",
+ " GG GG ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " DB BD ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " GG GG ",
+ " GG B GG ",
+ " GGG D GGG ",
+ " GGC CGG ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " C C ",
+ " GGGC CGGG ",
+ " GGG D GGG ",
+ " GG EEEBEEE GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " G E E G ",
+ " CC E E CC ",
+ " DB BD ",
+ " CC E E CC ",
+ " G E E G ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG EEEBEEE GG ",
+ " GGG D GGG ",
+ " GGGC CGGG ",
+ " C C ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGGCCCCCGGG ",
+ " GGG D GGG ",
+ " GG B GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " CC CC ",
+ " CDB BDC ",
+ " CC CC ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG B GG ",
+ " GGG D GGG ",
+ " GGGCCCCCGGG ",
+ " C C ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGGGGC CGGGGG ",
+ " GGG D GGG ",
+ " GG EEEBEEE GG ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " G E E G ",
+ " G E E G ",
+ " CC E E CC ",
+ " DB BD ",
+ " CC E E CC ",
+ " G E E G ",
+ " G E E G ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " GG EEEBEEE GG ",
+ " GGG D GGG ",
+ " GGGGGC CGGGGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGGCCCCCGGG ",
+ " GGG D GGG ",
+ " GG B GG ",
+ " GG B GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " C C ",
+ " CC CC ",
+ " CDBB BBDC ",
+ " CC CC ",
+ " C C ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " GG B GG ",
+ " GG B GG ",
+ " GGG D GGG ",
+ " GGGCCCCCGGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGGC CGGG ",
+ " GGG D GGG ",
+ " GG D GG ",
+ " GG GG ",
+ " G G ",
+ " GG GG ",
+ " G G ",
+ " G G ",
+ " CC CC ",
+ " DD DD ",
+ " CC CC ",
+ " G G ",
+ " G G ",
+ " GG GG ",
+ " G D G ",
+ " GG D GG ",
+ " GG D GG ",
+ " GGG D GGG ",
+ " GGGC CGGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGC CGG ",
+ " GGGGC CGGGG ",
+ " GGG D GGG ",
+ " GGG D GGG ",
+ " GG DDDDDDD GG ",
+ " GG DD DD GG ",
+ " GG D EEE D GG ",
+ " CCC D EAAAE D CCC ",
+ " DDD EAAAE DDD ",
+ " CCC D EAAAE D CCC ",
+ " GG D EEE D GG ",
+ " GG DD DD GG ",
+ " GG DDDDDDD GG ",
+ " GGG D GGG ",
+ " GGG D GGG ",
+ " GGGGC CGGGG ",
+ " GGC CGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " GGC CGG ",
+ " GGGC CGGG ",
+ " GGGGC CGGGG ",
+ " GGGGDDDDDGGGG ",
+ " GGGDDCDCDDGGG ",
+ " CCCCDCCDCCDCCCC ",
+ " DDDDDDD ",
+ " CCCCDCCDCCDCCCC ",
+ " GGGDDCDCDDGGG ",
+ " GGGGDDDDDGGGG ",
+ " GGGGC CGGGG ",
+ " GGGC CGGG ",
+ " GGC CGG ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ },
+ {
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " CCCCCCCCC ",
+ " C C ",
+ " CCCCCCCCC ",
+ " C C ",
+ " C C ",
+ " C C ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ }
+ }))
+ .addElement('A', ofBlock(sBlockCasingsTT, 10))
+ .addElement('B', ofBlock(sBlockCasingsTT, 11))
+ .addElement('C', ofBlock(sBlockCasingsTT, 12))
+ .addElement('D', ofBlock(sBlockCasingsTT, 13))
+ .addElement('E', ofBlock(sBlockCasingsTT, 14))
+ .addElement('G', ofBlock(QuantumGlassBlock.INSTANCE, 0))
+ .addElement(
+ 'H',
+ ofHatchAdderOptional(
+ GT_MetaTileEntity_EM_bhg::addClassicToMachineList,
+ textureOffset,
+ 1,
+ sBlockCasingsTT,
+ 0))
+ .addElement(
+ 'F',
+ ofHatchAdderOptional(
+ GT_MetaTileEntity_EM_bhg::addElementalToMachineList,
+ textureOffset + 4,
+ 2,
+ sBlockCasingsTT,
+ 4))
+ .build();
+
+ @Override
+ public IStructureDefinition<GT_MetaTileEntity_EM_bhg> getStructure_EM() {
+ return STRUCTURE_DEFINITION;
+ }
+
+ private static final String[] description = new String[] {
+ EnumChatFormatting.AQUA + translateToLocal("tt.keyphrase.Hint_Details") + ":",
+ translateToLocal(
+ "gt.blockmachines.multimachine.em.blackholegenerator.hint.0"), // 1 - Classic Hatches or High Power
+ // Casing
+ translateToLocal(
+ "gt.blockmachines.multimachine.em.blackholegenerator.hint.1"), // 2 - Elemental Hatches or Molecular
+ // Casing
+ };
+ // endregion
+
+ public GT_MetaTileEntity_EM_bhg(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ public GT_MetaTileEntity_EM_bhg(String aName) {
+ super(aName);
+ }
+
+ /**
+ * Black hole event horizon radius calculator
+ *
+ * @param massKg mass in kg
+ * @return radius in meters
+ */
+ private static double getSchwarzschildRadius(double massKg) {
+ return massKg * 1.48523238761875E-27;
+ }
+
+ /**
+ * Black hole event horizon surface area calculator
+ *
+ * @param massKg mass in kg
+ * @return area in meters^2
+ */
+ private static double getSchwarzschildArea(double massKg) {
+ return Math.pow(getSchwarzschildRadius(massKg), 2) * 12.566370614359172;
+ }
+
+ /**
+ * Black hole event horizon temperature calculator
+ *
+ * @param massKg mass in kg
+ * @return temperature in K
+ */
+ private static double getTemperature(double massKg) {
+ return 2.841438513199716E-9 / (2.3159488515170722E-32 * massKg);
+ }
+
+ /**
+ * Black hole luminosity calculator
+ *
+ * @param massKg mass in kg
+ * @return luminosity in watts
+ */
+ private static double getLuminosity(double massKg) {
+ return getSchwarzschildArea(massKg) * 5.670373e-8 * Math.pow(getTemperature(massKg), 4);
+ }
+
+ /**
+ * Black hole acretion disk luminosity calculator
+ *
+ * @param massKgPer1s mass injection kg per s
+ * @return luminosity in watts
+ */
+ private static double getAcretionDiskLuminosity(double massKgPer1s) {
+ return massKgPer1s * 7.48962648947348E15;
+ }
+
+ /**
+ * Black hole gravity field calculator, should be used for gravity blasting
+ *
+ * @param massKg mass in kg
+ * @param distanceSq distance squared in meters
+ * @return gravity field
+ */
+ private static double getGravityField(double massKg, double distanceSq) {
+ return massKg * 6.6743015e-11 / distanceSq;
+ }
+
+ /**
+ * Black hole containment force calculator
+ *
+ * @param massKg mass in kg
+ * @param radiusSq radius squared in meters
+ * @return force in newtons
+ */
+ private static double getContainmentForce(double massKg, double radiusSq) {
+ return Math.pow(massKg, 2) * 6.6743015e-11 / radiusSq;
+ }
+
+ /**
+ * Black hole containment pressure calculator F/s, should be used for bhg initial release explosion?
+ *
+ * @param massKg mass in kg
+ * @param radiusSq radius squared in meters
+ * @return pressure in pascals
+ */
+ private static double getContainmentPressure(double massKg, double radiusSq) {
+ return getContainmentForce(massKg, radiusSq) / (12.566370614359172 * radiusSq);
+ }
+
+ /**
+ * Black hole containment energy calculator, assuming F*s, and 100% efficient gravity force field
+ *
+ * @param massKg mass in kg
+ * @return power in watts
+ */
+ private static double getContainmentPower(double massKg) {
+ return Math.pow(massKg, 2) * 8.387174624097334E-10;
+ }
+
+ /**
+ * Black hole power balance, zero at mass ~= 2.5525e10 (T~=4.8067e12)
+ *
+ * @param massKg mass in kg
+ * @param massKgPer1s mass injection kg per s
+ * @return power in watts
+ */
+ @Deprecated
+ private static double getContainmentPowerBalance(double massKg, double massKgPer1s) {
+ return getLuminosity(massKg) + getAcretionDiskLuminosity(massKgPer1s) - getContainmentPower(massKg);
+ }
+
+ // todo compaction energy 8 * Long.MAx_VALUE?
+
+ // todo neutronium decay gen? 0.0007186885 mass diff - actually compute hydrogen amount...
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GT_MetaTileEntity_EM_bhg(mName);
+ }
+
+ @Override
+ public boolean checkMachine_EM(IGregTechTileEntity iGregTechTileEntity, ItemStack itemStack) {
+ if (structureCheck_EM("t2", 16, 16, 0)) {
+ glassDome = true;
+ return true;
+ }
+ if (structureCheck_EM("t1", 16, 16, 0)) {
+ glassDome = false;
+ return true;
+ }
+ // todo check tiers of hatches!!!!
+ return false;
+ }
+
+ @Override
+ public GT_Multiblock_Tooltip_Builder createTooltip() {
+ final GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(translateToLocal(
+ "gt.blockmachines.multimachine.em.blackholegenerator.name")) // Machine Type: Black Hole
+ // Generator
+ .addInfo(translateToLocal(
+ "gt.blockmachines.multimachine.em.blackholegenerator.desc.0")) // Controller block of
+ // the Black Hole
+ // Generator
+ .addInfo(translateToLocal(
+ "gt.blockmachines.multimachine.em.blackholegenerator.desc.1")) // Uses a black hole to
+ // generate power
+ .addInfo(translateToLocal("tt.keyword.Structure.StructureTooComplex")) // The structure is too complex!
+ .addSeparator()
+ .beginStructureBlock(33, 33, 33, false)
+ .addEnergyHatch(
+ translateToLocal("tt.keyword.Structure.AnyHighPowerCasing1D"),
+ 1) // Energy Hatch: Any High Power Casing with 1 dot
+ .addMaintenanceHatch(
+ translateToLocal("tt.keyword.Structure.AnyHighPowerCasing1D"),
+ 1) // Maintenance Hatch: Any High Power Casing with 1 dot
+ .toolTipFinisher(CommonValues.TEC_MARK_EM);
+ return tt;
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister aBlockIconRegister) {
+ ScreenOFF = new Textures.BlockIcons.CustomIcon("iconsets/EM_BHG");
+ ScreenON = new Textures.BlockIcons.CustomIcon("iconsets/EM_BHG_ACTIVE");
+ super.registerIcons(aBlockIconRegister);
+ }
+
+ @Override
+ public ITexture[] getTexture(
+ IGregTechTileEntity aBaseMetaTileEntity,
+ byte aSide,
+ byte aFacing,
+ byte aColorIndex,
+ boolean aActive,
+ boolean aRedstone) {
+ if (aSide == aFacing) {
+ return new ITexture[] {
+ Textures.BlockIcons.casingTexturePages[texturePage][12],
+ new TT_RenderedExtendedFacingTexture(aActive ? ScreenON : ScreenOFF)
+ };
+ }
+ return new ITexture[] {Textures.BlockIcons.casingTexturePages[texturePage][12]};
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ try {
+ structureBuild_EM((stackSize.stackSize & 1) == 1 ? "main_t1" : "main_t2", 16, 16, 0, stackSize, hintsOnly);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public String[] getStructureDescription(ItemStack stackSize) {
+ return description;
+ }
+}