From 3fa0b2b9d06dc3369baf408de53434337418f795 Mon Sep 17 00:00:00 2001 From: Buuz135 Date: Sat, 11 Sep 2021 12:31:14 +0200 Subject: [PATCH] Added cover cable connectivity --- .../refinedmods/refinedstorage/block/CableBlock.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/refinedmods/refinedstorage/block/CableBlock.java b/src/main/java/com/refinedmods/refinedstorage/block/CableBlock.java index a07b62072..4e2bba435 100644 --- a/src/main/java/com/refinedmods/refinedstorage/block/CableBlock.java +++ b/src/main/java/com/refinedmods/refinedstorage/block/CableBlock.java @@ -1,6 +1,7 @@ package com.refinedmods.refinedstorage.block; import com.refinedmods.refinedstorage.api.network.node.ICoverable; +import com.refinedmods.refinedstorage.api.network.node.INetworkNodeProxy; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.Cover; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager; import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverType; @@ -155,7 +156,14 @@ public class CableBlock extends NetworkNodeBlock implements IWaterLoggable { return false; } - return tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY, direction).isPresent(); + return tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY, direction).isPresent() && isSideNotCoveredOrHollow(tile, direction) && isSideNotCoveredOrHollow(world.getTileEntity(pos.offset(direction)), direction.getOpposite()); + } + + private boolean isSideNotCoveredOrHollow(TileEntity tile, Direction direction){ + if (tile == null){ + return false; + } + return tile.getCapability(NetworkNodeProxyCapability.NETWORK_NODE_PROXY_CAPABILITY, direction).map(INetworkNodeProxy::getNode).map(iNetworkNode -> iNetworkNode instanceof ICoverable && (!((ICoverable) iNetworkNode).getCoverManager().hasCover(direction) || ((ICoverable) iNetworkNode).getCoverManager().getCover(direction).getType() == CoverType.HOLLOW)).orElse(false); } private BlockState getState(BlockState currentState, IWorld world, BlockPos pos) {