EDIT: If I remove the "player._is_on_floor" if statement from the Air State script my player jumps once but can't return to idle or jump again upon landing.
Could you share your code as a .ZIP archive? It's hard to help you without that, it's likely a small thing in the code that causes this bug.
You can put your .zip file on wetransfer or a service like that and link it here, I'll take a look at it straight inside of Godot.
I ended up fixing it with changing:
"if player.is_on_floor() and _parent.velocity.y < 1:"
Unless there is some issue this could cause going forward I am just going to stick with this fix.
That's good if it works for you!