Predicate to detect walking on blocks

I have been having issues making a predicate that detects when a player is walking on a block with a tag. I have tried both what is pasted below, as well as the "walking on" condition with the same objects (of course).

I know, figuring out when a player is directly walking on something is super easy, but that does not tell me whether they are crouching on the edge of the block. I need to be able to tell that as well.

  "condition": "minecraft:entity_properties",
  "entity": "this",
  "predicate": {
    "location": {
      "position": {
        "x": {
          "min": -0.3,
          "max": 0.3
        },
        "y": -0.3,
        "z": {
          "min": -0.3,
          "max": 0.3
        }
      },
      "block": {
        "tag": "tree:woods/oak/oakheartblock"
      }
    }
  }
}
Continue to help post