aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorTechnus <daniel112092@gmail.com>2017-03-31 18:09:33 +0200
committerTechnus <daniel112092@gmail.com>2017-03-31 18:09:33 +0200
commit6920b1ad6892872d379a310840ad49c8b6410db2 (patch)
treea5155f6ad9ae9ae88252daa660da7593eee18e61 /src/main
parent5f6934c043297f47e342688c978dfa67f1b5db4f (diff)
downloadGT5-Unofficial-6920b1ad6892872d379a310840ad49c8b6410db2.tar.gz
GT5-Unofficial-6920b1ad6892872d379a310840ad49c8b6410db2.tar.bz2
GT5-Unofficial-6920b1ad6892872d379a310840ad49c8b6410db2.zip
implement data pipe behaviour
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_InputData.java6
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputData.java56
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/hatch/GT_MetaTileEntity_Hatch_OutputElemental.java4
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/GT_MetaTileEntity_Pipe_Data.java21
-rw-r--r--src/main/java/com/github/technus/tectech/thing/metaTileEntity/pipe/iConnectsToDataPipe.java2
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);
}