I have begun to add proper collision detection to the new engine. This is very different then how I used to do it before, since it gives me more flexibility.
The colliders (the green boxes) can take collisions from their left, top, right, and bottom. When an instance (the player or one of the enemies) checks for collisions in one of those four directions and overlaps one of the colliders, that collider will run a function set to that side.
I have a normal platform here (the purple ones) and a special one, the springs. The springs are basically normal platforms, except their top side runs a function that clears the player's bottom collision bit (so they're not considered on the ground and won't stick to it) and bounces them in the air. For the upside down spring, that function is instead assigned to the collider's bottom, so they bounce when touching the bottom of it.