From a8b7fb36b9c1013e800f4d173fa4beed2d04cae2 Mon Sep 17 00:00:00 2001 From: drcrazy Date: Mon, 13 Jun 2022 03:04:14 +0300 Subject: [PATCH] Allow transfer between same rate cables. Closes #2965 --- .../blockentity/cable/CableTickManager.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/techreborn/blockentity/cable/CableTickManager.java b/src/main/java/techreborn/blockentity/cable/CableTickManager.java index 5a0378654..e34b6c867 100644 --- a/src/main/java/techreborn/blockentity/cable/CableTickManager.java +++ b/src/main/java/techreborn/blockentity/cable/CableTickManager.java @@ -35,10 +35,14 @@ import java.util.*; @SuppressWarnings("UnstableApiUsage") class CableTickManager { - private static long tickCounter = 0; private static final List cableList = new ArrayList<>(); private static final List targetStorages = new ArrayList<>(); private static final Deque bfsQueue = new ArrayDeque<>(); + private static long tickCounter = 0; + + static { + ServerTickEvents.START_SERVER_TICK.register(server -> tickCounter++); + } static void handleCableTick(CableBlockEntity startingCable) { if (!(startingCable.getWorld() instanceof ServerWorld)) throw new IllegalStateException(); @@ -93,9 +97,7 @@ class CableTickManager { // Make sure we only gather and tick each cable once per tick. if (current.lastTick == tickCounter) return false; // Make sure we ignore cables in non-ticking chunks. - if (!(current.getWorld() instanceof ServerWorld sw) || !sw.isChunkLoaded(current.getPos())) return false; - - return true; + return current.getWorld() instanceof ServerWorld sw && sw.isChunkLoaded(current.getPos()); } /** @@ -112,7 +114,7 @@ class CableTickManager { CableBlockEntity current = bfsQueue.removeFirst(); for (Direction direction : Direction.values()) { - if (current.getAdjacentBlockEntity(direction) instanceof CableBlockEntity adjCable && current.getCableType() == adjCable.getCableType()) { + if (current.getAdjacentBlockEntity(direction) instanceof CableBlockEntity adjCable && current.getCableType().transferRate == adjCable.getCableType().transferRate) { if (shouldTickCable(adjCable)) { bfsQueue.add(adjCable); adjCable.lastTick = tickCounter; @@ -173,8 +175,4 @@ class CableTickManager { } } } - - static { - ServerTickEvents.START_SERVER_TICK.register(server -> tickCounter++); - } }