Biome Id Fixer (Forge)

Biome Id Fixer (Forge)

2M Downloads

Linux Crash on loading World to 100% with BiomeIDFix installed.

Kry0hh opened this issue Β· 44 comments

commented

Hiya! I'm using Valhelsia 3's modpack. I'm trying to carry over a world from v3.1.7 to 3.2.0b, and when I install biomeidfixer in a new instance 3.1.7, and load into my world, I get a crash after loading to 100%. I do still get the JSON file, and I tried moving that over to my 3.2.0b instance with biomeidfixer installed, but it continues to crash. It seems like every instance with biomeidfixer installed crashes.

To Reproduce
Steps to reproduce the behavior:

  1. Install biomeidfixer in fresh-installed instance of the version I'm on, with my world file copied over.
  2. Load world to attempt to create json file.
  3. json file is created, but game crashes.
  4. copying json to newer version of modpack and attempting to launch there also crashes.

Expected behavior
Expected outcome would be to load into the world properly while also creating the json file, and then being able to load into the new instance using this file.

Pastebin for the crashlog:
https://pastebin.com/K0u9kKEa

json file:

Versions (please complete the following information):

  • Forge Version: 1.16.5 / 36.0.13
  • Biome mods and Versions: BoP, Autumnity, Atmospheric, Environmental, Druid Craft.
  • Version of Biome Fixer: 1.16.4/5-1.0.0.s1

I'm on Manjaro Linux, other than that I can't think of any additional info, but let me know if you need anything else.

commented

Sorry, forgot to attach the json, doing another launch to create a new one.

commented

Can't upload .jsons, so pasting contents into this pastebin:
https://pastebin.com/aMHTnjtB

commented

You should not need chocolate or biome id fixer at all after forge 36.0.2. That being said, I am curious what is happening.

So, first, you said your server is running 36.0.13, BUT, VLH3..b says it requires and downloads with forge 3.0.46, so try that first. Then, come back. But, before you come back, check that you copy and pasted that JSON file properly. It should have opening and closing curly brackets at the beginning and end of the file. If that is just a pasting error, that is cool, but if not, something else may be wrong.

commented

Also, windows or mac or lunix?

commented

Yeah, your JSON is messed up big time. It should have both ","s and curlies and ":"s.

