itsdinkd / AQM2

1.17 - 1.19.2
https://www.curseforge.com/minecraft/modpacks/another-quality-modpack-2
10 stars 6 forks source link

[BUG] [URGENT] Better Nether biomes incapable of generating in world if Minecraft is restarted after world is created. #66

Closed Laff70 closed 2 years ago

Laff70 commented 2 years ago

Modpack Version [AQM2 v1.3.3]

Minecraft Version 1.18.2

Describe the crash or bug If a world is created and the game is then closed, Better Nether terrain and blocks can't generate.

Steps to reproduce the behavior:

  1. Launch Minecraft.
  2. Create a world.
  3. Save and quit out of the world(anything you do in between is irrelevant).
  4. Quit the game(anything you do in between is still irrelevant, you could even load up the same world and many others multiple times to no effect).
  5. Relaunch Minecraft
  6. Go to said world.
  7. Go to the Nether.
  8. Find out that all new Better Nether biomes that generate look like the Nether Wastes from vanilla Minecraft.

Expected behavior I would expect the Better Nether biome to generate correctly. It's odd that a bug can even manifest this way.

Screenshots 2022-06-30_16 30 48 2022-06-30_16 30 57 2022-06-30_16 31 08

Crash log or latest.log.log Do you still need this? Two logs might be needed...

Additional context The reason no one's noticed this till now is that it's a bug that manifests in a ridiculous manner. Also, you made the Nether really awful to be in with the DoomMC mobs and the ghasts, so no one goes there for Better Nether content. I only noticed it because I modified the modpack a lot so the Nether was bearable. Also I chose the blazeborn origin. If you could tell me how I could fix it on my end that'd be great because I mainly want to play a good modpack with Better Nether in it and yours is as close as I've gotten so far. Have a good day.

itsdinkd commented 2 years ago

You modified the pack and noticed this? Have you tried this without modifying the modpack? And have you reported this to the better nether developer?

itsdinkd commented 2 years ago

Also yes please provide latest.log with a session of you exploring nether

Laff70 commented 2 years ago

You modified the pack and noticed this? Have you tried this without modifying the modpack? And have you reported this to the better nether developer?

I created a new, unmodified test instance of the modpack to determine if it was something I was doing which was causing this. I was able to determine that this happens in an unmodified instance. That's where I got these images from. I created another test instance of only Better Nether and Better End and their dependencies and the glitch didn't occur. I do think I stumbled across something similar when I was testing out the All of Fabric 5 modpack regarding weird end generation, but I could be mixing up modpacks. I thought it was an issue I caused by modifying world gen to increase Better End biomes, but now I'm not so sure. Perhaps there's a common world gen mod the modpacks have which is causing this issue to occur.

EDIT: I haven't reported it to the Better Nether developer as I'm not even sure it's their fault.

Also yes please provide latest.log with a session of you exploring nether

I will redo the test and send you both logs. By session, do you mean a video of me exploring the nether?

itsdinkd commented 2 years ago

Yeah in that case it's most likely TerraBlender causing the issues. Terrablender is needed for BYG, and other mods that add biomes.

I'm on vacation until the 7th so I won't be able to test, but even then there isn't much I can do aside from possibly tweaking terrablender configs or byg configs to see if that fixes it.

If anything though try launching a instance with just byg, better nether, better end, and terrablender. If it causes the issue, I'd definitely recommend reporting to terrablender. Or maybe try another instance with the mods listed above, but without byg and see if it occurs.

Laff70 commented 2 years ago

I can do that! Thank you for the feedback and the help regarding narrowing down the source, I greatly appreciate it!

Laff70 commented 2 years ago

So I tried to load up the instance with all mods disabled except for byg, better nether, better end, terrablender, and their dependencies, but the the game wouldn't load due to there being village trades with items from disabled mods still present. I then decided to create a new instance with only those mods. The bug didn't occur in any capacity though. As such, I figured the issue might be config related. I decided to return to the main testing instance and yank out the config folder to see if that fixed everything. It didn't at first, but I kept testing because BCLib, a dependency of the better nether and end mods, kept yammering on about some changes to mod configurations if I tried reloading saves after a restart. It offered to apply some fixes to the world and create a backup of it as well. I was testing if these fixes or lack thereof had any effect on the glitch and after a few restarts, like 2 or 3, that popup stopped showing up and worldgen simply stopped getting corrupted. Not really sure what's going on but now it appears I now have an instance which has been "cured" of this problem. I will try creating a new test instance and injecting it with files from the "cured" instance to see if that fixes anything.

Laff70 commented 2 years ago

