aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/github/technus/tectech/CommonValues.java1
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_DynamoTunnel.java225
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_EnergyTunnel.java170
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java2
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java8
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java203
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Laser.java5
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToElementalPipe.java8
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToEnergyTunnel.java (renamed from src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToEMpipe.java)2
10 files changed, 615 insertions, 13 deletions
diff --git a/src/main/java/com/github/technus/tectech/CommonValues.java b/src/main/java/com/github/technus/tectech/CommonValues.java
index 352bb32e1f..8ac6188b63 100644
--- a/src/main/java/com/github/technus/tectech/CommonValues.java
+++ b/src/main/java/com/github/technus/tectech/CommonValues.java
@@ -28,6 +28,7 @@ public final class CommonValues {
// - in case some hatches are not in multiblock structure
public static final byte MULTI_CHECK_AT = 12;// multiblock checks it's state
public static final byte DISPERSE_AT = 14;// overflow hatches perform disperse
+ public static final byte TRANSFER_AT = 16;
public static final long[] AatV = new long[]{268435455,67108863,16777215,4194303,1048575,262143,65535,16383,4095,1023,255,63,15,3,1,1};
public static final String[] VOLTAGE_NAMES = new String[]{"Ultra Low Voltage", "Low Voltage", "Medium Voltage", "High Voltage", "Extreme Voltage", "Insane Voltage", "Ludicrous Voltage", "ZPM Voltage", "Ultimate Voltage", "Ultimate High Voltage", "Ultimate Extreme Voltage", "Ultimate Insane Voltage", "Ultimate Mega Voltage", "Ultimate Extended Mega Voltage", "Overpowered Voltage", "Maximum Voltage"};
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_DynamoTunnel.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_DynamoTunnel.java
new file mode 100644
index 0000000000..eeacf91014
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_DynamoTunnel.java
@@ -0,0 +1,225 @@
+package com.github.technus.tectech.thing.metaTileEntity.hatch;
+
+import com.github.technus.tectech.CommonValues;
+import com.github.technus.tectech.Util;
+import com.github.technus.tectech.thing.metaTileEntity.pipe.GT_MetaTileEntity_Pipe_Energy;
+import com.github.technus.tectech.thing.metaTileEntity.pipe.IConnectsToEnergyTunnel;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
+import gregtech.api.util.GT_Utility;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+import static com.github.technus.tectech.CommonValues.TRANSFER_AT;
+import static com.github.technus.tectech.CommonValues.V;
+import static com.github.technus.tectech.thing.metaTileEntity.Textures.OVERLAYS_ENERGY_IN_POWER_TT;
+
+/**
+ * Created by danie_000 on 16.12.2016.
+ */
+public class GT_MetaTileEntity_Hatch_DynamoTunnel extends GT_MetaTileEntity_Hatch implements IConnectsToEnergyTunnel {
+ public final int Amperes;
+ private final long upkeep;
+ private long packetsCount=0;
+
+ public GT_MetaTileEntity_Hatch_DynamoTunnel(int aID, String aName, String aNameRegional, int aTier, int aAmp) {
+ super(aID, aName, aNameRegional, aTier, 0, "Energy extracting terminal for Multiblocks");
+ Amperes = aAmp;
+ Util.setTier(aTier,this);
+ upkeep=Math.max(V[mTier]/Amperes,V[4]);
+ }
+
+ public GT_MetaTileEntity_Hatch_DynamoTunnel(String aName, int aTier, int aAmp, long aUpkeep, String aDescription, ITexture[][][] aTextures) {
+ super(aName, aTier, 0, aDescription, aTextures);
+ Amperes = aAmp;
+ upkeep=aUpkeep;
+ }
+
+ @Override
+ public ITexture[] getTexturesActive(ITexture aBaseTexture) {
+ return new ITexture[]{aBaseTexture, OVERLAYS_ENERGY_IN_POWER_TT[mTier]};
+ }
+
+ @Override
+ public ITexture[] getTexturesInactive(ITexture aBaseTexture) {
+ return new ITexture[]{aBaseTexture, OVERLAYS_ENERGY_IN_POWER_TT[mTier]};
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ packetsCount=aNBT.getLong("ePackets");
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setLong("ePackets",packetsCount);
+ }
+
+ @Override
+ public boolean isSimpleMachine() {
+ return true;
+ }
+
+ @Override
+ public boolean isFacingValid(byte aFacing) {
+ return true;
+ }
+
+ @Override
+ public boolean isAccessAllowed(EntityPlayer aPlayer) {
+ return true;
+ }
+
+ @Override
+ public boolean isOutputFacing(byte aSide) {
+ return aSide == getBaseMetaTileEntity().getFrontFacing();
+ }
+
+ @Override
+ public boolean isValidSlot(int aIndex) {
+ return false;
+ }
+
+ @Override
+ public long getMinimumStoredEU() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxEUOutput() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxEUStore() {
+ return 512L + V[mTier] * 4L * Amperes;
+ }
+
+ @Override
+ public long maxAmperesOut() {
+ return 0;
+ }
+
+ @Override
+ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GT_MetaTileEntity_Hatch_DynamoTunnel(mName, mTier, Amperes, upkeep, mDescription, mTextures);
+ }
+
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[]{
+ CommonValues.TEC_MARK_GENERAL,
+ mDescription
+ };
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ if (aBaseMetaTileEntity.isServerSide()) {
+ byte Tick = (byte) (aTick % 20);
+ if (TRANSFER_AT == Tick) {
+ if(aBaseMetaTileEntity.getStoredEU()>=maxEUOutput()) {
+ long diff = aBaseMetaTileEntity.getStoredEU() / maxEUOutput();
+ setEUVar(aBaseMetaTileEntity.getStoredEU() - diff * maxEUOutput());
+ addPackets(diff);
+ }
+ if(packetsCount>0){
+ moveAround(aBaseMetaTileEntity);
+ }
+ if(packetsCount>0){
+ long diff=(maxEUStore()-aBaseMetaTileEntity.getStoredEU())/maxEUOutput();
+ if(diff>0) {
+ setEUVar(aBaseMetaTileEntity.getStoredEU() + takePackets(diff) * maxEUOutput());
+ }
+ }
+ if(aBaseMetaTileEntity.getStoredEU()>0){
+ setEUVar(aBaseMetaTileEntity.getStoredEU()-upkeep);
+ if(aBaseMetaTileEntity.getStoredEU()<0){
+ setEUVar(0);
+ }
+ }
+ getBaseMetaTileEntity().setActive(packetsCount>0);
+ }
+ }
+ }
+
+ private void moveAround(IGregTechTileEntity aBaseMetaTileEntity) {
+ byte color = getBaseMetaTileEntity().getColorization();
+ if (color < 0) {
+ return;
+ }
+ byte front = aBaseMetaTileEntity.getFrontFacing();
+ byte opposite = GT_Utility.getOppositeSide(front);
+ for (short dist = 1; dist < 1000; dist++) {
+ IGregTechTileEntity tGTTileEntity = aBaseMetaTileEntity.getIGregTechTileEntityAtSideAndDistance(front, dist);
+ if (tGTTileEntity != null && tGTTileEntity.getColorization() == color) {
+ IMetaTileEntity aMetaTileEntity = tGTTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity != null) {
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_EnergyTunnel &&
+ opposite == tGTTileEntity.getFrontFacing()) {
+ if(maxEUOutput()>((GT_MetaTileEntity_Hatch_EnergyTunnel) aMetaTileEntity).maxEUInput()){
+ aMetaTileEntity.doExplosion(maxEUOutput());
+ }else if(maxEUOutput()==((GT_MetaTileEntity_Hatch_EnergyTunnel) aMetaTileEntity).maxEUInput()){
+ long ampRx=((GT_MetaTileEntity_Hatch_EnergyTunnel) aMetaTileEntity).Amperes;
+ if(packetsCount > ampRx && Amperes>ampRx){
+ tGTTileEntity.setToFire();
+ }else if(Amperes>ampRx){
+ tGTTileEntity.setOnFire();
+ ((GT_MetaTileEntity_Hatch_EnergyTunnel) aMetaTileEntity).addPackets(takePackets(Amperes));
+ }else {
+ ((GT_MetaTileEntity_Hatch_EnergyTunnel) aMetaTileEntity).addPackets(takePackets(Amperes));
+ }
+ }
+ return;
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Pipe_Energy) {
+ if (((GT_MetaTileEntity_Pipe_Energy) aMetaTileEntity).connectionCount > 2) {
+ return;
+ }
+ } else {
+ return;
+ }
+ } else {
+ return;
+ }
+ } else {
+ return;
+ }
+ }
+ }
+
+ @Override
+ public boolean canConnect(byte side) {
+ return isOutputFacing(side);
+ }
+
+ public void addPackets(long count){
+ packetsCount+=count;
+ }
+
+ public long takePackets(long count){
+ if(packetsCount>count){
+ packetsCount-=count;
+ return count;
+ }else {
+ count=packetsCount;
+ packetsCount=0;
+ return count;
+ }
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java
index 942a629f2f..c84057c121 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_ElementalContainer.java
@@ -5,7 +5,7 @@ import com.github.technus.tectech.Util;
import com.github.technus.tectech.mechanics.elementalMatter.core.cElementalInstanceStackMap;
import com.github.technus.tectech.mechanics.elementalMatter.core.iElementalInstanceContainer;
import com.github.technus.tectech.mechanics.elementalMatter.core.tElementalException;
-import com.github.technus.tectech.thing.metaTileEntity.pipe.IConnectsToEMpipe;
+import com.github.technus.tectech.thing.metaTileEntity.pipe.IConnectsToElementalPipe;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import gregtech.api.enums.Dyes;
@@ -29,7 +29,7 @@ import static gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Mult
/**
* Created by danie_000 on 11.12.2016.
*/
-public abstract class GT_MetaTileEntity_Hatch_ElementalContainer extends GT_MetaTileEntity_Hatch implements iElementalInstanceContainer, IConnectsToEMpipe {
+public abstract class GT_MetaTileEntity_Hatch_ElementalContainer extends GT_MetaTileEntity_Hatch implements iElementalInstanceContainer, IConnectsToElementalPipe {
private static Textures.BlockIcons.CustomIcon EM_T_SIDES;
private static Textures.BlockIcons.CustomIcon EM_T_ACTIVE;
private static Textures.BlockIcons.CustomIcon EM_T_CONN;
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_EnergyTunnel.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_EnergyTunnel.java
new file mode 100644
index 0000000000..4e7fffcf9f
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_EnergyTunnel.java
@@ -0,0 +1,170 @@
+package com.github.technus.tectech.thing.metaTileEntity.hatch;
+
+import com.github.technus.tectech.CommonValues;
+import com.github.technus.tectech.Util;
+import com.github.technus.tectech.thing.metaTileEntity.pipe.IConnectsToEnergyTunnel;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+import static com.github.technus.tectech.CommonValues.TRANSFER_AT;
+import static com.github.technus.tectech.CommonValues.V;
+import static com.github.technus.tectech.thing.metaTileEntity.Textures.OVERLAYS_ENERGY_IN_POWER_TT;
+
+/**
+ * Created by danie_000 on 16.12.2016.
+ */
+public class GT_MetaTileEntity_Hatch_EnergyTunnel extends GT_MetaTileEntity_Hatch implements IConnectsToEnergyTunnel {
+ public final int Amperes;
+ private final long upkeep;
+ private long packetsCount=0;
+
+ public GT_MetaTileEntity_Hatch_EnergyTunnel(int aID, String aName, String aNameRegional, int aTier, int aAmp) {
+ super(aID, aName, aNameRegional, aTier, 0, "Energy injecting terminal for Multiblocks");
+ Amperes = aAmp;
+ Util.setTier(aTier,this);
+ upkeep=Math.max(V[mTier]/Amperes,V[4]);
+ }
+
+ public GT_MetaTileEntity_Hatch_EnergyTunnel(String aName, int aTier, int aAmp, long aUpkeep, String aDescription, ITexture[][][] aTextures) {
+ super(aName, aTier, 0, aDescription, aTextures);
+ Amperes = aAmp;
+ this.upkeep=aUpkeep;
+ }
+
+ @Override
+ public ITexture[] getTexturesActive(ITexture aBaseTexture) {
+ return new ITexture[]{aBaseTexture, OVERLAYS_ENERGY_IN_POWER_TT[mTier]};
+ }
+
+ @Override
+ public ITexture[] getTexturesInactive(ITexture aBaseTexture) {
+ return new ITexture[]{aBaseTexture, OVERLAYS_ENERGY_IN_POWER_TT[mTier]};
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ packetsCount=aNBT.getLong("ePackets");
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ aNBT.setLong("ePackets",packetsCount);
+ }
+
+ @Override
+ public boolean isSimpleMachine() {
+ return true;
+ }
+
+ @Override
+ public boolean isFacingValid(byte aFacing) {
+ return true;
+ }
+
+ @Override
+ public boolean isAccessAllowed(EntityPlayer aPlayer) {
+ return true;
+ }
+
+ @Override
+ public boolean isInputFacing(byte aSide) {
+ return aSide == getBaseMetaTileEntity().getFrontFacing();
+ }
+
+ @Override
+ public boolean isValidSlot(int aIndex) {
+ return false;
+ }
+
+ @Override
+ public long getMinimumStoredEU() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxEUInput() {
+ return V[mTier];
+ }
+
+ @Override
+ public long maxEUStore() {
+ return 512L + V[mTier] * 4L * Amperes;
+ }
+
+ @Override
+ public long maxAmperesIn() {
+ return 0;
+ }
+
+ @Override
+ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GT_MetaTileEntity_Hatch_EnergyTunnel(mName, mTier, Amperes, upkeep, mDescription, mTextures);
+ }
+
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) {
+ return false;
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[]{
+ CommonValues.TEC_MARK_GENERAL,
+ mDescription,
+ };
+ }
+
+ @Override
+ public boolean canConnect(byte side) {
+ return isInputFacing(side);
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ if (aBaseMetaTileEntity.isServerSide()) {
+ byte Tick = (byte) (aTick % 20);
+ if (TRANSFER_AT == Tick) {
+ if(packetsCount>0){
+ long diff=(maxEUStore()-aBaseMetaTileEntity.getStoredEU())/maxEUInput();
+ if(diff>0) {
+ setEUVar(aBaseMetaTileEntity.getStoredEU() + takePackets(diff) * maxEUInput());
+ }
+ }
+ if(aBaseMetaTileEntity.getStoredEU()>0){
+ setEUVar(aBaseMetaTileEntity.getStoredEU()-upkeep);
+ if(aBaseMetaTileEntity.getStoredEU()<0){
+ setEUVar(0);
+ }
+ }
+ getBaseMetaTileEntity().setActive(packetsCount>0);
+ }
+ }
+ }
+
+ public void addPackets(long count){
+ packetsCount+=count;
+ }
+
+ public long takePackets(long count){
+ if(packetsCount>count){
+ packetsCount-=count;
+ return count;
+ }else {
+ count=packetsCount;
+ packetsCount=0;
+ return count;
+ }
+ }
+}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java
index 5e97d82aed..471870b13b 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/multi/GT_MetaTileEntity_EM_collider.java
@@ -601,7 +601,7 @@ public class GT_MetaTileEntity_EM_collider extends GT_MetaTileEntity_MultiblockB
if (isMaster()) {
switch (getParameterInInt(0,0)){
case FUSE_MODE:
- fuse(partner);
+ makeEU(fuse(partner));
break;
case COLLIDE_MODE:
//collide(partner);//todo
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java
index 6c339bdc59..6b7b36fb54 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_EM.java
@@ -29,7 +29,7 @@ import static gregtech.api.enums.Dyes.MACHINE_METAL;
/**
* Created by Tec on 26.02.2017.
*/
-public class GT_MetaTileEntity_Pipe_EM extends MetaPipeEntity implements IConnectsToEMpipe {
+public class GT_MetaTileEntity_Pipe_EM extends MetaPipeEntity implements IConnectsToElementalPipe {
private static Textures.BlockIcons.CustomIcon EMpipe;
private static Textures.BlockIcons.CustomIcon EMcandy;
public byte connectionCount = 0;
@@ -125,12 +125,12 @@ public class GT_MetaTileEntity_Pipe_EM extends MetaPipeEntity implements IConnec
}
//}
}
- if (tTileEntity instanceof IConnectsToEMpipe && ((IConnectsToEMpipe) tTileEntity).canConnect(b1)) {
+ if (tTileEntity instanceof IConnectsToElementalPipe && ((IConnectsToElementalPipe) tTileEntity).canConnect(b1)) {
mConnections |= 1 << b0;
connectionCount++;
- } else if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() instanceof IConnectsToEMpipe) {
+ } else if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() instanceof IConnectsToElementalPipe) {
if (//((IGregTechTileEntity) tTileEntity).getCoverBehaviorAtSide(b1).alwaysLookConnected(b1, ((IGregTechTileEntity) tTileEntity).getCoverIDAtSide(b1), ((IGregTechTileEntity) tTileEntity).getCoverDataAtSide(b1), ((IGregTechTileEntity) tTileEntity)) ||
- ((IConnectsToEMpipe) ((IGregTechTileEntity) tTileEntity).getMetaTileEntity()).canConnect(b1)) {
+ ((IConnectsToElementalPipe) ((IGregTechTileEntity) tTileEntity).getMetaTileEntity()).canConnect(b1)) {
mConnections |= 1 << b0;
connectionCount++;
}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java
new file mode 100644
index 0000000000..6d4be98634
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Energy.java
@@ -0,0 +1,203 @@
+package com.github.technus.tectech.thing.metaTileEntity.pipe;
+
+import com.github.technus.tectech.CommonValues;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.GT_Mod;
+import gregtech.api.enums.Dyes;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IColoredTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.BaseMetaPipeEntity;
+import gregtech.api.metatileentity.MetaPipeEntity;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Utility;
+import gregtech.common.GT_Client;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.world.World;
+import net.minecraftforge.common.util.ForgeDirection;
+
+import static gregtech.api.enums.Dyes.MACHINE_METAL;
+
+public class GT_MetaTileEntity_Pipe_Energy extends MetaPipeEntity implements IConnectsToEnergyTunnel {
+ private static Textures.BlockIcons.CustomIcon EMpipe;
+ private static Textures.BlockIcons.CustomIcon EMcandy;
+ public byte connectionCount = 0;
+
+ public GT_MetaTileEntity_Pipe_Energy(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional, 0);
+ }
+
+ public GT_MetaTileEntity_Pipe_Energy(String aName) {
+ super(aName, 0);
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity iGregTechTileEntity) {
+ return new GT_MetaTileEntity_Pipe_Energy(mName);
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister aBlockIconRegister) {
+ EMpipe = new Textures.BlockIcons.CustomIcon("iconsets/EM_LASER");
+ EMcandy = new Textures.BlockIcons.CustomIcon("iconsets/EM_CANDY");
+ super.registerIcons(aBlockIconRegister);
+ }
+
+ @Override
+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) {
+ return new ITexture[]{new GT_RenderedTexture(EMpipe), new GT_RenderedTexture(EMcandy, Dyes.getModulation(aColorIndex, MACHINE_METAL.getRGBA()))};
+ }
+
+ @Override
+ public boolean allowPutStack(IGregTechTileEntity iGregTechTileEntity, int i, byte b, ItemStack itemStack) {
+ return false;
+ }
+
+ @Override
+ public boolean allowPullStack(IGregTechTileEntity iGregTechTileEntity, int i, byte b, ItemStack itemStack) {
+ return false;
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound nbtTagCompound) {
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound nbtTagCompound) {
+ }
+
+ @Override
+ public boolean renderInside(byte b) {
+ return false;
+ }
+
+ @Override
+ public byte getTileEntityBaseType() {
+ return 4;
+ }
+
+ @Override
+ public String[] getDescription() {
+ return new String[]{
+ CommonValues.TEC_MARK_EM,
+ "Energy tunneling device.",
+ EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD + "Not a portal!!!",
+ EnumChatFormatting.AQUA + "Must be painted to work",
+ EnumChatFormatting.AQUA + "Do not cross,split or turn"
+ };
+ }
+
+ @Override
+ public void onFirstTick(IGregTechTileEntity aBaseMetaTileEntity) {
+ onPostTick(aBaseMetaTileEntity, 31);
+ }
+
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ if (aBaseMetaTileEntity.isServerSide()) {
+ if ((aTick & 31) == 31) {
+ mConnections = 0;
+ connectionCount = 0;
+ if (aBaseMetaTileEntity.getColorization() < 0) {
+ return;
+ }
+ for (byte b0 = 0, b1; b0 < 6; b0++) {
+ b1 = GT_Utility.getOppositeSide(b0);
+ //if (!aBaseMetaTileEntity.getCoverBehaviorAtSide(b0).alwaysLookConnected(b0, aBaseMetaTileEntity.getCoverIDAtSide(b0), aBaseMetaTileEntity.getCoverDataAtSide(b0), aBaseMetaTileEntity)) {
+ TileEntity tTileEntity = aBaseMetaTileEntity.getTileEntityAtSide(b0);
+ if (tTileEntity instanceof IColoredTileEntity) {
+ //if (aBaseMetaTileEntity.getColorization() >= 0) {
+ byte tColor = ((IColoredTileEntity) tTileEntity).getColorization();
+ if (tColor != aBaseMetaTileEntity.getColorization()) {
+ continue;
+ }
+ //}
+ }
+ if (tTileEntity instanceof IConnectsToEnergyTunnel && ((IConnectsToEnergyTunnel) tTileEntity).canConnect(b1)) {
+ mConnections |= 1 << b0;
+ connectionCount++;
+ } else if (tTileEntity instanceof IGregTechTileEntity && ((IGregTechTileEntity) tTileEntity).getMetaTileEntity() instanceof IConnectsToEnergyTunnel) {
+ if (//((IGregTechTileEntity) tTileEntity).getCoverBehaviorAtSide(b1).alwaysLookConnected(b1, ((IGregTechTileEntity) tTileEntity).getCoverIDAtSide(b1), ((IGregTechTileEntity) tTileEntity).getCoverDataAtSide(b1), ((IGregTechTileEntity) tTileEntity)) ||
+ ((IConnectsToEnergyTunnel) ((IGregTechTileEntity) tTileEntity).getMetaTileEntity()).canConnect(b1)) {
+ mConnections |= 1 << b0;
+ connectionCount++;
+ }
+ }
+ //}
+ //else {
+ // mConnections |= (1 << b0);
+ // if (mOld != mConnections) {
+ // connectionCount++;
+ // mOld = mConnections;
+ // }
+ //}
+ }
+ }
+
+ } else if (aBaseMetaTileEntity.isClientSide() && GT_Client.changeDetected == 4) {
+ aBaseMetaTileEntity.issueTextureUpdate();
+ }
+ }
+
+ @Override
+ public boolean canConnect(byte side) {
+ return true;
+ }
+
+ @Override
+ public AxisAlignedBB getCollisionBoundingBoxFromPool(World aWorld, int aX, int aY, int aZ) {
+ float tSpace = (1f - 0.5f)/2;
+ float tSide0 = tSpace;
+ float tSide1 = 1f - tSpace;
+ float tSide2 = tSpace;
+ float tSide3 = 1f - tSpace;
+ float tSide4 = tSpace;
+ float tSide5 = 1f - tSpace;
+
+ if(getBaseMetaTileEntity().getCoverIDAtSide((byte) 0) != 0){tSide0=tSide2=tSide4=0;tSide3=tSide5=1;}
+ if(getBaseMetaTileEntity().getCoverIDAtSide((byte) 1) != 0){tSide2=tSide4=0;tSide1=tSide3=tSide5=1;}
+ if(getBaseMetaTileEntity().getCoverIDAtSide((byte) 2) != 0){tSide0=tSide2=tSide4=0;tSide1=tSide5=1;}
+ if(getBaseMetaTileEntity().getCoverIDAtSide((byte) 3) != 0){tSide0=tSide4=0;tSide1=tSide3=tSide5=1;}
+ if(getBaseMetaTileEntity().getCoverIDAtSide((byte) 4) != 0){tSide0=tSide2=tSide4=0;tSide1=tSide3=1;}
+ if(getBaseMetaTileEntity().getCoverIDAtSide((byte) 5) != 0){tSide0=tSide2=0;tSide1=tSide3=tSide5=1;}
+
+ byte tConn = ((BaseMetaPipeEntity) getBaseMetaTileEntity()).mConnections;
+ if((tConn & 1 << ForgeDirection.DOWN.ordinal()) != 0) {
+ tSide0 = 0f;
+ }
+ if((tConn & 1 << ForgeDirection.UP.ordinal()) != 0) {
+ tSide1 = 1f;
+ }
+ if((tConn & 1 << ForgeDirection.NORTH.ordinal()) != 0) {
+ tSide2 = 0f;
+ }
+ if((tConn & 1 << ForgeDirection.SOUTH.ordinal()) != 0) {
+ tSide3 = 1f;
+ }
+ if((tConn & 1 << ForgeDirection.WEST.ordinal()) != 0) {
+ tSide4 = 0f;
+ }
+ if((tConn & 1 << ForgeDirection.EAST.ordinal()) != 0) {
+ tSide5 = 1f;
+ }
+
+ return AxisAlignedBB.getBoundingBox(aX + tSide4, aY + tSide0, aZ + tSide2, aX + tSide5, aY + tSide1, aZ + tSide3);
+ }
+
+ @Override
+ public float getThickNess() {
+ if(GT_Mod.instance.isClientSide() && GT_Client.hideValue==1) {
+ return 0.0625F;
+ }
+ return 0.5f;
+ }
+} \ No newline at end of file
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Laser.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Laser.java
deleted file mode 100644
index 4366fe2bbd..0000000000
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Laser.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.github.technus.tectech.thing.metaTileEntity.pipe;
-
-public class GT_MetaTileEntity_Pipe_Laser {
-
-}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToElementalPipe.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToElementalPipe.java
new file mode 100644
index 0000000000..5841d3d010
--- /dev/null
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToElementalPipe.java
@@ -0,0 +1,8 @@
+package com.github.technus.tectech.thing.metaTileEntity.pipe;
+
+/**
+ * Created by Tec on 26.02.2017.
+ */
+public interface IConnectsToElementalPipe {
+ boolean canConnect(byte side);
+}
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToEMpipe.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToEnergyTunnel.java
index cacdb41500..4a720d067e 100644
--- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToEMpipe.java
+++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/IConnectsToEnergyTunnel.java
@@ -3,6 +3,6 @@ package com.github.technus.tectech.thing.metaTileEntity.pipe;
/**
* Created by Tec on 26.02.2017.
*/
-public interface IConnectsToEMpipe {
+public interface IConnectsToEnergyTunnel {
boolean canConnect(byte side);
}