commented
{
  "0": "minecraft:ocean",
  "1": "minecraft:plains",
  "2": "minecraft:desert",
  "3": "minecraft:mountains",
  "4": "minecraft:forest",
...
commented

I'm on Linux. Manjaro if that helps (Arch based)
I was asking about moving my current world to a newer version of the modpack, and the admins on the modpack server / one of the modpack devs were recommending I use biomeidfixer.
Could manually fixing the json fix the issue do you think?

commented

Okay, woah. Not sure how a copy paste could go that wrong, but looking at the file it does look how you described.
image

commented

Are you using the correct forge version?

commented

Are you using the correct forge version?

So I just went and double checked that, sorry for the dumb mistake here but I am using GDLauncher so it did infact default to 36.0.46, I was just misremembering based on another instance I was setting up

commented

Your server is on your Linux??

commented

Your server is on your Linux??

This instance is actually a single player world haha

commented

Can you please copy and paste your JSON complete file and update that old one, so that I can copy and paste it to my world.

commented

Yeah, for sure!

Here it is! ``` { "0": "minecraft:ocean", "1": "minecraft:plains", "2": "minecraft:desert", "3": "minecraft:mountains", "4": "minecraft:forest", "5": "minecraft:taiga", "6": "minecraft:swamp", "7": "minecraft:river", "8": "minecraft:nether_wastes", "9": "minecraft:the_end", "10": "minecraft:frozen_ocean", "11": "minecraft:frozen_river", "12": "minecraft:snowy_tundra", "13": "minecraft:snowy_mountains", "14": "minecraft:mushroom_fields", "15": "minecraft:mushroom_field_shore", "16": "minecraft:beach", "17": "minecraft:desert_hills", "18": "minecraft:wooded_hills", "19": "minecraft:taiga_hills", "20": "minecraft:mountain_edge", "21": "minecraft:jungle", "22": "minecraft:jungle_hills", "23": "minecraft:jungle_edge", "24": "minecraft:deep_ocean", "25": "minecraft:stone_shore", "26": "minecraft:snowy_beach", "27": "minecraft:birch_forest", "28": "minecraft:birch_forest_hills", "29": "minecraft:dark_forest", "30": "minecraft:snowy_taiga", "31": "minecraft:snowy_taiga_hills", "32": "minecraft:giant_tree_taiga", "33": "minecraft:giant_tree_taiga_hills", "34": "minecraft:wooded_mountains", "35": "minecraft:savanna", "36": "minecraft:savanna_plateau", "37": "minecraft:badlands", "38": "minecraft:wooded_badlands_plateau", "39": "minecraft:badlands_plateau", "40": "minecraft:small_end_islands", "41": "minecraft:end_midlands", "42": "minecraft:end_highlands", "43": "minecraft:end_barrens", "44": "minecraft:warm_ocean", "45": "minecraft:lukewarm_ocean", "46": "minecraft:cold_ocean", "47": "minecraft:deep_warm_ocean", "48": "minecraft:deep_lukewarm_ocean", "49": "minecraft:deep_cold_ocean", "50": "minecraft:deep_frozen_ocean", "51": "biomesoplenty:gravel_beach", "52": "biomesoplenty:tropic_beach", "53": "biomesoplenty:alps_foothills", "54": "biomesoplenty:redwood_forest_edge", "55": "biomesoplenty:volcanic_plains", "56": "biomesoplenty:orchard", "57": "biomesoplenty:bayou_mangrove", "58": "biomesoplenty:alps", "59": "biomesoplenty:bamboo_blossom_grove", "60": "biomesoplenty:bayou", "61": "biomesoplenty:burnt_forest", "62": "biomesoplenty:cherry_blossom_grove", "63": "biomesoplenty:coniferous_forest", "64": "biomesoplenty:coniferous_lakes", "65": "biomesoplenty:dead_forest", "66": "biomesoplenty:dead_swamp", "67": "biomesoplenty:deep_bayou", "68": "biomesoplenty:dryland", "69": "biomesoplenty:dry_boneyard", "70": "biomesoplenty:fir_clearing", "71": "biomesoplenty:flower_meadow", "72": "biomesoplenty:fungal_field", "73": "biomesoplenty:fungal_jungle", "74": "biomesoplenty:golden_prairie", "75": "biomesoplenty:grove", "76": "biomesoplenty:grove_clearing", "77": "biomesoplenty:grove_lakes", "78": "biomesoplenty:highland", "79": "biomesoplenty:highland_crag", "80": "biomesoplenty:highland_moor", "81": "biomesoplenty:jade_cliffs", "82": "biomesoplenty:jade_grassland", "83": "biomesoplenty:lavender_field", "84": "biomesoplenty:lavender_forest", "85": "biomesoplenty:lush_desert", "86": "biomesoplenty:lush_savanna", "87": "biomesoplenty:meadow", "88": "biomesoplenty:meadow_forest", "89": "biomesoplenty:mystic_grove", "90": "biomesoplenty:mystic_plains", "91": "biomesoplenty:ominous_woods", "92": "biomesoplenty:ominous_mire", "93": "biomesoplenty:origin_valley", "94": "biomesoplenty:overgrown_fungal_jungle", "95": "biomesoplenty:prairie", "96": "biomesoplenty:rainbow_hills", "97": "biomesoplenty:rainforest", "98": "biomesoplenty:rainforest_cliffs", "99": "biomesoplenty:rainforest_floodplain", "100": "biomesoplenty:redwood_forest", "101": "biomesoplenty:redwood_hills", "102": "biomesoplenty:scrubland", "103": "biomesoplenty:seasonal_forest", "104": "biomesoplenty:seasonal_orchard", "105": "biomesoplenty:seasonal_pumpkin_patch", "106": "biomesoplenty:shrubland", "107": "biomesoplenty:shrubland_hills", "108": "biomesoplenty:silkglade", "109": "biomesoplenty:silkglade_nest", "110": "biomesoplenty:snowy_coniferous_forest", "111": "biomesoplenty:snowy_maple_forest", "112": "biomesoplenty:snowy_fir_clearing", "113": "biomesoplenty:tropic_plains", "114": "biomesoplenty:tropics", "115": "biomesoplenty:tundra", "116": "biomesoplenty:tundra_basin", "117": "biomesoplenty:tundra_bog", "118": "biomesoplenty:volcano", "119": "biomesoplenty:wasteland", "120": "biomesoplenty:wetland", "121": "biomesoplenty:wetland_marsh", "122": "biomesoplenty:wooded_scrubland", "123": "biomesoplenty:wooded_wasteland", "124": "biomesoplenty:crystalline_chasm", "125": "biomesoplenty:undergrowth", "126": "biomesoplenty:visceral_heap", "127": "minecraft:the_void", "128": "biomesoplenty:withered_abyss", "129": "minecraft:sunflower_plains", "130": "minecraft:desert_lakes", "131": "minecraft:gravelly_mountains", "132": "minecraft:flower_forest", "133": "minecraft:taiga_mountains", "134": "minecraft:swamp_hills", "135": "druidcraft:darkwood_forest", "136": "endergetic:poise_forest", "137": "atmospheric:rainforest", "138": "atmospheric:rainforest_mountains", "139": "atmospheric:rainforest_plateau", "140": "minecraft:ice_spikes", "141": "atmospheric:sparse_rainforest_plateau", "142": "atmospheric:rainforest_basin", "143": "atmospheric:sparse_rainforest_basin", "144": "atmospheric:dunes", "145": "atmospheric:dunes_hills", "146": "atmospheric:flourishing_dunes", "147": "atmospheric:rocky_dunes", "148": "atmospheric:rocky_dunes_hills", "149": "minecraft:modified_jungle", "150": "atmospheric:petrified_dunes", "151": "minecraft:modified_jungle_edge", "152": "autumnity:maple_forest", "153": "autumnity:maple_forest_hills", "154": "autumnity:pumpkin_fields", "155": "minecraft:tall_birch_forest", "156": "minecraft:tall_birch_hills", "157": "minecraft:dark_forest_hills", "158": "minecraft:snowy_taiga_mountains", "160": "minecraft:giant_spruce_taiga", "161": "minecraft:giant_spruce_taiga_hills", "162": "minecraft:modified_gravelly_mountains", "163": "minecraft:shattered_savanna", "164": "minecraft:shattered_savanna_plateau", "165": "minecraft:eroded_badlands", "166": "minecraft:modified_wooded_badlands_plateau", "167": "minecraft:modified_badlands_plateau", "168": "minecraft:bamboo_jungle", "169": "minecraft:bamboo_jungle_hills", "170": "minecraft:soul_sand_valley", "171": "minecraft:crimson_forest", "172": "minecraft:warped_forest", "173": "minecraft:basalt_deltas" } ```

Desagas hid the above to make it cleaner.

commented

And to clarify, this comes from a work 3.1.7 world of VLH3?

commented

And to clarify, this comes from a work 3.1.7 world of VLH3?

Correct, yes. This was generated from loading into a 3.1.7 world

commented

If it is SP, there wont be a debug log, which is where my code output is stored. Do you have a way to turn on debug logging for your loader? If so, please do, and pasteBIN the debug file of the NEW version that is crashing. Don't paste it here, it clutters up the space, use pastebin or similar, like you did the first time you pasted here.

commented

Also, if you plan on playing on a server, this does not need to be installed on your client. It will automatically send data from the server to your client to make sure the biomes are correct. That is a vanilla / forge feature.

But, if you are migrating an old world to a the new version of the pack in SP, then, yes, you will want it.

commented

I do plan on playing this SP world, I just also have a server with my roommate. But thank you! That's good to know, I didn't know that.
Sorry for late response having trouble finding a way to get this to you with the max length in pastebin and every other alternative I can find. So I'm gonna just shoot the actual log files. I'll be late to respond to the next response, I have to get up for work in 5 hours so I need to catch some sleep, but I'll be back after my shift.
debug.log

commented

Logs were enabled by default it seems, and I made this instance fresh for this to make sure I couldn't possibly grab the wrong one since I'm gonna be hopping off now. Thanks for your time so far and I hope it helps!

commented

Alrighty, so, news ...

I loaded a world in 3.1.7, with BIdFixer installed. I then upgraded the pack to 3.2.0b, and loaded the same world, and it loaded fine. I am using Curse to load it. I can not figure out how to use that other loader you mentioned. I will try again soon.

Go sleep, ill post more here as I go. I will post my working json file for you to hopefully copy and paste over. That being said, I need to know ... does the game even start, as in, to the main screen where you can create and load worlds?

Also, you will still hvae massive biome border lines, sadly. Ugh. No mod can fix that, this or otherwise.

commented

Here is my JSON file, just change the extension back to ".json". Put it in the /saves/[world name]/biomeidfixer/ folder.
BiomeIdFixer.txt

With GDLaucher, 3.1.7, with 8gb ram allocated through java, it loaded into the world, past the 100%.

When upgrading to 3.2.0b, I would installing it as a brand new pack, not updating the old one, and then just copy over the entire saves folder. Do make sure that you are keeping the directory structure of your pack in tact., But, sadly, it works for me. Before and after updating. Hmmm ...

Keep in mind this was all tested on Mac, and I might test it on my Windows PC sometime soon, but I have no way to check a linux system at the. moment, maybe ina couple months when my new system arrives.

In your debug log from lines 71508 to 73119, Minecraft has tried to make sure that all biomes are assigned to a unique ID, and, as my code has said they are already assigned, without having to search for existing or new ids to use, it shows me that they have successfully registered.

My suggestions:

  • Try installing a clean install of the pack. Test it without my mod.
  • Test it transferring the world folder still WITHOUT my mod. If both of these work, then try just installing the latest pack in GDLauncher, and install my mod. Create a brand new world. Does the brand new world load?
  • If the above all work, it may be a bad json file, which is possible. Just copy and paste the one I shared above. It should be identical. !!Don't copy and paste the text into the file, just copy and paste the file itself.!!

If this still does not work, I am not sure. I have exhausted what I can test at my disposal.

But, at the end of the day, like I said, you do not need this mod past Forge 36.0.2, from what I understand, it has been tested, and I have tried myself, and the shifting biomes is no longer a thing. However, massive biome borders still are, that can not be fixed with any mod that currently exists.

commented

This is still an issue unfortunately. Have you made any progress looking into it? :)
EnigmaticaModpacks/Enigmatica6#2216

