I am creating a tile-based puzzle game involving synchronized player characters, and I've just recently added colored blocks that can be pushed around only by players of the matching color. The logic for how to do the collisions for these has been extremely painful, and although I've gotten them mostly working, I'm encountering a strange issue that I can't figure out the source of. When they are pushed against a solid surface, they tend to get stuck in a state of "almost there", where they vibrate for an apparently random amount of time before correctly snapping into place. For some reason this is significantly more noticeable when the blocks slide on ice, and it takes much longer to resolve itself. You can see the bug in this video (don't mind my friend talking; I didn't realize the gamebar would record his mic even with mine off):
I was wondering if I could get some help figuring out what's causing this bug and then figuring out how to circumvent it. If in the process I can find a better way to design the actual logic for the push blocks, that'd be great too. Here is a Google Drive link to my C3 file.
https://drive.google.com/file/d/1RoT20vv_BumySc6rlYs8Noskh8mi4dUk/view?usp=sharing