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 ) ...