[Ruins] fix leveling issues (fixes #192) #202
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Although Insane-96's issue #192 was closed as a presumed problem with templates, it actually points to some real problems related to leveling. Various functions throughout the mod disagreed as to whether the proposed Y-coordinate of a spawning site represented the base of the structure or the surface on which it was going to spawn (i.e., one block lower); as a result, structures occasionally spawned one block higher than they should. The leveling algorithm was not necessarily able to recover the surface fill block it needed after the Y-coordinate was massaged by checkArea(). The alternate nether Y-finding algorithm was outright broken. Blocks saved for the /undo function didn't account for leveling changes below the structure.
With these changes, I don't see structures "spawn in midair" any more (aside from the ones that are supposed to, of course). Leveling looks better all around, and /undo works. I didn't have to change any of the template files to fix the problems I saw.