Look at that beautiful auto-tiling dirt! The game now picks the right sprite automatically based on the surrounding tiles, so all I have to do is place stuff. 16 iterations was a lot of sprites considering that I'm probably just going to throw them all away, but honestly it's worth it; it looks so much nicer now. Everything places very smoothly now too, since I've implemented a simple line-fill to make sure I don't miss anything in between frames.
I'm setting aside explorations on different auto-tiling options for now and just going with the simplest one. I'll come back to it later when I can think of a better way to auto-tile in 3D. If anyone knows any novel approaches to reducing the number of sprites I need to draw for tiles to connect, let me know! My plan for now is to use logically-offset tile textures for each combination of four corners, and then just choose which one goes on top when they overlap. Until then, the next task is putting a character back in the game again. This time I'm going for something a little more humanoid; we'll see if my art skills are up to the test.