Multiple Dimensions from Datapack not loaded into Dynmap FORGE
cinderous opened this issue ยท 7 comments
My dimensions are stored in world/dimensions/modname/dimensionname *There is no way around where my dimensions are because this is how datapacks stores the dimension. I use these dimensions for all my forge with with my custom mod. Dynmap doesnt know how to look in sub folders or something. How can I resolve this?
Dynmap-3.1-beta7-forge-1.16.4
forge-1.16.4-35.1.4
- Steps to Replicate: Any of my custom dimensions from my mod which uses datapacks do not work, even when adding more.
I have 4 custom dimensions, but only one seems to load as a default minecraft_dimension name. I can easily get to these dimensions with /forge setdimension so I know they function.
[09:11:43] [Server thread/INFO] [Dynmap/]: [Dynmap] Loaded 3 maps of world 'world'.
[09:11:43] [Server thread/INFO] [Dynmap/]: [Dynmap] Loaded 2 maps of world 'DIM1'.
[09:11:43] [Server thread/INFO] [Dynmap/]: [Dynmap] Loaded 2 maps of world 'DIM-1'.
[09:11:43] [Server thread/INFO] [Dynmap/]: [Dynmap] Loaded 3 maps of world 'minecraft_dimension'.
[YES] I have looked at all other issues and this is not a duplicate
[YES ] I have been able to replicate this
I've been having the same issue with Advent of Ascension mod. 21 Dimensions grouped into one and only render blackscreen
Minecraft: 1.16.5
Forge: 36.2.6
Dynmap: Dynmap-3.3-SNAPSHOT-forge-1.16.5
Java: adoptium jdk-11.0.12+7
reproduced on three different ubuntu servers with default settings from ATM6 modpack.
I have the same bug running All The Mods 6 (serverstarter-2.0.1.jar). Dimension are stored in a similar fashion as other posters.
All dimensions located in the dimensions folder render as a single minecraft_dimension.
Running forge dimensions from the console also provides an error
world
Overworld data files rest here
DIM-1
DIM1
dimensions
allthemodium
mining
the_other
twilightforest
twilightforest
Running forge dimensions from the console also provides an error.
[04:14:56] [Server thread/INFO] [minecraft/DedicatedServer]: Currently registered dimensions by type:
[04:14:56] [Server thread/INFO] [minecraft/DedicatedServer]: An unexpected error occurred trying to execute that command
I am not sure why this happens or if this is what is causing the issue, just thought it may help.
Tried some random stuff like ln -s dir to main part of world and changing values in forgeworld.yml, neither had any working effects.
I was able to get a world to add to the forgeworlds.yml file by adding the dim path with escaping the "/", but it didn't result in an enabled map, though the world name and three map icons did appear on the webpage.
The following is what i added to the file.
- sealevel: 63
nether: false
name: dimensions\/allthemodium\/mining\/
the_end: false
title: mining
height: 256
Then ran the server and the file was changed to this, with a new blank map showing without a spawn point or time.
- sealevel: 63
nether: false
name: dimensions/allthemodium/mining/
the_end: false
title: mining
height: 256
This was not reproducible though.
If there is anything I can help with like trying random things let me know, if anything ill buy a few cups of coffee!
Been reading through the source but I have still yet to put together how it all works with detecting the dimensions and writing the forgeworld file.
Minecraft: 1.16.5
Forge: 36.2.6
Dynmap: Dynmap-3.3-SNAPSHOT-forge-1.16.5
Java: openjdk version 16
Had some free time so I installed forge on its own without any mods installed. This resulted in the same error after adding in twilight forest mod and generating some chunks. This time, the twilight forest indeed did render, but the naming is still wrong coming up as minecraft_dimension.
From what my limited java skills can find in the sauce has led me to this portion from forge_1_16_5/ForgeWorld.java
public static String getWorldName(IServerWorld w) {
RegistryKey<World> rk = w.getWorld().getDimensionKey();
if (rk == World.OVERWORLD) { // Overworld?
return w.getWorld().getServer().getServerConfiguration().getWorldName();
}
else if (rk == World.THE_END) {
return "DIM1";
}
else if (rk == World.THE_NETHER) {
return "DIM-1";
}
else {
return rk.getRegistryName().getNamespace() + "_" + rk.getRegistryName().getPath();
}
}
It seems like the last else is causing all other dimensions to be lumped into one single minecraft_dimension as that is the output for each dim that runs through the code Namespace being minecraft and Path being dimension as in the dimension folder inside the world folder. I can not seem to find how all this is loaded into dynmaps though, from what I can tell, this is the code that writes the forgeworld config file.
I am wondering to myself if it would be possible to hard code world paths into the forgeworld config file and have it find the worlds that way.
Not sure what the best way to go about it since I am not a java dev by any means!
This bug has been fixed with one of the latest pushes, update your dynmaps if forge dimensions are not showing up correctly.
This bug should be closed out now. :)
confirmed working on atm6 server on the latest version at time of post.
Minecraft: 1.16.5
Forge: 36.1.1
Dynmap: 3.1-forge-1.16.5
I'm seeing the same thing in my world; I'm using Immersive Portals (Forge) with two skylands worlds and a void world; so in the end, all of my dimensions have the following folder structure on the server:
world
DIM-1
(The Nether)DIM1
(The End)region
(The Overworld)dimensions
immersive_portals
alternate1
(Skylands 1)alternate2
(Skylands 2)alternate5
(Void)
Only one of the Skylands is present in Dynmap, under the name minecraft_dimension
. I attempted to add new worlds using forgeworlds.yml
, with a few different formats for the name
field (as there may not have been a render available, to test, I flew into each dimension and checked to see if my player was showing in DynMap. Additionally, no spawn point was present.):
immersive_portals:alternate1
(dimension ID)dimensions/immersive_portals/alternate2
(folder path from root)immersive_portals/alternate1
(folder path from dimensions folder)alternate2
(dimension name)
I have also tried toggling the useSaveFolderAsName
setting for each variant, which made no difference.
It actually looks like all the dimensions might be detected as the same - my player appears no matter which alternate dimension I'm in.