Hello! I've been working on some procedural low-poly terrain generation in my spare time. I generate a plane with random bumpy edges using an ArrayMesh, then extrude its vertices downward for some cliffs and upward for some grass along the edges. It's going pretty well!

When it's just one land mass, it looks perfect. However, if I generate a few landmasses and overlap them, there's one thing that bugs me: the grass along the edges extends just a little farther than I'd like.

This is because I'm just plopping each new land on top of the others. Grassy edges are generated last, so my current method is to check if each vertex is within the area of another land and then skip drawing the tris if it is. Of course, the problem with this is that each grass vertex isn't going to have its start and end points line up perfectly with the edge of another landmass, so the last grass it draws overshoots the corner.
There are two solutions I could see to this problem, but I'm not sure if either is possible.
Question 1: Is it possible to merge two array meshes together via GDScript? If I didn't have the edges of each landmass passing through each other, I could skip having to check positions entirely and just extrude the edges upwards. I'm pretty new to 3D so I'm not entirely sure of the validity/logistics of this.
Question 2: Is it possible to subtract from the edge mesh? I've seen videos on CSG Boxes and Meshes being able to subtract from one another, but I'm not sure about a) more complex shapes, or b) its ability to work with procedural Array Meshes. I tried applying my code to a CSG Mesh, but it just closed Godot.
Any info on either approach, or some other solution I didn't think of, is greatly appreciated. If you need me to go into more detail on anything, let me know!