I got somewhat invested into trying something similar but didn’t run with it and am by no means well versed in UE so here goes
You need the world size of the landscape/mesh as reference, one array and two other variables (StartingLand SpawnLocation & CurrentLandSpawnLocation) for starters - Inside a blueprint grab all your land references, promoting as needed if needed depending on where or what BP you use. Feed them all into a make array, or make an array and put them in manually- but then you cant simply get all of class later on if this flies.
Set the spawning rules up, imagine we start from the top left for western reading/logic so starting from 000 in our world space is topleft from a top-down perspective (Dont need Starting Land Loc if 000 is always start point of gen).
For each loop of your array item: A sequence with 2 pins, first pin leads to a do once, second pin blocked by a closed gate or branch.
Do Once loop: Get(Starting LOC) spawn or move your land there, ADD total Y size of mesh to SET(CURRENT LOC) then open the second pin’s gate or branch.
For each loop (sequence pin 2):Get(Current LOC) spawn or move your land there, ADD total Y size of mesh to SET(CURRENT LOC) then check the current array INDEX against an equals node check it against 2 = 2 (Index 2) its a node inside your array to be dragged off. Have a branch, on false nothing, on true however. Add 3 to the next index equals check then; Get the starting location and subtract the lands x axis then set this as SET current spawn location (I think that is that) - loop should keep going in rows of 3, control column size by adding a check for index =8 someplace and close the starting gate again. (Index starts at 0 so an index of 8 will be the 9th item in the array).
Rotation can be done during this sequence, I just never looked into it, make the order items go in the array at construction random. Peace dude, hope you find an answer from either that mess^ or someone more qualified.