Just Enough Dimensions

Just Enough Dimensions

4M Downloads

3 Issues I'm having, possible bugs?

davqvist opened this issue ยท 3 comments

commented

MC 1.10.2
Forge 2281
JED 1.3.7

So, I tried a couple of things out in a modpack I'm working on.

I created a planet with Advanced Rocketry (DIM: 1100) and defined a single Biomes O' Plenty biome (Volcanic Island) to it. Working fine.
Then I wanted JED to let me spawn me on that dimension. So I set initialSpawnDimensionId=1100 and enableInitialSpawnDimensionOverride=true. I kinda works, but the first problem I'm having is that I spawn a couple of layers below the surface suffocating.

The second problem I'm having is that I use Recurrent Complex to spawn a structure at spawn of that dimension, but it's not generating. I tested around a little bit and it works out if I let it spawn at dim 0 (Overworld). I had the idea that it might be that the dimension is not loaded early enough or something, so I added the DimensionLoader mod to load the 1100 dimension permanently. But when I do that it totally breaks and the whole world doesn't generate. Now comes the interesting thing. I exited the world and the client, deactivated DimensionLoader again and restarted the client and logged back into the world and now the world was generating, but indeed with the structure generating. So it might be indeed a loading order problem.

As the new dimension doesn't seem to load early enough I tried to modify dim 0. So I set initialSpawnDimensionId=0 and enableInitialSpawnDimensionOverride=false and edited the dimensions.json to modify dim 0. I set the biome to the BOP biome and other settings according to some examples you gave, but it was not working, the overworld was generating normal. So I wasn't sure if I used the wrong biome identifier, so I changed it to desert like in your examples, still not working. I tried some more changes like editting the worldprovider and changing the override parameter, still no change. I'm thinking that override is required if I understood it correctly but the problem probably is that the overworld is already loaded and can't be overwritten. Can it be overwritten and if yes how can I do that? Here's the json in its current state: https://pastebin.com/QqFhW452 and here the log with enableLoggingInfo=true: https://pastebin.com/9QFfd4FY

Sorry if I should have made 3 seperate issues for that: but I'm not exactly sure yet if they are issues or if I'm just doing something wrong. If not, I can create separate issues if you want.

I appreciate it if you have a look at it. Thanks in advance.

commented

Okay, let's see:

  • Could you provide me any configs and/or other necessary files and steps necessary to set that up properly, so that I can test out the Recurrent Complex issue? Does it support per-dimension structures/operation? If so, I don't know why it wouldn't work with JED... I'll have to test that out.
  • Same thing with Advanced Rocketry - I know nothing about it. Do I just set the dimension id in its config and then try if I can have that as the initial spawn dimension?
  • There have been issues with the initial spawn point being inside blocks. I have tried to fix that a few times. But it's really tricky due to the order things generate, and where I can detect whether or not the dimension loads for the first time and then set the initial spawn point. I think it should work atm other than for the issue with "decoration blocks". Basically when the dimension loads for the first time (it doesn't yet have its own level.dat file), I try to look for a suitable spawn position that isn't inside blocks. The end result of that algorithm should in most cases be suitable (I haven't seen it fail in my testing yet). But the issue is, that as the algorithm searches for that position, it does it in random locations in small jumps. So it is very much possible (even likely) that the location it finds is in a lone chunk, or in an edge chunk, ie. all the surrounding chunks haven't yet been generated, which means that the chunk decoration phase hasn't yet ran. So when the player is then teleported into that dimension the first time, then all the surrounding chunks load (possibly for the first time), and it's thus possible that the decoration for that spawn chunk runs only at this point, which means that stuff like trees may be generated right on top of the spawn position. On the other hand I don't really want to randomize my teleport code's target position, nor try to find a suitable position at each teleport, as that might be relatively resource intensive during the teleport, especially if someone is using my tp command from a command block, ie. it runs often. I might need to add external dimension loading and/or spawn point generation tracking code. Or maybe just generate all the surrounding chunks after finding a possible spawn location, and then verify and if necessary, search again for a valid position but this time only within the same chunk.
  • The dimension registration/loading related things, such as the registration order and the moment the dimensions are being registered, are rather delicate in JED, as I'm trying to work around the vanilla/Forge issue of all dimensions getting left registered after being registered once, and also all registered dimensions getting automatically loaded at server start. So basically normally once you would load a world, all the dimensions would get registered, and when you save & exit to main menu in single player, they won't get unregistered, and then if you tried to load a world again, the override stuff would all fail in JED. So I'm registering all my non-override dimensions after the moment where the registered dimensions all get loaded, but I also have to register and override all the override-dimensions before that moment. So throwing in mods that force load dimensions is likely to cause issues in JED with those dimensions.

Well that was a wall of text and doesn't cover all of your questions yet... I'll have to test things out as I don't remember myself how exactly all this works, and what works and what doesn't.

If you use Discord and want to try to figure all this out in "more real time" without talking here in the issues, you could join my "minecraft mods" channel here: https://discord.gg/2FgywHj
I might also stream while I test some of these things out, if you are interested? That would happen at https://beam.pro/masa

commented

Oh, actually I forgot to mention something:

The per-dimension spawn points are only used when the per-dimension WorldInfo is enabled for the dimension in question. Without it (as seems to be the case in your config), the /tpj command will get the exact same spawn point that the overworld has, which can then obviously be anywhere related to the terrain in the custom dimension. Often that ends up being inside the ground. I'll have to add a special note about this in the documentation, as I don't think it currently mentions this.

commented

I'm assuming (and hoping) that these issues have been solved by the many builds released since this issue was first opened.