private static void playerXZMovements() {
        Player player = PlayerManager.PLAYER;

        float yawRadians = (float) Math.toRadians(player.getAng().y);
        float originalSpeedSquaredXZ = new Vector3f(player.getVel().x, 0, player.getVel().z).lengthSquared();

        Vector3f appliedForce = new Vector3f();
        if (GameInput.keysDown[Keyboard.KEY_W]) {
            appliedForce.add(new Vector3f((float) Math.sin(yawRadians), 0, (float) -Math.cos(yawRadians)));
        }
        if (GameInput.keysDown[Keyboard.KEY_S]) {
            appliedForce.add(new Vector3f((float) -Math.sin(yawRadians), 0, (float) Math.cos(yawRadians)));
        }

        if (GameInput.keysDown[Keyboard.KEY_D]) {
            appliedForce.add(new Vector3f((float) Math.sin(yawRadians + Math.PI / 2), 0, (float) -Math.cos(yawRadians + Math.PI / 2)));
        }
        if (GameInput.keysDown[Keyboard.KEY_A]) {
            appliedForce.add(new Vector3f((float) -Math.sin(yawRadians + Math.PI / 2), 0, (float) Math.cos(yawRadians + Math.PI / 2)));
        }
        if (appliedForce.lengthSquared() > 0) {
            appliedForce.normalize();
            appliedForce.scale(player.getAccel());
        }

        Vector3f appliedForceToVel = (Vector3f) appliedForce.clone();
        appliedForceToVel.scale(1 / (player.getMass() * 60));

        Vector3f finalVel = new Vector3f(player.getVel().x, 0, player.getVel().z);
        finalVel.add(appliedForceToVel);
        if (originalSpeedSquaredXZ - TOLERANCE < player.getMaxSpeed() * player.getMaxSpeed() && finalVel.lengthSquared() > player.getMaxSpeed() * player.getMaxSpeed()) {
            finalVel.normalize();
            finalVel.scale(player.getMaxSpeed());
        } else if (finalVel.lengthSquared() > player.getMaxSpeed() * player.getMaxSpeed()) {
            finalVel.normalize();
            finalVel.scale((float) Math.sqrt(originalSpeedSquaredXZ));
        }

        Vector3f finalVelMinusOldVelForce = (Vector3f) finalVel.clone();
        finalVelMinusOldVelForce.sub(new Vector3f(player.getVel().x, 0, player.getVel().z));
        finalVelMinusOldVelForce.scale(player.getMass() * 60);

        player.getRigidBody().applyCentralForce(new Vector3f(finalVelMinusOldVelForce));

        player.setVel(finalVel);
    }