The structure block is one of my favourites because of its sheer potential in making your builds more dynamic. From simply exporting (and importing) a structure right down to resetting a huge piston arena (large piston door which moves / shoves 10 blocks before throwing players into a pit; instead of mucking with redstone timing I opted for a structure load block to reset the whole thing).
One block still eludes me and that is the data block. I know what it does, and I understand the theory behind it. But I'm trying to "make" it work,. yet that fails for now and I don't understand why.
So... In case you don't know: get a structure block (/give @p structure_block), set it to load mode, and try loading this: endcity/ship. You'll get an end ship and also several data blocks which represent other structures. These data blocks are used during natural generation, and that got me thinking...
I made a new function (data:place) which does the following:
Went to the End and killed the Ender dragon (/kill @e[type=ender_dragon]).
Switched from Creative to Spectator mode and teleported myself 2500 blocks out (/tp ~2500 ~ ~).
Ran the above script.
Optionally teleported back to the main land, or simply switched modes (f3-n).
The result is always the same: I'll find a structure data block which hasn't been used.
I can somewhat understand what's going on, but the part which eludes me is the fact that by using that gamerule I never generated any chunks (which becomes fully visible when you teleport out). So why didn't the block trigger something when the area eventually did generate?
My theory is that it happened because the block didn't generate through following the seed but was planted there by me. But in a way you could say the same about that ship structure: that was also pre-generated.