From 6fae09d4102a9fdb9d09f3752a704c2b055a768f Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 26 Oct 2019 21:49:34 -0400 Subject: [PATCH] Cleanup NetworkUtil --- .../net/shadowfacts/phycon/network/NetworkUtil.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/net/shadowfacts/phycon/network/NetworkUtil.kt b/src/main/kotlin/net/shadowfacts/phycon/network/NetworkUtil.kt index 7f0f7d9..0ec0751 100644 --- a/src/main/kotlin/net/shadowfacts/phycon/network/NetworkUtil.kt +++ b/src/main/kotlin/net/shadowfacts/phycon/network/NetworkUtil.kt @@ -14,25 +14,30 @@ import java.util.* object NetworkUtil { fun findDestinations(world: World, startPos: BlockPos): List { - val results = mutableListOf() + val results = LinkedList() val visited = hashSetOf(startPos) val queue = LinkedList() addAdjacent(queue, visited, startPos) + while (queue.isNotEmpty()) { val pos = queue.pop() + val sink = PhyAttributes.PACKET_SINK.getFirstOrNull(world, pos) if (sink != null) { results.add(sink) } - if (pos === startPos || world.getBlockState(pos).block is NetworkCable) { + + if (world.getBlockState(pos).block is NetworkCable) { addAdjacent(queue, visited, pos) } + visited.add(pos) } + return results } - fun addAdjacent(queue: MutableList, visited: Set, pos: BlockPos) { + private fun addAdjacent(queue: MutableList, visited: Set, pos: BlockPos) { for (dir in Direction.values()) { val newPos = pos.offset(dir) if (newPos !in visited) {