Made a new instance, replaced config with "cured" config, made a world, exited the game, reloaded the game, got that BCLib message, but fixing or not had no apparent effect as world gen worked still. After some cycles, I noticed that not applying fixes just makes the world load forever. It doesn't technically crash though. Made a new world, quit game, think I loaded it without fixes, and terrain got corrupted. Given that this time the BCLib message keeps appearing and terrain can still corrupt, there's some other difference between these instances. Perhaps the config isn't the problem? What are these mod internals BCLib keeps talking about?

Laff70 commented 2 years ago

Decided to make a copy of the "cured" instance and replaced the config with the default one. Made a world, quit out, restarted Minecraft, and loaded into the world with no warnings from BCLib. No terrain corruption occurred. The problem is definitely not in the config but deleting the config the first time had effects on data elsewhere. Not sure where though...

Laff70 commented 2 years ago

Ok, this is extremely bizarre, but I finally located the folder of the discrepancy. It's the mod folder. I had been doing a lot of testing regarding mixing together the "cured" instance and the default instance and I was getting nonsensical results. At one point, I redownloaded the modpack with the curseforge app to verify I didn't mess up the modpack by using PolyMC and manually installing some mods that disallowed third-party downloads(it was still broken). I literally copied every file and folder except the mods folder(because they should be the same anyways) into a copy of the "cured" instance and it still worked. Then, I created a new instance of the default instance, but I replaced the mod folder with the one from the "cured" instance. That time, everything worked. I'm not sure how that could even happen. I used the exact same mod folder when creating the "cured" instance, so my best guess is that there was something in a config that made a problematic mod not update and when I deleted the config, it was finally able to do so, thus fixing the modpack. Either that, or the mods started rewriting themselves somehow. I'll try looking for differences in the mod versions.

itsdinkd commented 2 years ago

Just a little confused.

When you say config, which mod config file are you referring to? Or are you talking about the entire config folder?

Also, so it worked when you used curseforge to install the modpack? But didn't when you used a different launcher?

Laff70 commented 2 years ago

Just a little confused.

When you say config, which mod config file are you referring to? Or are you talking about the entire config folder?

I was mainly talking about deleting the entire config folder for all mods. Also, apparently the mod folder I had for my "cured" instance contained some disabled mods from a previous testing instance. As such, all observations from that testing is null and void. I tried deleting the config folder, with all mods enabled this time, and everything seemed to work fine. BCLib offered to fix the world but it didn't seem to be necessary. So it does seem that if something in the config is changed, everything could work properly. I tried again but this time kept the config folders a-b. That time BCLib said nothing and the error also occurred. As such, the problem's probably in that folder region.

If everything(config, mods, etc.) is enabled except for the BYG mod, everything works fine and BCLib says nothing. I do like the overworld biomes it adds though so that's not really a fix.

I tried deleting(configs stuff) terrablender, BYG, BCLib, BetterNether, and BetterEnd. It works if fixes are applied by BCLib, but if they aren't, the world never loads.

I tried replacing parts of the config with their counterparts from the Better Minecraft modpack. BYG asked to have its config updated, and I said no. BCLIB wanted to fix the world, I said no. World got corrupted. Maybe it'd work if I let BYG fix itself.

Also, so it worked when you used curseforge to install the modpack? But didn't when you used a different launcher?

It worked neither time. Sorry for any and all confusion.

Laff70 commented 2 years ago

So, I had BYG fix it's config(regarding me trying to use chunks of better minecraft's config), and it still didn't work. I also tried the entire config folder with everything except the a-b folders and it still didn't work. I'm aiming for BCLib not needing to fix up the world as the time needed to do so increases linearly with file size(probably). It's odd the modpack data BCLib sees every time the modpack is loaded is always different. It seems that the discrepancies are probably the reason for the corruption. Now that I think about it, I could probably monitor the non-save files and see what files are changing with each startup... I wonder that the most effective way to do that is...

Laff70 commented 2 years ago

So Windows has this functionality called RoboCopy which can allow you to copy files from one location to another. You can specify a max age(down to a day unfortunately) for files so only files newer than that are copied. I used this to locate files which changed after a restart of the instance(I fired the instance up and then immediately quit). However, not all the files actually changed... For example, the byg config file README.txt's contents weren't changed but the file date still changed. I'll have to find a way to compare the file contents as well to narrow things down even more. I made a backup of the instance folder so I can compare it with that. I used a command like "Robocopy “C:\Users\Username\AppData\Roaming\PolyMC\instances\AQMT Testing 1.3.3 Copy Copy “ “C:\Users\Username\Desktop\AQMT New Files “ /s /MAXAGE:20220706" to do it(Used cmd, the spaces before the end of the quotation marks are apparently necessary). The folders that changed were config, logs, and spoornpacks. The files that changed were icon.png, options.amecsapi.txt, options.justenoughkeys.txt, options.txt, and polymer-resourcepack.zip.

