aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity/implementations
diff options
context:
space:
mode:
authorMartin Robertz <dream-master@gmx.net>2022-03-02 20:28:16 +0100
committerGitHub <noreply@github.com>2022-03-02 20:28:16 +0100
commitcdb0f7adbe069f258ebe653cf553eca04c87e8db (patch)
tree2a2b15f1df5fd20042f8a73bfea95bf5a15b4e6d /src/main/java/gregtech/api/metatileentity/implementations
parent058ef46cb368f3a311a39b2a67110b080d373221 (diff)
downloadGT5-Unofficial-cdb0f7adbe069f258ebe653cf553eca04c87e8db.tar.gz
GT5-Unofficial-cdb0f7adbe069f258ebe653cf553eca04c87e8db.tar.bz2
GT5-Unofficial-cdb0f7adbe069f258ebe653cf553eca04c87e8db.zip
add locks to the node graph so paths can block power transfer #25 (#950)
Co-authored-by: bot <Krampus.sack.never@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity/implementations')
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java45
1 files changed, 42 insertions, 3 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java
index 788753f0cc..08f55715cb 100644
--- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java
+++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaPipeEntity_Cable.java
@@ -8,11 +8,11 @@ import gregtech.api.enums.Dyes;
import gregtech.api.enums.Materials;
import gregtech.api.enums.TextureSet;
import gregtech.api.enums.Textures;
+import gregtech.api.graphs.Node;
+import gregtech.api.graphs.NodeList;
import gregtech.api.graphs.PowerNode;
import gregtech.api.graphs.PowerNodes;
import gregtech.api.graphs.consumers.ConsumerNode;
-import gregtech.api.graphs.Node;
-import gregtech.api.graphs.NodeList;
import gregtech.api.graphs.paths.PowerNodePath;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
@@ -22,6 +22,7 @@ import gregtech.api.interfaces.tileentity.IEnergyConnected;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.metatileentity.MetaPipeEntity;
+import gregtech.api.objects.GT_Cover_None;
import gregtech.api.render.TextureFactory;
import gregtech.api.util.*;
import gregtech.common.GT_Client;
@@ -449,7 +450,7 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
for( byte aSide = 0 ; aSide < 6 ; aSide++) if(isConnectedAtSide(aSide)) {
final TileEntity tTileEntity = baseMeta.getTileEntityAtSide(aSide);
final TileEntity tEmitter = (tTileEntity == null || tTileEntity instanceof IEnergyTile || EnergyNet.instance == null) ? tTileEntity :
- EnergyNet.instance.getTileEntity(tTileEntity.getWorldObj(), tTileEntity.xCoord, tTileEntity.yCoord, tTileEntity.zCoord);
+ EnergyNet.instance.getTileEntity(tTileEntity.getWorldObj(), tTileEntity.xCoord, tTileEntity.yCoord, tTileEntity.zCoord);
if (tEmitter instanceof IEnergyEmitter)
return true;
@@ -458,4 +459,42 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
}
return false;
}
+
+ @Override
+ public void reloadLocks() {
+ BaseMetaPipeEntity pipe = (BaseMetaPipeEntity) getBaseMetaTileEntity();
+ if (pipe.getNode() != null) {
+ for (byte i = 0; i < 6; i++) {
+ if (isConnectedAtSide(i)) {
+ final GT_CoverBehaviorBase<?> coverBehavior = pipe.getCoverBehaviorAtSideNew(i);
+ if (coverBehavior instanceof GT_Cover_None) continue;
+ final int coverId = pipe.getCoverIDAtSide(i);
+ ISerializableObject coverData = pipe.getComplexCoverDataAtSide(i);
+ if (!letsIn(coverBehavior, i, coverId, coverData, pipe) || !letsOut(coverBehavior, i, coverId, coverData, pipe)) {
+ pipe.addToLock(pipe, i);
+ } else {
+ pipe.removeFromLock(pipe, i);
+ }
+ }
+ }
+ } else {
+ boolean dontAllow = false;
+ for (byte i = 0; i < 6; i++) {
+ if (isConnectedAtSide(i)) {
+ final GT_CoverBehaviorBase<?> coverBehavior = pipe.getCoverBehaviorAtSideNew(i);
+ if (coverBehavior instanceof GT_Cover_None) continue;
+ final int coverId = pipe.getCoverIDAtSide(i);
+ ISerializableObject coverData = pipe.getComplexCoverDataAtSide(i);
+ if (!letsIn(coverBehavior, i, coverId, coverData, pipe) || !letsOut(coverBehavior, i, coverId, coverData, pipe)) {
+ dontAllow = true;
+ }
+ }
+ }
+ if (dontAllow) {
+ pipe.addToLock(pipe, 0);
+ } else {
+ pipe.removeFromLock(pipe, 0);
+ }
+ }
+ }
}