Why won't Witches spawn in witch farm?
According to wiki:
Witches can spawn anywhere in the Overworld at a light level of 7 or less, sometimes in groups of up to three.
and
Every witch hut spawns a witch inside during world generation. Afterwards, only witches will spawn in the 7×9×7 area that is the witch hut. This is the size of the roof and one block over the porch, from one level below the floor of the hut to two blocks above the roof.
and
When lightning strikes within 3–4 blocks of a villager, the villager despawns and a witch spawns in its place, giving the effect of it turning into a witch.
Your mobtrap is valid for witch-spawning just if you meet conditions for hostile mobs spawning. Then you cannot choose which mobs will spawn, all are equally (chances can vary, though) eligible (except few, like spiders or endermen, who have special conditions...).
If you want to spawn only and only witches, you need one of those things:
- Get a mobspawner for a witch - that can be done only by cheating it in, or playing with some mods, that would add it into world-gen (For example Twillight forest has them around the map). But even then normal mob spawn can occur, just because there is enough darkness for it.
- Make your mob-trap in a place of original witch hut, then according to wiki only witches can spawn inside. I bet that might be a problem for skyblock, because huts do not generate. Also it cannot be built, it is given from generation. Maybe such a place exists also in skyblock, even when blocks for a hut don't generate, but well, good luck finding it...
- Have a villager farm and strike them with lightnings. For that you would need to be really lucky, or again, use some cheats or modifications for extensive and accurate lightning strikes. You can breed villagers in high numbers by building big enough village, then wait for or make the lightning and turn them all into witches.