I think I should try to create a world with that instance backup I have, quit out, restore all the non-save and mod folder files, fire the modpack up again, and see if it still corrupts.

Laff70 commented 2 years ago

Well, I tried what I did in the last sentence and it still autocorrupted. I should try again and double check I'm using the default configs. I also didn't think leaving the world and coming back in the same session caused issues but maybe I need to double check... Maybe it could be a saving or loading issue? 2022-07-07_15 45 24

Laff70 commented 2 years ago

Ok, so I tested it again, this time using the default files which ship with the modpack. It still corrupted the second time I loaded the modpack and reentered the world. I decided to create another test world in that same session after a world had corrupted. When I got to the nether, it appeared barren, but I also was in a gravel desert, and they tend to be like that(may have still been partially corrupted though). I used the nature compass thing to teleport to another better nether biome and everything seemed fine. I then exited that world and loaded up the recently corrupted world. I then exited that world and loaded up the recently created world. I then teleported to a sulfuric bone reef, was submerged in lava, and then the game got astronomically laggy to the point I could only open and close the pause menu. Since I was in lava though, new terrain had to have generated. I shut down the session and started a new one. When I loaded that world, the chunks where I was were corrupted, meaning they got corrupted in the same session the world was created. As such, the problem seems to be in world loading or saving. Sorry for the confusion!

Maybe I should link this issue to the Terrabuilder, BYG, and BCLib mods issue pages. Maybe their developers could figure out what's going wrong here. It's weird because previous testing indicated the mods can work together. Also might as well upload a recent log as it contains both a world's creation and corruption.

2022-07-07-1.log

Laff70 commented 2 years ago

Ok, I have the solution to our problem. quiqueck was a massive help. It seems BYG's implementation of the BiomeSource is buggy and somehow forgets/corrupts Better Nether and Better End biome generation. Its forcing of its BiomeSources for the nether and end can be disabled though. This alone prevents BYG's nether and end biomes from appearing, but the BetterX mod's biomes will work fine. BCLib has a functionality to force it to include BYG biomes, so if that's done, everything should work fine. I know BYG has some code regarding vertical biome generation and biome weights, and I don't know if this method of including BYG biomes respects that. The same BCLib config file may have the capacity to reimplement that though. You'd probably have to talk to its developer about that though. My work here is done and the modpack is now playable for me. I will leave you a .zip file of the altered config files and a change log regarding them.

config.zip

Changes: config\bclib\biomes.json Lines: 3-5 " "end_land_biomes": ["byg:ivis_fields","byg:nightshade_forest","byg:ethereal_islands","byg:bulbis_gardens","byg:shulkren_forest","byg:cryptic_wastes","byg:imparius_grove"], "end_void_biomes": [], "nether_biomes": ["byg:weeping_mire","byg:embur_bog","byg:brimstone_caverns","byg:subzero_hypogeal","byg:warped_desert","byg:magma_wastes","byg:quartz_desert","byg:crimson_gardens","byg:glowstone_gardens","byg:sythian_torrids","byg:wailing_garth","byg:arisian_undergrowth"]" config\byg\end-biomes.json5 Line:18 " "forceBYGEndBiomeSource": false," config\byg\nether-biomes.json5 Line:188 " "forceBYGNetherBiomeSource": false,"

itsdinkd commented 2 years ago

Nice, thank you.

Does the bclib config change remove better nether biomes? i'm only seeing BYG in the config, or is that for third party biome support?

itsdinkd commented 2 years ago

scratch that, i didnt open the file before writing that. "force_include" got it.

Laff70 commented 2 years ago

Nice, thank you.

You're welcome! Also, in unrelated news, Create 0.5 is out(for forge) and one of the new things it adds is trains which can move through unloaded chunks to a programmed destination! It's so cool. Can't wait till that's ported to fabric.

inikishev commented 2 years ago

so if

Nice, thank you.

You're welcome! Also, in unrelated news, Create 0.5 is out(for forge) and one of the new things it adds is trains which can move through unloaded chunks to a programmed destination! It's so cool. Can't wait till that's ported to fabric.

i generate nether before closing the game it should be fine?

Laff70 commented 2 years ago

so if i generate nether before closing the game it should be fine?

If(in the unmodified modpack) you pre-generate all the nether terrain you will want before closing the world, it should be fine. Not sure why you'd want to do that though when you could just alter the config so it doesn't autocorrupt.