Don't keep checking providers after we're done
Multiple providers in one chassi still misbehave, but at least they won't crash servers.
add a low-lag get_by_id

because the isClient check is slow, and some classes only exist server
side, so know which side they are on.
and use the unsafe get

assuming the code will only be used server side.
quickset for when the manual lock is alrady set

and you don't mind a very small chance that the thread won't release.
also, do more inventory udpates per tick; noticed a bit of pipe HUD lag
on the send queue.
Make multiple provider modules in 1 chassi work.
Core rule: first provider whose filter allows providing item X is the only provider responsible for item X.
Import cleanup
Unused var cleanup
Providers/crafters fail sends when broken
We want to count all items; is quicker than filtering.
Pipes under heavy load appear further away;

also a framework for further abitrary load balancing.
crafters without load are prefered

1 block closer per stack of work out-standing.
no need for double call.

isRouter false under the same conditions that getRouter returns null.
routing is only done server side, so use the side-check-free varient of
getRouter for a small speedup.
We only ever add to promises and never modify a promise in it, so just keep track of promiseItemCount
getAllPromissesFor/donePromisses is only used to get the count for the current item, don't build and pass around a hashmap for that
use this.worldObject to check isServer()
pipes may have a null world during loading

most of the time, do it the fast way, otherwise, do it the slow one.

tempted to invert this, make it a caught exception so that the normal
case has no cost...
correct null handling

remove the always null, and un-needed check in
LogsticsSecurityTileEntity.

print an informative message, and use a non-fatal fallback when the
error happens in main proxy.
when crafters are at equal distance prefer 0 work

round the loadFactor up, rather than down.
don't bother with getClass

turtleClass.isInstance(tile) is the runtime equivelent of
tile instanceof turtleClass

25% of getTextureIndex() is spent on the getClass call in here. the
isAsignable from call is very cheap.
use the cached tile entity

15 % of sinks item is spent doing this.