commented

The world path on GDLauncher in linux is
/home/<user>/.config/gdlauncher_next/instances/<instance>/saves/<worldname>/

On windows it is
C:\Users\user\AppData\Roaming\gdlauncher_next\instances\<instance>\saves\<worldname>\

On a linux server it's just
~/<instance>/<worldname>/, there is no saves folder, just a world folder in the root directory of the server. Sometimes the server jar is in the root folder, sometimes people put it in a jars/ folder and run it from an .sh script

Edit: I don't know if it affects what you are doing, but another idiosyncrasy of GDLauncher and paths is that it symlinks from C:\_gdl\ to C:\Users\user\AppData\Roaming\gdlauncher_next\. and I think the C:_gdl\ path is where it launches forge from. I don't think it does anything like that on Linux.

commented

Thank you. Because of the way I have prevented the biomes from shifting, I am unable to access the folders with a simple stored variable/constant, so, I have to dynamically determine outside of minecraft if it is running which system, so, this should help!

commented

There might be a clue in Latviandev's https://github.com/FTBTeam/FTB-Essentials

He also stores json in the world folder, in <world>/ftbessentials/

Edit: Here's the key bit https://github.com/FTBTeam/FTB-Essentials/blob/master/src/main/java/dev/ftb/mods/ftbessentials/util/FTBEWorldData.java#L32

