aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTechnus <daniel112092@gmail.com>2017-05-18 01:07:33 +0200
committerTechnus <daniel112092@gmail.com>2017-05-18 01:07:33 +0200
commit3988f1bf67f4fbb6bb7961c63e9b89827b452508 (patch)
tree368929cd5fdc27f35484e80b77ae8b9ab3793ae9
parent12930f1029ee16e10ca8c3eb6c35dff2cfe63c84 (diff)
downloadGT5-Unofficial-3988f1bf67f4fbb6bb7961c63e9b89827b452508.tar.gz
GT5-Unofficial-3988f1bf67f4fbb6bb7961c63e9b89827b452508.tar.bz2
GT5-Unofficial-3988f1bf67f4fbb6bb7961c63e9b89827b452508.zip
Optimized struct check a bit
-rw-r--r--src/main/java/com/github/technus/tectech/Util.java227
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_annihilation.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_bhg.java60
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_wormhole.java10
5 files changed, 171 insertions, 132 deletions
diff --git a/src/main/java/com/github/technus/tectech/Util.java b/src/main/java/com/github/technus/tectech/Util.java
index 853c622709..a46ba78a39 100644
--- a/src/main/java/com/github/technus/tectech/Util.java
+++ b/src/main/java/com/github/technus/tectech/Util.java
@@ -18,6 +18,10 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import static gregtech.api.enums.GT_Values.E;
/**
* Created by Tec on 21.03.2017.
@@ -52,6 +56,10 @@ public class Util {
byte facing = aBaseMetaTileEntity.getFrontFacing();
int x, y, z, a, b, c, pointer;
+ final int
+ baseX=aBaseMetaTileEntity.getXCoord(),
+ baseZ=aBaseMetaTileEntity.getZCoord(),
+ baseY=aBaseMetaTileEntity.getYCoord();
//a,b,c - relative to block face!
//x,y,z - relative to block position on map!
//yPos - absolute height of checked block
@@ -63,7 +71,10 @@ public class Util {
for (String __structure : _structure) {//top to bottom
a = -horizontalOffset;
for (char block : __structure.toCharArray()) {//left to right
- if (block > '@')//characters allow to skip check a-1 skip, b-2 skips etc.
+ if (block < ' ') {//Control chars allow skipping
+ b -= block;
+ break;
+ } if (block > '@')//characters allow to skip check a-1 skip, b-2 skips etc.
a += block - '@';
else if (block < '+')//used to mark THINGS
a++;
@@ -73,35 +84,35 @@ public class Util {
//get x y z from rotation
switch (facing) {//translation
case 4:
- x = aBaseMetaTileEntity.getXCoord() + c;
- z = aBaseMetaTileEntity.getZCoord() + a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + c;
+ z = baseZ + a;
+ y = baseY + b;
break;
case 3:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() - c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + a;
+ z = baseZ - c;
+ y = baseY + b;
break;
case 5:
- x = aBaseMetaTileEntity.getXCoord() - c;
- z = aBaseMetaTileEntity.getZCoord() - a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - c;
+ z = baseZ - a;
+ y = baseY + b;
break;
case 2:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() + c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - a;
+ z = baseZ + c;
+ y = baseY + b;
break;
//Things get odd if the block faces up or down...
case 1:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() + b;
- y = aBaseMetaTileEntity.getYCoord() - c;
+ x = baseX + a;
+ z = baseZ + b;
+ y = baseY - c;
break;//similar to 3
case 0:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() - b;
- y = aBaseMetaTileEntity.getYCoord() + c;
+ x = baseX - a;
+ z = baseZ - b;
+ y = baseY + c;
break;//similar to 2
default:
return false;
@@ -169,6 +180,10 @@ public class Util {
IMetaTileEntity imt = aBaseMetaTileEntity.getMetaTileEntity();
int x, y, z, a, b, c, pointer;
+ final int
+ baseX=aBaseMetaTileEntity.getXCoord(),
+ baseZ=aBaseMetaTileEntity.getZCoord(),
+ baseY=aBaseMetaTileEntity.getYCoord();
//a,b,c - relative to block face!
//x,y,z - relative to block position on map!
//yPos - absolute height of checked block
@@ -180,7 +195,10 @@ public class Util {
for (String __structure : _structure) {//top to bottom
a = -horizontalOffset;
for (char block : __structure.toCharArray()) {//left to right
- if (block > '@') //characters allow to skip check a-1 skip, b-2 skips etc.
+ if (block < ' ') {//Control chars allow skipping
+ b -= block;
+ break;
+ } else if (block > '@') //characters allow to skip check a-1 skip, b-2 skips etc.
a += block - '@';
//else if (block < '+')//used to mark THINGS
// a++;
@@ -190,35 +208,35 @@ public class Util {
//get x y z from rotation
switch (facing) {//translation
case 4:
- x = aBaseMetaTileEntity.getXCoord() + c;
- z = aBaseMetaTileEntity.getZCoord() + a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + c;
+ z = baseZ + a;
+ y = baseY + b;
break;
case 3:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() - c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + a;
+ z = baseZ - c;
+ y = baseY + b;
break;
case 5:
- x = aBaseMetaTileEntity.getXCoord() - c;
- z = aBaseMetaTileEntity.getZCoord() - a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - c;
+ z = baseZ - a;
+ y = baseY + b;
break;
case 2:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() + c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - a;
+ z = baseZ + c;
+ y = baseY + b;
break;
//Things get odd if the block faces up or down...
case 1:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() + b;
- y = aBaseMetaTileEntity.getYCoord() - c;
+ x = baseX + a;
+ z = baseZ + b;
+ y = baseY - c;
break;//similar to 3
case 0:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() - b;
- y = aBaseMetaTileEntity.getYCoord() + c;
+ x = baseX - a;
+ z = baseZ - b;
+ y = baseY + c;
break;//similar to 2
default:
return false;
@@ -294,6 +312,10 @@ public class Util {
if (world.isRemote) return false;
int x, y, z, a, b, c, pointer;
+ final int
+ baseX=aBaseMetaTileEntity.getXCoord(),
+ baseZ=aBaseMetaTileEntity.getZCoord(),
+ baseY=aBaseMetaTileEntity.getYCoord();
//a,b,c - relative to block face!
//x,y,z - relative to block position on map!
@@ -304,7 +326,10 @@ public class Util {
for (String __structure : _structure) {//top to bottom
a = -horizontalOffset;
for (char block : __structure.toCharArray()) {//left to right
- if (block > '@')//characters allow to skip check a-1 skip, b-2 skips etc.
+ if (block < ' ') {//Control chars allow skipping
+ b -= block;
+ break;
+ } if (block > '@')//characters allow to skip check a-1 skip, b-2 skips etc.
a += block - '@';
//else if (block < '+')//used to mark THINGS
// a++;
@@ -314,35 +339,35 @@ public class Util {
//get x y z from rotation
switch (facing) {//translation
case 4:
- x = aBaseMetaTileEntity.getXCoord() + c;
- z = aBaseMetaTileEntity.getZCoord() + a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + c;
+ z = baseZ + a;
+ y = baseY + b;
break;
case 3:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() - c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + a;
+ z = baseZ - c;
+ y = baseY + b;
break;
case 5:
- x = aBaseMetaTileEntity.getXCoord() - c;
- z = aBaseMetaTileEntity.getZCoord() - a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - c;
+ z = baseZ - a;
+ y = baseY + b;
break;
case 2:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() + c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - a;
+ z = baseZ + c;
+ y = baseY + b;
break;
//Things get odd if the block faces up or down...
case 1:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() + b;
- y = aBaseMetaTileEntity.getYCoord() - c;
+ x = baseX + a;
+ z = baseZ + b;
+ y = baseY - c;
break;//similar to 3
case 0:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() - b;
- y = aBaseMetaTileEntity.getYCoord() + c;
+ x = baseX - a;
+ z = baseZ - b;
+ y = baseY + c;
break;//similar to 2
default:
return false;
@@ -404,6 +429,10 @@ public class Util {
ItemStack[] array = new ItemStack[10];
int x, y, z, a, b, c;
+ final int
+ baseX=aBaseMetaTileEntity.getXCoord(),
+ baseZ=aBaseMetaTileEntity.getZCoord(),
+ baseY=aBaseMetaTileEntity.getYCoord();
//a,b,c - relative to block face!
//x,y,z - relative to block position on map!
//yPos - absolute height of checked block
@@ -418,35 +447,35 @@ public class Util {
//get x y z from rotation
switch (facing) {//translation
case 4:
- x = aBaseMetaTileEntity.getXCoord() + c;
- z = aBaseMetaTileEntity.getZCoord() + a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + c;
+ z = baseZ + a;
+ y = baseY + b;
break;
case 3:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() - c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + a;
+ z = baseZ - c;
+ y = baseY + b;
break;
case 5:
- x = aBaseMetaTileEntity.getXCoord() - c;
- z = aBaseMetaTileEntity.getZCoord() - a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - c;
+ z = baseZ - a;
+ y = baseY + b;
break;
case 2:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() + c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - a;
+ z = baseZ + c;
+ y = baseY + b;
break;
//Things get odd if the block faces up or down...
case 1:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() + b;
- y = aBaseMetaTileEntity.getYCoord() - c;
+ x = baseX + a;
+ z = baseZ + b;
+ y = baseY - c;
break;//similar to 3
case 0:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() - b;
- y = aBaseMetaTileEntity.getYCoord() + c;
+ x = baseX - a;
+ z = baseZ - b;
+ y = baseY + c;
break;//similar to 2
default:
return new String[]{"Invalid rotation"};
@@ -518,35 +547,35 @@ public class Util {
//get x y z from rotation
switch (facing) {//translation
case 4:
- x = aBaseMetaTileEntity.getXCoord() + c;
- z = aBaseMetaTileEntity.getZCoord() + a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + c;
+ z = baseZ + a;
+ y = baseY + b;
break;
case 3:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() - c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX + a;
+ z = baseZ - c;
+ y = baseY + b;
break;
case 5:
- x = aBaseMetaTileEntity.getXCoord() - c;
- z = aBaseMetaTileEntity.getZCoord() - a;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - c;
+ z = baseZ - a;
+ y = baseY + b;
break;
case 2:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() + c;
- y = aBaseMetaTileEntity.getYCoord() + b;
+ x = baseX - a;
+ z = baseZ + c;
+ y = baseY + b;
break;
//Things get odd if the block faces up or down...
case 1:
- x = aBaseMetaTileEntity.getXCoord() + a;
- z = aBaseMetaTileEntity.getZCoord() + b;
- y = aBaseMetaTileEntity.getYCoord() - c;
+ x = baseX + a;
+ z = baseZ + b;
+ y = baseY - c;
break;//similar to 3
case 0:
- x = aBaseMetaTileEntity.getXCoord() - a;
- z = aBaseMetaTileEntity.getZCoord() - b;
- y = aBaseMetaTileEntity.getYCoord() + c;
+ x = baseX - a;
+ z = baseZ - b;
+ y = baseY + c;
break;//similar to 2
default:
return new String[]{"Invalid rotation"};
@@ -611,13 +640,23 @@ public class Util {
}
b--;//horizontal layer
}
- output.add(addMe + "},");
+ //region less verbose
+ addMe=(addMe + "},").replaceAll("(E,)+(?=})",E/*Remove Empty strings at end*/);
+ Matcher m = matchE_.matcher(addMe);
+ while (m.find()) {
+ byte lenEE = (byte)(m.group(1).length()>>1);
+ addMe=addMe.replaceFirst("E,(E,)+","\"\\\\u00"+String.format("%02X", lenEE-1)+"\",");
+ }
+ //endregion
+ output.add(addMe);
c++;//depth
}
output.add("}");
return output.toArray(new String[0]);
}
+ private static final Pattern matchE_ = Pattern.compile("(E,(E,)+)");
+
public static boolean isInputEqual(boolean aDecreaseStacksizeBySuccess, boolean aDontCheckStackSizes, FluidStack[] requiredFluidInputs, ItemStack[] requiredInputs, FluidStack[] givenFluidInputs, ItemStack... givenInputs) {
if (!GregTech_API.sPostloadFinished) return false;
if (requiredFluidInputs.length > 0 && givenFluidInputs == null) return false;
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_annihilation.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_annihilation.java
index 6c79cc0f5d..5c33103dae 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_annihilation.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_annihilation.java
@@ -19,7 +19,7 @@ import static gregtech.api.enums.GT_Values.E;
public class GT_MetaTileEntity_EM_annihilation extends GT_MetaTileEntity_MultiblockBase_EM implements constructableTT {
//region structure
private static final String[][] shape = new String[][]{
- {E,E,E,"D000","C0 0","C0 . 0","C0 0","D000",E,E,E,},
+ {"\u0002","D000","C0 0","C0 . 0","C0 0","D000"},
{"C01A10","C01A10","D1A1","00B101B00","11111111111","C01110","11111111111","00B101B00","D1A1","C01A10","C01A10",},
{"C01A10","A223222322","A244242442","03442424430","12225252221","A244222442","12225252221","03442424430","A244242442","A223222322","C01A10",},
{"D111","A244222442","A4G4","A4G4","12G21","12G21","12G21","A4G4","A4G4","A244222442","D111",},
@@ -29,7 +29,7 @@ public class GT_MetaTileEntity_EM_annihilation extends GT_MetaTileEntity_Multibl
{"D111","A244222442","A4G4","A4G4","12G21","12G21","12G21","A4G4","A4G4","A244222442","D111",},
{"C01A10","A223222322","A244242442","03442424430","12225252221","A244222442","12225252221","03442424430","A244242442","A223222322","C01A10",},
{"C01A10","C01A10","D1A1","00B101B00","11111111111","C01110","11111111111","00B101B00","D1A1","C01A10","C01A10",},
- {E,E,E,"D000","C0 0","C0 0","C0 0","D000",E,E,E,},
+ {"\u0002","D000","C0 0","C0 0","C0 0","D000"},
};
private static final Block[] blockType = new Block[]{sBlockCasingsTT, sBlockCasingsTT, sBlockCasingsTT ,sBlockCasingsTT, QuantumGlassBlock.INSTANCE, sBlockCasingsTT};
private static final byte[] blockMeta = new byte[]{4, 5, 12, 6, 0, 10};
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
index 66607b825b..afec9b88cc 100644
--- 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
@@ -31,39 +31,39 @@ public class GT_MetaTileEntity_EM_bhg extends GT_MetaTileEntity_MultiblockBase_E
//region Structure
private static final String[][] shape = new String[][]{
- {E,E,E,E,E,E,E,E,E,E,E,E,"M0000000","L00!!!!!00","L0!!!!!!!0","L0!! !!0","L0!! . !!0","L0!! !!0","L0!!!!!!!0","L00!!!!!00","M0000000",E,E,E,E,E,E,E,E,E,E,E,E,},
- {E,E,E,E,E,E,E,E,E,"O0A0","O0A0","O0A0","O0A0","N11111","M1101011","I000010010010000","M1111111","I000010010010000","M1101011","N11111","O0A0","O0A0","O0A0","O0A0",E,E,E,E,E,E,E,E,E,},
- {E,E,E,E,E,E,E,"O0A0","O0A0","O0A0","P1","P1","M1111111","L11E11","L1B222B1","G000B1A23332A1B000","J111A23332A111","G000B1A23332A1B000","L1B222B1","L11E11","M1111111","P1","P1","O0A0","O0A0","O0A0",E,E,E,E,E,E,E,},
- {E,E,E,E,E,E,"O0A0","O0A0","P1","P1",E,E,E,E,E,"F00Q00","H11M11","F00Q00",E,E,E,E,"P4","P1","P1","O0A0","O0A0",E,E,E,E,E,E,},
- {E,E,E,E,E,"O0A0","N00000","P1","P4","P4",E,E,E,E,"F0S0","E00S00","F0144M4410","E00S00","F0S0",E,E,E,E,"P4","P4","P1","N00000","O0A0",E,E,E,E,E,},
- {E,E,E,E,"O0A0","O0A0","P1","M2224222",E,E,E,E,E,"G2Q2","G2Q2","D00A2Q2A00","F14Q41","D00A2Q2A00","G2Q2","G2Q2",E,E,E,E,E,"M2224222","P1","O0A0","O0A0",E,E,E,E,},
- {E,E,E,"O0A0","N00000","P1","P4",E,E,E,E,E,E,E,"D0W0","C00W00","D014S410","C00W00","D0W0",E,E,E,E,E,E,E,"P4","P1","N00000","O0A0",E,E,E,},
- {E,E,"O0A0","O0A0","P1","M2224222",E,E,E,E,E,E,E,"E2U2","E2U2","B00A2U2A00","D14U41","B00A2U2A00","E2U2","E2U2",E,E,E,E,E,E,E,"M2224222","P1","O0A0","O0A0",E,E,},
- {E,E,"O0A0","P1","P4",E,E,E,E,E,E,E,E,E,E,"B0[0","C14W41","B0[0",E,E,E,E,E,E,E,E,E,E,"P4","P1","O0A0",E,E,},
- {E,"O0A0","O0A0","P1","P4",E,E,E,E,E,E,E,E,E,E,"A00[00","C14W41","A00[00",E,E,E,E,E,E,E,E,E,E,"P4","P1","O0A0","O0A0",E,},
- {E,"O0A0","P1",E,E,E,E,E,E,E,E,E,E,E,E,"A0]0","B1[1","A0]0",E,E,E,E,E,E,E,E,E,E,E,E,"P1","O0A0",E,},
- {E,"O0A0","P1",E,E,E,E,E,E,E,E,E,E,E,E,"A0]0","B1[1","A0]0",E,E,E,E,E,E,E,E,E,E,E,E,"P1","O0A0",E,},
- {"O0A0","O0A0","M1111111",E,E,E,E,E,E,E,E,E,E,"B1[1","B1[1","001[100","B1[1","001[100","B1[1","B1[1",E,E,E,E,E,E,E,E,E,E,"M1111111","O0A0","O0A0",},
- {"O0A0","N11111","L11E11",E,E,"G2Q2",E,"E2U2",E,E,E,E,"B1[1","B1[1","A1]1","01]10","A1]1","01]10","A1]1","B1[1","B1[1",E,E,E,E,"E2U2",E,"G2Q2",E,E,"L11E11","N11111","O0A0",},
- {"O0A0","M1101011","L1B222B1",E,"F0S0","G2Q2","D0W0","E2U2",E,E,E,E,"B1[1","A1]1","A1]1","002[200","A12[21","002[200","A1]1","A1]1","B1[1",E,E,E,E,"E2U2","D0W0","G2Q2","F0S0",E,"L1B222B1","M1101011","O0A0",},
+ {"\u000B","M0000000","L00 00","L0 0","L0 !!! 0","L0 !.! 0","L0 !!! 0","L0 0","L00 00","M0000000",},
+ {"\u0008","O0A0","O0A0","O0A0","O0A0","N11111","M1101011","I000010010010000","M1111111","I000010010010000","M1101011","N11111","O0A0","O0A0","O0A0","O0A0",},
+ {"\u0006","O0A0","O0A0","O0A0","P1","P1","M1111111","L11E11","L1B222B1","G000B1A23332A1B000","J111A23332A111","G000B1A23332A1B000","L1B222B1","L11E11","M1111111","P1","P1","O0A0","O0A0","O0A0",},
+ {"\u0005","O0A0","O0A0","P1","P1","\u0004","F00Q00","H11M11","F00Q00","\u0003","P4","P1","P1","O0A0","O0A0",},
+ {"\u0004","O0A0","N00000","P1","P4","P4","\u0003","F0S0","E00S00","F0144M4410","E00S00","F0S0","\u0003","P4","P4","P1","N00000","O0A0",},
+ {"\u0003","O0A0","O0A0","P1","M2224222","\u0004","G2Q2","G2Q2","D00A2Q2A00","F14Q41","D00A2Q2A00","G2Q2","G2Q2","\u0004","M2224222","P1","O0A0","O0A0",},
+ {"\u0002","O0A0","N00000","P1","P4","\u0006","D0W0","C00W00","D014S410","C00W00","D0W0","\u0006","P4","P1","N00000","O0A0",},
+ {"\u0001","O0A0","O0A0","P1","M2224222","\u0006","E2U2","E2U2","B00A2U2A00","D14U41","B00A2U2A00","E2U2","E2U2","\u0006","M2224222","P1","O0A0","O0A0",},
+ {"\u0001","O0A0","P1","P4","\u0009","B0[0","C14W41","B0[0","\u0009","P4","P1","O0A0",},
+ {E,"O0A0","O0A0","P1","P4","\u0009","A00[00","C14W41","A00[00","\u0009","P4","P1","O0A0","O0A0",},
+ {E,"O0A0","P1","\u000B","A0]0","B1[1","A0]0","\u000B","P1","O0A0",},
+ {E,"O0A0","P1","\u000B","A0]0","B1[1","A0]0","\u000B","P1","O0A0",},
+ {"O0A0","O0A0","M1111111","\u0009","B1[1","B1[1","001[100","B1[1","001[100","B1[1","B1[1","\u0009","M1111111","O0A0","O0A0",},
+ {"O0A0","N11111","L11E11","\u0001","G2Q2",E,"E2U2","\u0003","B1[1","B1[1","A1]1","01]10","A1]1","01]10","A1]1","B1[1","B1[1","\u0003","E2U2",E,"G2Q2","\u0001","L11E11","N11111","O0A0",},
+ {"O0A0","M1101011","L1B222B1",E,"F0S0","G2Q2","D0W0","E2U2","\u0003","B1[1","A1]1","A1]1","002[200","A12[21","002[200","A1]1","A1]1","B1[1","\u0003","E2U2","D0W0","G2Q2","F0S0",E,"L1B222B1","M1101011","O0A0",},
{"L000000000","I000010010010000","G000B1A23332A1B000","F00Q00","E00S00","D00A2Q2A00","C00W00","B00A2U2A00","B0[0","A00[00","A0]0","A0]0","001[100","01]10","002[200","003[300","013[310","003[300","002[200","01]10","001[100","A0]0","A0]0","A00[00","B0[0","B00A2U2A00","C00W00","D00A2Q2A00","E00S00","F00Q00","G000B1A23332A1B000","I000010010010000","L000000000",},
{"O0A0","M1111111","J111A23332A111","H11M11","F0144M4410","F14Q41","D014S410","D14U41","C14W41","C14W41","B1[1","B1[1","B1[1","A1]1","A12[21","013[310","A13[31","013[310","A12[21","A1]1","B1[1","B1[1","B14Y41","C14W41","C14W41","D14U41","D014S410","F14Q41","F0144M4410","H11M11","J111A23332A111","M1111111","O0A0",},
{"L000000000","I000010010010000","G000B1A23332A1B000","F00Q00","E00S00","D00A2Q2A00","C00W00","B00A2U2A00","B0[0","A00[00","A0]0","A0]0","001[100","01]10","002[200","003[300","013[310","003[300","002[200","01]10","001[100","A0]0","A0]0","A00[00","B0[0","B00A2U2A00","C00W00","D00A2Q2A00","E00S00","F00Q00","G000B1A23332A1B000","I000010010010000","L000000000",},
- {"O0A0","M1101011","L1B222B1",E,"F0S0","G2Q2","D0W0","E2U2",E,E,E,E,"B1[1","A1]1","A1]1","002[200","A12[21","002[200","A1]1","A1]1","B1[1",E,E,E,E,"E2U2","D0W0","G2Q2","F0S0",E,"L1B222B1","M1101011","O0A0",},
- {"O0A0","N11111","L11E11",E,E,"G2Q2",E,"E2U2",E,E,E,E,"B1[1","B1[1","A1]1","01]10","A1]1","01]10","A1]1","B1[1","B1[1",E,E,E,E,"E2U2",E,"G2Q2",E,E,"L11E11","N11111","O0A0",},
- {"O0A0","O0A0","M1111111",E,E,E,E,E,E,E,E,E,E,"B1[1","B1[1","001[100","B1[1","001[100","B1[1","B1[1",E,E,E,E,E,E,E,E,E,E,"M1111111","O0A0","O0A0",},
- {E,"O0A0","P1",E,E,E,E,E,E,E,E,E,E,E,E,"A0]0","B1[1","A0]0",E,E,E,E,E,E,E,E,E,E,E,E,"P1","O0A0",E,},
- {E,"O0A0","P1",E,E,E,E,E,E,E,E,E,E,E,E,"A0]0","B1[1","A0]0",E,E,E,E,E,E,E,E,E,E,E,E,"P1","O0A0",E,},
- {E,"O0A0","O0A0","P1","P4",E,E,E,E,E,E,E,E,E,E,"A00[00","C14W41","A00[00",E,E,E,E,E,E,E,E,E,E,"P4","P1","O0A0","O0A0",E,},
- {E,E,"O0A0","P1","P4",E,E,E,E,E,E,E,E,E,E,"B0[0","C14W41","B0[0",E,E,E,E,E,E,E,E,E,E,"P4","P1","O0A0",E,E,},
- {E,E,"O0A0","O0A0","P1","M2224222",E,E,E,E,E,E,E,"E2U2","E2U2","B00A2U2A00","D14U41","B00A2U2A00","E2U2","E2U2",E,E,E,E,E,E,E,"M2224222","P1","O0A0","O0A0",E,E,},
- {E,E,E,"O0A0","N00000","P1","P4",E,E,E,E,E,E,E,"D0W0","C00W00","D014S410","C00W00","D0W0",E,E,E,E,E,E,E,"P4","P1","N00000","O0A0",E,E,E,},
- {E,E,E,E,"O0A0","O0A0","P1","M2224222",E,E,E,E,E,"G2Q2","G2Q2","D00A2Q2A00","F14Q41","D00A2Q2A00","G2Q2","G2Q2",E,E,E,E,E,"M2224222","P1","O0A0","O0A0",E,E,E,E,},
- {E,E,E,E,E,"O0A0","N00000","P1","P4","P4",E,E,E,E,"F0S0","E00S00","F0144M4410","E00S00","F0S0",E,E,E,E,"P4","P4","P1","N00000","O0A0",E,E,E,E,E,},
- {E,E,E,E,E,E,"O0A0","O0A0","P1","P1",E,E,E,E,E,"F00Q00","H11M11","F00Q00",E,E,E,E,"P4","P1","P1","O0A0","O0A0",E,E,E,E,E,E,},
- {E,E,E,E,E,E,E,"O0A0","O0A0","O0A0","P1","P1","M1111111","L11E11","L1B222B1","G000B1A23332A1B000","J111A23332A111","G000B1A23332A1B000","L1B222B1","L11E11","M1111111","P1","P1","O0A0","O0A0","O0A0",E,E,E,E,E,E,E,},
- {E,E,E,E,E,E,E,E,E,"O0A0","O0A0","O0A0","O0A0","N11111","M1101011","I000010010010000","M1111111","I000010010010000","M1101011","N11111","O0A0","O0A0","O0A0","O0A0",E,E,E,E,E,E,E,E,E,},
- {E,E,E,E,E,E,E,E,E,E,E,E,"O0A0","O0A0","O0A0","L000000000","O0A0","L000000000","O0A0","O0A0","O0A0",E,E,E,E,E,E,E,E,E,E,E,E,},
+ {"O0A0","M1101011","L1B222B1",E,"F0S0","G2Q2","D0W0","E2U2","\u0003","B1[1","A1]1","A1]1","002[200","A12[21","002[200","A1]1","A1]1","B1[1","\u0003","E2U2","D0W0","G2Q2","F0S0",E,"L1B222B1","M1101011","O0A0",},
+ {"O0A0","N11111","L11E11","\u0001","G2Q2",E,"E2U2","\u0003","B1[1","B1[1","A1]1","01]10","A1]1","01]10","A1]1","B1[1","B1[1","\u0003","E2U2",E,"G2Q2","\u0001","L11E11","N11111","O0A0",},
+ {"O0A0","O0A0","M1111111","\u0009","B1[1","B1[1","001[100","B1[1","001[100","B1[1","B1[1","\u0009","M1111111","O0A0","O0A0",},
+ {E,"O0A0","P1","\u000B","A0]0","B1[1","A0]0","\u000B","P1","O0A0",},
+ {E,"O0A0","P1","\u000B","A0]0","B1[1","A0]0","\u000B","P1","O0A0",},
+ {E,"O0A0","O0A0","P1","P4","\u0009","A00[00","C14W41","A00[00","\u0009","P4","P1","O0A0","O0A0",},
+ {"\u0001","O0A0","P1","P4","\u0009","B0[0","C14W41","B0[0","\u0009","P4","P1","O0A0",},
+ {"\u0001","O0A0","O0A0","P1","M2224222","\u0006","E2U2","E2U2","B00A2U2A00","D14U41","B00A2U2A00","E2U2","E2U2","\u0006","M2224222","P1","O0A0","O0A0",},
+ {"\u0002","O0A0","N00000","P1","P4","\u0006","D0W0","C00W00","D014S410","C00W00","D0W0","\u0006","P4","P1","N00000","O0A0",},
+ {"\u0003","O0A0","O0A0","P1","M2224222","\u0004","G2Q2","G2Q2","D00A2Q2A00","F14Q41","D00A2Q2A00","G2Q2","G2Q2","\u0004","M2224222","P1","O0A0","O0A0",},
+ {"\u0004","O0A0","N00000","P1","P4","P4","\u0003","F0S0","E00S00","F0144M4410","E00S00","F0S0","\u0003","P4","P4","P1","N00000","O0A0",},
+ {"\u0005","O0A0","O0A0","P1","P1","\u0004","F00Q00","H11M11","F00Q00","\u0003","P4","P1","P1","O0A0","O0A0",},
+ {"\u0006","O0A0","O0A0","O0A0","P1","P1","M1111111","L11E11","L1B222B1","G000B1A23332A1B000","J111A23332A111","G000B1A23332A1B000","L1B222B1","L11E11","M1111111","P1","P1","O0A0","O0A0","O0A0",},
+ {"\u0008","O0A0","O0A0","O0A0","O0A0","N11111","M1101011","I000010010010000","M1111111","I000010010010000","M1101011","N11111","O0A0","O0A0","O0A0","O0A0",},
+ {"\u000B","O0A0","O0A0","O0A0","L000000000","O0A0","L000000000","O0A0","O0A0","O0A0",},
};
private static final Block[] blockType = new Block[]{sBlockCasingsTT,sBlockCasingsTT,sBlockCasingsTT,sBlockCasingsTT,sBlockCasingsTT};
private static final byte[] blockMeta = new byte[]{12, 13, 14, 10, 11};
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java
index 7b5916808b..f11efe9b0e 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_research.java
@@ -33,7 +33,7 @@ public class GT_MetaTileEntity_EM_research extends GT_MetaTileEntity_MultiblockB
//region structure
private static final String[][] shape = new String[][]{
- {E, "000", E, E, E, "000", E,},
+ {E, "000", E, E, E, "000"/*,E,*/},
{"A0", "010", "A1", "A!", "A1", "010", "A0",},
{"A0", "010", E, E, E, "010", "A0",},
{"000", "010", E, E, E, "010", "000",},
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_wormhole.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_wormhole.java
index a6839b5871..c05b56cf20 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_wormhole.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_wormhole.java
@@ -26,11 +26,11 @@ public class GT_MetaTileEntity_EM_wormhole extends GT_MetaTileEntity_MultiblockB
//region structure
private static final String[][] shape = new String[][]{
- {E,E,E,"C ","C . ","C ",E,E,E,},
- {E,E,"D0","C000","B00100","C000","D0",E,E,},
- {E,E,"D0","C2A2","B0C0","C2A2","D0",E,E,},
- {E,"D0","D0",E,"A00C00",E,"D0","D0",E,},
- {E,"D0",E,E,"A0E0",E,E,"D0",E,},
+ {E,E,E,"C ","C . ","C "/*,E,E,E,*/},
+ {E,E,"D0","C000","B00100","C000","D0"/*,E,E,*/},
+ {E,E,"D0","C2A2","B0C0","C2A2","D0"/*,E,E,*/},
+ {E,"D0","D0",E,"A00C00",E,"D0","D0"/*,E,*/},
+ {E,"D0",E,E,"A0E0",E,E,"D0"/*,E,*/},
{"D0","D0",E,E,"00E00",E,E,"D0","D0",},
{"B00000","A0033300","003C300","03E30","03E30","03E30","003C300","A0033300","B00000",},
{"B0!!!0","A 31113 ","031222130","!12C21!","!12C21!","!12C21!","031222130","A 31113 ","B0!!!0",},