Lots of stuff, not calling Block.isEmpty makes the code a lot faster.
I think most of the time is spent in the slower greedy algorithm, which goes over the data 6 times more often, but is required to do greedy meshing.
More optimizations, discovered a rare bug which cases some sides to not be added by the greedy mesher.
Fixed previously mentioned bug, now improving simple mesher and renaming variables.
Just about ready to delete extra mesher files and push
Mesher code should work and be readable/fast now. But maybe not. The new simple mesher code is much slower than the old simple mesher code, so I left both in, but the greedy mesher is used always anyway.
Most of the final changes are made to the mesher, should be fairly good now.