What i did / Steps to reproduce
Imported a dimensions using mutiverse-core plugin on Paper server
/mv import pandacube:projects/vhanthares/vhanthares normal
This dimension is stored in serverPath/world/dimensions/pandacube/projects/vhanthares/vhanthares
Expected result
No warning, and Bluemap should properly support dimensions in sub directories (Minecraft keys support having / in their values (the part after :)
Actual result
This warning appearing in the logs when loading the dimension using its key.
[BlueMap] Unexpected dimension folder path layout '/data/workdir/worlds/archi/dimensions/pandacube/projects/vhanthares/vhanthares'.
Context
BlueMap Version:
BlueMap Version >
Version: 5.22
├ fe5115d5548a30d34175b8e0449aaca280af199f
├ Implementation: paper
└ Minecraft: 26.1.2
Available Processors: 15
Available Memory: 10.0 GiB
Multiverse-Core version (supports handling of new Paper world directory structure):
Multiverse Core Version v5.7.1
Paper version:
This server is running Paper version 26.1.2-70-ver/26.1.2@70eaed6 (2026-06-14T10:18:21Z) (Implementing API version 26.1.2.build.70-stable)
Workaround
Manually setup the map configuration in /plugins/BlueMap/maps with the correct world folder and dimension key.
Code analysis
|
public BukkitWorld(World delegate) { |
|
this.delegate = new WeakReference<>(delegate); |
|
|
|
Path dimensionFolder = delegate.getWorldPath().toAbsolutePath().normalize(); |
|
int nameCount = dimensionFolder.getNameCount(); |
|
if (nameCount < 3 || !"dimensions".equals(dimensionFolder.getName(nameCount - 3).toString())) { |
|
Logger.global.logWarning("Unexpected dimension folder path layout '" + dimensionFolder + "'."); |
|
this.worldFolder = dimensionFolder; |
|
this.dimension = DataPack.DIMENSION_OVERWORLD; |
|
} else { |
|
this.worldFolder = dimensionFolder.getParent().getParent().getParent(); |
|
this.dimension = new Key( |
|
dimensionFolder.getName(nameCount - 2).toString(), |
|
dimensionFolder.getName(nameCount - 1).toString() |
|
); |
|
} |
It looks like BlueMap expects a fixed number of directory traversal between the "dimensions" directory and the actual dimension directory, preventing the worlds in sub-directory to be properly detected.
The Paper API provides
Bukkit.getServer().getLevelDirectory() that gives the level directory itself, that can be used for
this.worldFolder. Also,
delegate.getKey() already provides the key that can be used for
this.dimension.
What i did / Steps to reproduce
Imported a dimensions using mutiverse-core plugin on Paper server
/mv import pandacube:projects/vhanthares/vhanthares normalThis dimension is stored in
serverPath/world/dimensions/pandacube/projects/vhanthares/vhantharesExpected result
No warning, and Bluemap should properly support dimensions in sub directories (Minecraft keys support having
/in their values (the part after:)Actual result
This warning appearing in the logs when loading the dimension using its key.
Context
BlueMap Version:
Multiverse-Core version (supports handling of new Paper world directory structure):
Paper version:
Workaround
Manually setup the map configuration in /plugins/BlueMap/maps with the correct
worldfolder anddimensionkey.Code analysis
BlueMap/implementations/paper/src/main/java/de/bluecolored/bluemap/bukkit/BukkitWorld.java
Lines 45 to 60 in d4e383f
It looks like BlueMap expects a fixed number of directory traversal between the "dimensions" directory and the actual dimension directory, preventing the worlds in sub-directory to be properly detected.
The Paper API provides
Bukkit.getServer().getLevelDirectory()that gives the level directory itself, that can be used forthis.worldFolder. Also,delegate.getKey()already provides the key that can be used forthis.dimension.