That should work. For some reason it seems that the blockarea is not read from the source world (you should check for failures - it returns a boolean).
For troubleshooting, what does ba:GetDataValues() return after the Read() call?
Or it could be some weird API binding failure, Write() function mis-interpreting one of its parameters. Try using ba:Write(DestWorld, startX, 2, startZ, cBlockArea.baTypes + cBlockArea.baMetas)
Also, I forgot that there needs to be one more ChunkStay, for the DestWorld, inside the DestWorld:QueueTask()'s callback:
For troubleshooting, what does ba:GetDataValues() return after the Read() call?
Or it could be some weird API binding failure, Write() function mis-interpreting one of its parameters. Try using ba:Write(DestWorld, startX, 2, startZ, cBlockArea.baTypes + cBlockArea.baMetas)
Also, I forgot that there needs to be one more ChunkStay, for the DestWorld, inside the DestWorld:QueueTask()'s callback:
...
DestWorld:QueueTask(
function()
DestWorld:ChunkStay({{chunkx, chunkz}}, nil,
function()
ba:Write(DestWorld, startX, 2, startZ)
ba:Clear()
end -- ChunkStay callback
)
end -- QueueTask callback
)
...

