Previously the blade always phased through solid walls. Now, if colliding with one, it will retract forcibly. In case there are valid targets behind a wall, it will ignore them for the next 5 degrees of rotation
Previously, with two fans facing into each other, either one of them would completely overpower the other, or they'd cancel each other out. Now the force is inversely proportional to the distance, so the items end up in the middle
Same deal as previously, this bypasses the bottleneck of tile entity ticking and network latency. This change is less relevant than the previous one, because there shift-dragging or shift-double-clicking were possible with mods, while here it only really affects autoclickers. Still, it can't hurt
This allows to shift-click an entire inventory-load into a mass storage. Previously this was bottlenecked by the network latency and the tile entity tickrate.
Taking stuff out is unaffected for now, I'll see what I can do
This is the only case I found where a SlotPattern was supposed to support a stack size different from 1, but if there's any more, just add a `, true` to the end of the corresponsing slot constructor
It doesn't seem too far-fetched to suggest the seeds that fall to the ground are replanted in a natural way.
I had to replace the old ray-tracing approach with a more straightforward iteration over all possibly affected blocks (under 400, most of them skipped). In terms of performance this seems on par with the original solution (the raytrace function alone did 200 iterations).
Considerting it is no longer used anywhere (Eye of Harmony doesn't count since the AMS is long deprecated), it felt weird to still get it 10% of the time
Previously, if a caster has been idle for a while, the first time something is poured into it, it would spew out a partial load almost immediately. The original intention behind the timeout was instead to make the strand caster perform incomplete operations if no new material has been poured for a while. This change makes the behaviour closer to intended. Most of the time, persistent use of the caster would consistently reach full fill, and incomplete fill will only be processed at the end.