diff options
Diffstat (limited to 'src/main')
5 files changed, 62 insertions, 27 deletions
diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_InputData.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_InputData.java index 121f91b76a..7e3874279f 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_InputData.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_InputData.java @@ -1,5 +1,6 @@ package com.github.technus.tectech.thing.metaTileEntity.hatch; +import com.github.technus.tectech.thing.metaTileEntity.pipe.iConnectsToDataPipe; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; @@ -40,4 +41,9 @@ public class GT_MetaTileEntity_Hatch_InputData extends GT_MetaTileEntity_Hatch_D public boolean canConnect(byte side) { return isInputFacing(side); } + + @Override + public iConnectsToDataPipe getNext(iConnectsToDataPipe source) { + return null; + } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputData.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputData.java index ad05c0f9a0..fc6f946640 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputData.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputData.java @@ -1,6 +1,8 @@ package com.github.technus.tectech.thing.metaTileEntity.hatch; +import com.github.technus.tectech.TecTech; import com.github.technus.tectech.thing.metaTileEntity.pipe.GT_MetaTileEntity_Pipe_Data; +import com.github.technus.tectech.thing.metaTileEntity.pipe.iConnectsToDataPipe; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -25,12 +27,12 @@ public class GT_MetaTileEntity_Hatch_OutputData extends GT_MetaTileEntity_Hatch_ } @Override - public boolean isInputFacing(byte aSide) { + public boolean isOutputFacing(byte aSide) { return aSide == getBaseMetaTileEntity().getFrontFacing(); } @Override - public boolean isOutputFacing(byte aSide) { + public boolean isInputFacing(byte aSide) { return false; } @@ -45,29 +47,33 @@ public class GT_MetaTileEntity_Hatch_OutputData extends GT_MetaTileEntity_Hatch_ } @Override - public void moveAround(IGregTechTileEntity aBaseMetaTileEntity) {//TODO - byte color = getBaseMetaTileEntity().getColorization(); - if (color < 0) return; - byte front = aBaseMetaTileEntity.getFrontFacing(); - byte opposite = GT_Utility.getOppositeSide(getBaseMetaTileEntity().getFrontFacing()); - for (byte dist = 1; dist < 16; 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_InputData && - opposite == aMetaTileEntity.getBaseMetaTileEntity().getFrontFacing()) { - ((GT_MetaTileEntity_Hatch_InputData) aMetaTileEntity).timeout=2; - ((GT_MetaTileEntity_Hatch_InputData) aMetaTileEntity).data=data; - return; - } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Pipe_Data) { - if (((GT_MetaTileEntity_Pipe_Data) aMetaTileEntity).connectionCount > 2) return; - } else return; - } else return; - } else return; + public void moveAround(IGregTechTileEntity aBaseMetaTileEntity) { + iConnectsToDataPipe next; + int range=0; + while((next=getNext(this))!=null && range++<1000){ + if(next instanceof GT_MetaTileEntity_Hatch_InputData){ + ((GT_MetaTileEntity_Hatch_InputData) next).timeout=2; + ((GT_MetaTileEntity_Hatch_InputData) next).data=data; + } + } + } + + @Override + public iConnectsToDataPipe getNext(iConnectsToDataPipe source/*==this*/) { + IGregTechTileEntity base=getBaseMetaTileEntity(); + byte color=base.getColorization(); + if (color < 0) return null; + IGregTechTileEntity next=base.getIGregTechTileEntityAtSide(base.getFrontFacing()); + if(next==null || color!=base.getColorization()) return null; + IMetaTileEntity meta=next.getMetaTileEntity(); + if(meta instanceof iConnectsToDataPipe){ + if(meta instanceof GT_MetaTileEntity_Hatch_InputData && + GT_Utility.getOppositeSide(next.getFrontFacing())==base.getFrontFacing()) + return (iConnectsToDataPipe) meta; + if(meta instanceof GT_MetaTileEntity_Pipe_Data && + ((GT_MetaTileEntity_Pipe_Data) meta).connectionCount==2) + return (iConnectsToDataPipe) meta; } - //trace optics all the way to the end, no branching splitting etc. - //Coloring requirement! - //set data to match this and timout to 3 + return null; } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputElemental.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputElemental.java index 221e00e514..0746fb35c7 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputElemental.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputElemental.java @@ -44,14 +44,14 @@ public class GT_MetaTileEntity_Hatch_OutputElemental extends GT_MetaTileEntity_H byte color = getBaseMetaTileEntity().getColorization(); if (color < 0) return; byte front = aBaseMetaTileEntity.getFrontFacing(); - byte opposite = GT_Utility.getOppositeSide(getBaseMetaTileEntity().getFrontFacing()); + byte opposite = GT_Utility.getOppositeSide(front); for (byte dist = 1; dist < 16; 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_InputElemental && - opposite == aMetaTileEntity.getBaseMetaTileEntity().getFrontFacing()) { + opposite == tGTTileEntity.getFrontFacing()) { ((GT_MetaTileEntity_Hatch_InputElemental) aMetaTileEntity).getContainerHandler().putUnifyAll(content); ((GT_MetaTileEntity_Hatch_InputElemental) aMetaTileEntity).updateSlots(); content.clear(); diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java index b970e02237..976d56a12c 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java @@ -2,6 +2,8 @@ package com.github.technus.tectech.thing.metaTileEntity.pipe; import com.github.technus.tectech.elementalMatter.CommonValues; import com.github.technus.tectech.thing.machineTT; +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputData; +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_OutputData; import gregtech.api.enums.Dyes; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; @@ -158,4 +160,23 @@ public class GT_MetaTileEntity_Pipe_Data extends MetaPipeEntity implements iConn public boolean canConnect(byte side) { return true; } + + @Override + public iConnectsToDataPipe getNext(iConnectsToDataPipe source) { + if(connectionCount!=2) return null; + for(byte s=0;s<6;s++){ + if((mConnections&(1<<s))==0) continue;//if not connected continue + final IGregTechTileEntity next=getBaseMetaTileEntity().getIGregTechTileEntityAtSide(s); + if(next==null) continue; + final IMetaTileEntity meta=next.getMetaTileEntity(); + if(meta instanceof iConnectsToDataPipe && meta!=source){ + if(meta instanceof GT_MetaTileEntity_Hatch_InputData) + return (iConnectsToDataPipe)meta; + if(meta instanceof GT_MetaTileEntity_Pipe_Data && + ((GT_MetaTileEntity_Pipe_Data) meta).connectionCount==2) + return (iConnectsToDataPipe)meta; + } + } + return null; + } } diff --git a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/iConnectsToDataPipe.java b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/iConnectsToDataPipe.java index f78799e8c9..67db2ff5bb 100644 --- a/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/iConnectsToDataPipe.java +++ b/src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/iConnectsToDataPipe.java @@ -5,4 +5,6 @@ package com.github.technus.tectech.thing.metaTileEntity.pipe; */ public interface iConnectsToDataPipe { boolean canConnect(byte side); + + iConnectsToDataPipe getNext(iConnectsToDataPipe source); } |