McJtyMods / LostCities

MIT License
110 stars 65 forks source link

[1.16.5] Mountainous terrain in Terraforge generates above buildings #346

Open lendrick opened 3 years ago

lendrick commented 3 years ago

When Terraforge is running, if a city is in terrain that's higher than the buildings, the terrain is generated above the roofs of the buildings and over the streets. Is there a way to make it clear open space all the way to the sky to prevent that from happening? Or, can cities be limited to low terrain in some way?

McJty commented 3 years ago

For this to be possible both mods would have to work together. I currently have no time for this but I would like to have a way to get better support for this. What I need is a way to ask Terraforge the average height (or preferably a 16x16 heightmap) for a given chunk BEFORE that chunk is generated

Won-Ton commented 3 years ago
ChunkGenerator#getHeight(x, z, Heightmap.Type);

That's what most terrain-fitting structures use. It's better to sample as few points as possible (if you can get away with it) for obvious reasons.

Once you're actually generating inside the WorldGenRegion you have 3x3 chunks worth of full-resolution heightmap that you can use with negligible cost.

McJty commented 3 years ago

Yes but I can't use that because that requires the chunk to be generated. I need the data BEFORE the chunk exists or is generated

Won-Ton commented 3 years ago

No it doesn't. Not in NoiseChunkGenerator nor in TF's implementation. You're probably thinking of IWorld#getHeight (or whatever it is).

McJty commented 3 years ago

oh interesting. I thought it required the chunk. That opens possibilities indeed. I'm currently busy with another mod but I'll look into this later

lendrick commented 3 years ago

Awesome, thanks!!

itsTort commented 3 years ago

mentioned this issue in your Discord earlier as well. Just providing some additional info that might hopefully help you.

Full Mod List (other terrain structures appear to be generating: https://docs.google.com/spreadsheets/d/1mirQUHQJyEblCdLsci_LimvNevcnMxfJ1Mb8i6Cfzh4/edit?usp=sharing (mod list should be sorted by Type, with the World Generation mods at the bottom.)

Screenshot of the Problem: https://imgur.com/a/hYVhixT

I believe this started occurring more often when I upgraded TerraForge from 0.2.3 to 0.2.5. In 0.2.5 it appears they did some changes with structures that may have inadvertently affected Cities. I know I reported another mod issue, where their structures weren't spawning in at all on the newest TF update.

I hope this helps!

Brittank88 commented 3 years ago

I'd also love to see this issue resolved! The cities are beautiful, but unfortunately... image

Brittank88 commented 3 years ago

I hate to be that guy, but has it been later enough now to consider looking at this issue and whether it can be resolved? @McJty

McJty commented 3 years ago

I'm not going to be able to fix this from my side alone. I tried with IWorld.getHeight() but that didn't work. It gave invalid information which made Lost Cities generate completely wrong. I think getHeight() isn't returning the actual correct height

Brittank88 commented 3 years ago

Ah, well, thank you for getting back to me and not being annoyed about the mention! I appreciate that you've attempted to resolve this. Didn't Won-Ton say you should be trying to use ChunkGenerator#getHeight(x, z, Heightmap.Type); though?

@Won-Ton do you know of any other method that will allow for correctly determining the height, in case McJty has actually tried that already?

McJty commented 3 years ago

yes, that's the one I was trying

Brittank88 commented 3 years ago

Ah, I see, thank you for having such quick responses!

Hopefully, Won-Ton might be able to use their knowledge of Terraforged to suggest an alternate way of making this work? Holding out hope proper compatibility is possible, it would be an awesome combo.

Unrelated but, how do I change the blocks required to teleport to the dimension? I can't find anything in the configs and whilst we are chatting I thought I'd ask. I saw what you said about it not being implemented!