He also seems to construct the json as an NBT compound first, and serialize it to json.

commented

Oh, you can also do the same in the serverconfig folder if you don't want to clutter the world folder, he does this with FTB ranks

https://github.com/FTBTeam/FTB-Ranks/blob/master/common/src/main/java/dev/ftb/mods/ftbranks/impl/RankManagerImpl.java#L50

commented

That is exactly what I was looking for. When I tried to use the server.getWorldPath previously, when in dev, it would not let me access it, as I am was calling it too early. I will try again, and hope that what he has done also works. And, yes, ideally, I would love to add it to the serverconfigs folder, instead of cluttering the world folder.

commented

Ah right, I forgot your mod has to work before the server is started.

Another way at the local folders I see that doesn't depend on Server is FMLPaths.GAMEDIR.get(); That gets you to the instance folder at least, from which maybe you can use Path.resolve() to navigate to the world folder in a OS-independent way

FTB chunks uses those through the architectury API as Platform.getGameFolder()
https://github.com/FTBTeam/FTB-Chunks/blob/master/common/src/main/java/dev/ftb/mods/ftbchunks/data/ClaimedChunkManager.java#L46
https://github.com/architectury/architectury-api/blob/1.16/forge/src/main/java/me/shedaniel/architectury/platform/forge/PlatformImpl.java#L46

