So my current solution is mildly ugly and horrendous but at least it works most of the time.
I've been working with predicates more and realized that I could use the "Alternative" predicate as an "or" statement between other predicates and stitched together a Frankenstein of location checks so that when a skeleton/zombie/spider first spawns it checks the blocks around it to see if there is a spawner. Sometimes this fails (probably cuz it does almost 150 location checks) but it's the best "working" solution I have so far. I'll probably still keep looking though because I don't know how bad this could affect world/server performance.
(the code seems to get compressed weird when I paste it in here but it's mostly just to show how horrible this solution seems to me)
[ { "condition": "minecraft:alternative", "terms": [ { "condition": "minecraft:location_check", "offsetX": 3, "offsetY": 0, "offsetZ": 3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 2, "offsetY": 0, "offsetZ": 3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 1, "offsetY": 0, "offsetZ": 3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 0, "offsetY": 0, "offsetZ": 3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -1, "offsetY": 0, "offsetZ": 3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -2, "offsetY": 0, "offsetZ": 3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -3, "offsetY": 0, "offsetZ": 3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 3, "offsetY": 0, "offsetZ": 2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 2, "offsetY": 0, "offsetZ": 2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 1, "offsetY": 0, "offsetZ": 2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 0, "offsetY": 0, "offsetZ": 2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -1, "offsetY": 0, "offsetZ": 2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -2, "offsetY": 0, "offsetZ": 2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -3, "offsetY": 0, "offsetZ": 2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 3, "offsetY": 0, "offsetZ": 1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 2, "offsetY": 0, "offsetZ": 1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 1, "offsetY": 0, "offsetZ": 1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 0, "offsetY": 0, "offsetZ": 1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -1, "offsetY": 0, "offsetZ": 1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -2, "offsetY": 0, "offsetZ": 1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -3, "offsetY": 0, "offsetZ": 1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 3, "offsetY": 0, "offsetZ": 0, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 2, "offsetY": 0, "offsetZ": 0, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 1, "offsetY": 0, "offsetZ": 0, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 0, "offsetY": 0, "offsetZ": 0, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -1, "offsetY": 0, "offsetZ": 0, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -2, "offsetY": 0, "offsetZ": 0, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -3, "offsetY": 0, "offsetZ": 0, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 3, "offsetY": 0, "offsetZ": -1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 2, "offsetY": 0, "offsetZ": -1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 1, "offsetY": 0, "offsetZ": -1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 0, "offsetY": 0, "offsetZ": -1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -1, "offsetY": 0, "offsetZ": -1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -2, "offsetY": 0, "offsetZ": -1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -3, "offsetY": 0, "offsetZ": -1, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 3, "offsetY": 0, "offsetZ": -2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 2, "offsetY": 0, "offsetZ": -2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 1, "offsetY": 0, "offsetZ": -2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 0, "offsetY": 0, "offsetZ": -2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -1, "offsetY": 0, "offsetZ": -2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -2, "offsetY": 0, "offsetZ": -2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -3, "offsetY": 0, "offsetZ": -2, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } },
{ "condition": "minecraft:location_check", "offsetX": 3, "offsetY": 0, "offsetZ": -3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 2, "offsetY": 0, "offsetZ": -3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 1, "offsetY": 0, "offsetZ": -3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": 0, "offsetY": 0, "offsetZ": -3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -1, "offsetY": 0, "offsetZ": -3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -2, "offsetY": 0, "offsetZ": -3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } }, { "condition": "minecraft:location_check", "offsetX": -3, "offsetY": 0, "offsetZ": -3, "predicate": { "block": { "blocks": [ "minecraft:spawner" ] } } } ] } ]