From d38e683abbc6815715cc67398a05d9a2e9ca4b3c Mon Sep 17 00:00:00 2001 From: Kilobyte22 Date: Sun, 6 Mar 2022 22:28:28 +0100 Subject: [PATCH] feat(block/switch): Add support for displaying link state --- .../common/blockentity/NetworkSwitchBlockEntity.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/li/cil/oc2/common/blockentity/NetworkSwitchBlockEntity.java b/src/main/java/li/cil/oc2/common/blockentity/NetworkSwitchBlockEntity.java index d9c5a903..d73dd382 100644 --- a/src/main/java/li/cil/oc2/common/blockentity/NetworkSwitchBlockEntity.java +++ b/src/main/java/li/cil/oc2/common/blockentity/NetworkSwitchBlockEntity.java @@ -28,6 +28,7 @@ import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; public final class NetworkSwitchBlockEntity extends ModBlockEntity implements NamedDevice, DocumentedDevice, NetworkInterface, TickableBlockEntity { + private final String GET_LINK_STATE = "getLinkState"; private final String GET_HOST_TABLE = "getHostTable"; private final String GET_PORT_CONFIG = "getPortConfig"; private final String SET_PORT_CONFIG = "setPortConfig"; @@ -242,6 +243,16 @@ public final class NetworkSwitchBlockEntity extends ModBlockEntity implements Na } } + @Callback(name = GET_LINK_STATE) + public boolean[] getLinkState() { + validateAdjacentBlocks(); + boolean[] sides = new boolean[Constants.BLOCK_FACE_COUNT]; + for (int i = 0; i < Constants.BLOCK_FACE_COUNT; i++) { + sides[i] = adjacentBlockInterfaces[i] != null; + } + return sides; + } + private Optional sideReverseLookup(NetworkInterface iface) { for (int i = 0; i < Constants.BLOCK_FACE_COUNT; i++) { if (iface == adjacentBlockInterfaces[i]) {