commented
commented
commented

I think I have fixed it. If anyone is available to test in Linux and Windows, in b488257

1.0.1.s2 should be on Curse very shortly, if not already.

commented

Won't load on server, fixing now.

commented

Server crash fixed in 7b8e479. Now, just waiting to see if someone can run it on Linux.

commented

It appears to be fixed now (at least for me), and it doesn't crash at 100% world generation anymore. Thank you very much!

commented

Happy to help! I ran into this exact issue yesterday; I'm using Pop!_OS 20.04. I'll test it in an hour or so.

commented

If 0.0.0.s2 works, thats great. However, that one can not be world specific, meaning that you will have the same settings across all your worlds. This also means that the file structure is slightly different than on mac and windows. Right now, in windows, my path has both back slashes and forward ones, and then in mac it has both sometimes, and sometimes one built in minecraft function produces the full path to world, and sometimes it does not, it is all over the place. 1.0.0 of my mod allowed it to be world specific, but I can not seem to standardize my directory.

That being said, as I mentioned, you do not need the mod. There is literally no advantage to playing with it installed, as long as your world was generated AFTER forge 36.0.2.

commented

This part is fine by me, since I only plan on the one single world in this modpack (besides me and my roommates server whenever we get it back up and running). But yes, my world was actually generated after that (36.0.13) so I guess I was fine. I'm assuming the admins were just being safe, and assuming I had started the modpack on a much later version. Either way, thanks for all your help you were super active with this

commented

Here is my JSON file, just change the extension back to ".json". Put it in the /saves/[world name]/biomeidfixer/ folder.
BiomeIdFixer.txt

With GDLaucher, 3.1.7, with 8gb ram allocated through java, it loaded into the world, past the 100%.

When upgrading to 3.2.0b, I would installing it as a brand new pack, not updating the old one, and then just copy over the entire saves folder. Do make sure that you are keeping the directory structure of your pack in tact., But, sadly, it works for me. Before and after updating. Hmmm ...

Keep in mind this was all tested on Mac, and I might test it on my Windows PC sometime soon, but I have no way to check a linux system at the. moment, maybe ina couple months when my new system arrives.

In your debug log from lines 71508 to 73119, Minecraft has tried to make sure that all biomes are assigned to a unique ID, and, as my code has said they are already assigned, without having to search for existing or new ids to use, it shows me that they have successfully registered.

My suggestions:

* Try installing a clean install of the pack. Test it without my mod.

* Test it transferring the world folder still WITHOUT my mod. If both of these work, then try just installing the latest pack in GDLauncher, and install my mod. Create a brand new world. Does the brand new world load?

* If the above all work, it may be a bad json file, which is possible. Just copy and paste the one I shared above. It should be identical. !!Don't copy and paste the text into the file, just copy and paste the file itself.!!

If this still does not work, I am not sure. I have exhausted what I can test at my disposal.

But, at the end of the day, like I said, you do not need this mod past Forge 36.0.2, from what I understand, it has been tested, and I have tried myself, and the shifting biomes is no longer a thing. However, massive biome borders still are, that can not be fixed with any mod that currently exists.

Thank you for all your testing, I'm going to give your json a try. My game does load to the main screen on both versions, and also loads without mods. It also loads when I remove biomeidfixer. Will let you know how the test goes with your json file

commented

Just tested it with your JSON, and I am still unable to load my world. I also discovered that I am unable to create a new world with biomeidfixer installed.

commented

Holy shit: Wait. I just started trying the other version on your forge page just for the hell of it, cause I didn't know what to try anymore. It looks like 1.6.5/0.0.0.0.s2 works! I loaded into my world, and with the JSON file and that version installed. I don't know if there are going to be any biome issues yet, so I'll look around for a bit. But at least I load for now.

commented

Why exactly do you need a mod like this? Are you having troubles with old generated biomes acting as if they are different? IE, ghasts spawning in plains, etc? Someone else was having a few troubles with Endergenic, which caused biomes to randomly change, like some spawning in the overworld when they should be spawning in the end, etc.

commented

I had heard about things like some biomes becoming end biomes, and spawns being messed up, and although it's a pretty new world I just wanted to do this to get any of that happening out of the way preemptively

commented

I hear you. It sucks that some certain mods are causing that to happen, at least it is not vanilla anymore. LOL. I guess, better safe than sorry. Always good to be proactive! :)