diff --git a/src/main/kotlin/net/shadowfacts/phycon/network/block/terminal/TerminalBlockEntity.kt b/src/main/kotlin/net/shadowfacts/phycon/network/block/terminal/TerminalBlockEntity.kt index 0882987..eab52cf 100644 --- a/src/main/kotlin/net/shadowfacts/phycon/network/block/terminal/TerminalBlockEntity.kt +++ b/src/main/kotlin/net/shadowfacts/phycon/network/block/terminal/TerminalBlockEntity.kt @@ -50,7 +50,6 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL), private val inventoryCache = mutableMapOf() val internalBuffer = TerminalBufferInventory(18) - private val locateRequestQueue = LinkedList() private val pendingRequests = LinkedList() override val pendingInsertions = mutableListOf() override val dispatchStackTimeout = INSERTION_TIMEOUT @@ -103,7 +102,7 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL), } if (request != null) { request.results.add(packet.amount to packet.stackProvider) - if (request.totalResultAmount >= request.amount || counter - request.timestamp >= LOCATE_REQUEST_TIMEOUT || request.results.size >= inventoryCache.size) { + if (request.isFinishable(counter)) { stackLocateRequestCompleted(request) } } @@ -149,16 +148,6 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL), } } - private fun sendEnqueuedLocateRequests() { - if (world!!.isClient) return - - for (request in locateRequestQueue) { - pendingRequests.add(request) - sendPacket(LocateStackPacket(request.stack, ipAddress)) - } - locateRequestQueue.clear() - } - private fun finishPendingRequests() { if (world!!.isClient) return if (pendingRequests.isEmpty()) return @@ -181,7 +170,6 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL), if (counter % 20 == 0L) { if (!world!!.isClient) { - sendEnqueuedLocateRequests() finishPendingRequests() beginInsertions() finishTimedOutPendingInsertions() @@ -222,7 +210,11 @@ class TerminalBlockEntity: DeviceBlockEntity(PhyBlockEntities.TERMINAL), } fun requestItem(stack: ItemStack, amount: Int = stack.count) { - locateRequestQueue.add(StackLocateRequest(stack, amount, counter)) + val request = StackLocateRequest(stack, amount, counter) + pendingRequests.add(request) + // locate packets are sent immediately instead of being added to a queue + // otherwise the terminal UI feels sluggish and unresponsive + sendPacket(LocateStackPacket(stack, ipAddress)) } private fun stackLocateRequestCompleted(request: StackLocateRequest) {