Closed VL4DST3R closed 4 years ago
This is due to Multiverse not loading it's worlds on startup.. so BlueMap can't find them. But BlueMap needs the worlds UUID from the start to be able to work properly..
There is #109 which might fix this issue, but for now you need to make sure your multiverse worlds are loaded on startup.
I think you can do that with this multiverse config: https://github.com/Multiverse/Multiverse-Core/wiki/World-properties#auto-load, but i have not tested that ^^
Even so, BlueMap works fine with all the multiverse overworld maps i've thrown its way, it's just the nether/end that's having trouble with.
All the worlds i have available are set to auto-load, otherwise you won't be able to access them at all via the multiverse, so that config won't really help.
I would also like to know more info about how BlueMap world folder path works, since for overworld you don't need to point a dimension, while for nether/end you do? Is there something in the root of the world folder that's not available in the DIM-X folder (or maybe the other way around?) which is causing this?
Even so, BlueMap works fine with all the multiverse overworld maps
That is weird but unlikely caused by BlueMap... BlueMap is using Spigots getServer().getWorlds()
to get the worlds, and matching them against their folder:
https://github.com/BlueMap-Minecraft/BlueMap/blob/master/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java#L215
If the world does not exist there, then your error occurs.
I would also like to know more info about how BlueMap world folder path works, since for overworld you don't need to point a dimension, while for nether/end you do?
Spigot is doing some unusual stuff with its world-folders.
Usually a minecraft world has multiple dimensions ... the overworld in world/
, the nether in world/DIM-1
and the end in world/DIM1
.
Spigot decided to split the dimensions in multiple worlds. To make the API easier i guess.. But it still needs to have the DIM-1 and the DIM1 folders if the world is a nether or an end dimension ...
BlueMap mainly needs the region files of a world. The region files are found in world/region
for an overworld dimension and in world/DIM-1/region
for the nether .. etc..
So it takes <the worldfolder from your config>/region
to find them :)
Thats why you have to add those folders based on dimension :)
Gotcha, thanks for the explanation! Another thing to mention is the fact that Dynmap (another map rendering plugin) works just fine with multiverse servers, so i'm guessing a method exists to avoid whatever bs spigot is doing with that function. Do you have to get the worlds UUID that way? Or at all? Considering we're already pointing BlueMap to the right world folder from where to generate the render, wouldn't that be enough?
Finally, assuming this issue is indeed external (see what i mentioned above about Dynmap working just fine) should we forward this to Multiverse/Spigot devs? Another thing that may be worth to note is that i'm running the Paper fork of Spigot.
should we forward this to Multiverse/Spigot devs
Wait with that.. I think at least #109 should be able to fix this..
Do you have to get the worlds UUID that way?
Yes, the UUID's are for example needed to match the block-change events to the correct world to update the maps Also live-player markers need the world UUIDs ^^
i'm running the Paper fork of Spigot
I just tested multiverse on Spigot 1.16.1 and i did not manage to reproduce your issue, i created a mv-nether and bluemap could load it without any problems.. i have not used a world-container though, need to test that as well .. i'll also try it on paper
Okay, thanks for the help! Do tell me if you manage to reproduce it on your end. Also if i can help with anything else.
@VL4DST3R can you send me your Multiverse config.yml
? I am not able to reproduce, even when using paper and a world-container everything is working fine for me..
the multiverse core config?
# ------------------------------------------------------------------------- #
# This is the MV2 Config. If you mess it up, copy the values out #
# delete it, and it will be regenerated. Then use the ingame interface #
# to add your values back via the "/mv conf" command. #
# When in-game, simply type: "/mv conf ?" for help. #
# A config with explanations can be found here: #
# https://github.com/Multiverse/Multiverse-Core/wiki/config.yml #
# #
# #
# IMPORTANT !! IMPORTANT !! IMPORTANT !! IMPORTANT !! IMPORTANT !!IMPORTANT #
# #
# Do NOT delete this line from your config!!!! #
# ==: com.onarandombox.MultiverseCore.MultiverseCoreConfiguration #
# #
# IMPORTANT !! IMPORTANT !! IMPORTANT !! IMPORTANT !! IMPORTANT !!IMPORTANT #
# ------------------------------------------------------------------------- #
multiverse-configuration:
==: com.onarandombox.MultiverseCore.MultiverseCoreConfiguration
enforceaccess: 'false'
prefixchat: 'true'
prefixchatformat: '[%world%]%chat%'
useasyncchat: 'true'
teleportintercept: 'true'
firstspawnoverride: 'true'
displaypermerrors: 'true'
globaldebug: '0'
silentstart: 'false'
messagecooldown: '5000'
version: '2.9'
firstspawnworld: hub
teleportcooldown: '1000'
defaultportalsearch: 'false'
portalsearchradius: '128'
autopurge: 'true'
idonotwanttodonate: 'false'
Doesn't really have anything related to world loading. You want the worlds.yml
instead?
Also, have you tested with the Multiverse-NetherPortals
extension as well? Since it fiddles with dimension portals, maybe it could be related?
ah yeah .. i meant the worlds.yml
sorry..
Also, have you tested with the Multiverse-NetherPortals extension as well?
I doubt that that is affecting world-loading tho?
I doubt too, but at this point i'm grasping at straws, anything that could affect worlds/dimensions as a whole is something to consider...
Here: worlds.yml.txt (renamed to .txt since apparently git doesn't like .yml) Disclaimer: it's quite huge, server has been up for many years with multiple generations of players.
I'm guessing there's no way for me to manually get that UUID for a particular world like your plugin does when initializing? I was curious what does my server report for nether/end worlds when asked, and if indeed, for some reason it comes up blank, hence the error.
The configs look the same, i still can't reproduce it. :/
I'm guessing there's no way for me to manually get that UUID for a particular world
No i don't think there is an easy way to check that..
Here, my BlueMap render.conf
. Maybe i'm just a dumbass and broke something without even realizing. I've compared it with the default .conf and it looks fine to me, but better check:
## ##
## BlueMap ##
## Render-Config ##
## ##
# The folder (webroot) where the map-data and web-application files will be saved.
# Default is "bluemap/web"
webroot: "Plugins/BlueMap/web"
# If the web-application should use cookies to save the configurations of a user.
# Default is true
useCookies: true
# This is an array with multiple configured maps.
# You can define multiple maps, for different worlds with different render-settings here
maps: [
{
# The id of this map
# Should only contain word-charactes: [a-zA-Z0-9_]
# Changing this value breaks your existing renders.
id: "hub"
# The name of this map
# This defines the display name of this map, you can change this at any time.
# Default is the id of this map
name: "Hub"
# The path to the save-folder of the world to render.
world: "worlds/hub"
# The position on the world where the map will be centered if you open it.
# You can change this at any time.
# This defaults to the world-spawn if you don't set it.
#startPos: [500, -820]
# The color of thy sky as a hex-color
# You can change this at any time.
# Default is "#7dabff"
skyColor: "#7dabff"
# Defines the ambient light-strength that every block is recieving, regardless of the sunlight/blocklight.
# 0 is no ambient light, 1 is fully lighted.
# You can change this at any time.
# Default is 0
ambientLight: 0
# If this is false, BlueMap tries to omit all blocks that are not visible from above-ground.
# More specific: Block-Faces that have a sunlight/skylight value of 0 are removed.
# This improves the performance of the map on slower devices by a lot, but might cause some blocks to disappear that should normally be visible.
# Changing this value requires a re-render of the map.
# Default is false
renderCaves: false
# With the below values you can limit the map-render.
# This can be used to ignore the nethers ceiling or render only a certain part of a world.
# Changing this values might require a re-render of the map, already rendered tiles outside the limits will not be deleted.
# Default is no min or max value (= infinite bounds)
#minX: -4000
#maxX: 4000
#minZ: -4000
#maxZ: 4000
#minY: 50
#maxY: 126
# Using this, BlueMap pretends that every Block out of the defined render-bounds is AIR,
# this means you can see the blocks where the world is cut (instead of having a see-through/xray view).
# This has only an effect if you set some render-bounds above.
# Changing this value requires a re-render of the map.
# Default is true
renderEdges: true
# With this set to true, the generated files for this world are compressed using gzip to save A LOT of space.
# Files will be only 5% as big with compression!
# Note: If you are using NGINX or Apache to host your map, you can configure them to serve the compressed files directly.
# This is much better than disabling the compression.
# Changing this value requires a re-render of the map.
# Default is true
useCompression: true
# Normally BlueMap detects if a chunk has not yet generated it's light-data and omits rendering those chunks.
# If this is set to true BlueMap will render Chunks even if there is no light-data!
# This can be usefull for example if some mod prevents light-data from being saved correctly.
# However, this also has a few drawbacks:
# - For those chunks, every block will always be fully lit
# - Night-mode might not work correctly
# - Caves will always be rendered (ignoring the 'renderCaves' setting)
# Default is false
ignoreMissingLightData: false
}
# Here another example for the End-Map
# Things we don't want to change from default we can just omit
{
id: "hub_the_end"
name: "Hub - The End"
world: "worlds/hub_the_end/DIM1"
# We dont want a blue sky in the end
skyColor: "#080010"
# In the end is no sky-light, so we need to enable this or we won't see anything.
renderCaves: true
# Same here, we don't want a dark map. But not completely lighted, so we see the effect of e.g torches.
ambientLight: 0.6
}
# Here another example for the Nether-Map
{
id: "hub_nether"
name: "Hub - Nether"
world: "worlds/hub_nether/DIM-1"
skyColor: "#290000"
renderCaves: true
ambientLight: 0.6
# We slice the whole world at y:90 so every block above 90 will be air.
# This way we don't render the nethers ceiling.
maxY: 90
renderEdges: true
}
{
id: "splendour"
name: "Splendour"
world: "worlds/splendour"
skyColor: "#7dabff"
ambientLight: 0
renderCaves: false
renderEdges: true
useCompression: true
ignoreMissingLightData: false
}
{
id: "dunno"
name: "Dunno"
world: "worlds/dunno"
skyColor: "#7dabff"
ambientLight: 0
renderCaves: false
renderEdges: true
useCompression: true
ignoreMissingLightData: false
}
]
I haven't added all the maps to the list yet, as i was still testing how it runs. Is there any other setting somewhere else inside BlueMap that may cause anything like this to happen?
EDIT: oh and yes, i DID change almost all the default paths to redirect to the plugins/BlueMap folder indead, since yours defaulted to saving a lot of its files in the root of the server (yuck)
No, the config looks fine to me, i can also not think of anything else that could cause this kind of issue other than something on your server either changing the worldfolder-path that paper reports for your worlds, or unloading / not loading the worlds when bluemap is loading..
since yours defaulted to saving a lot of its files in the root of the server (yuck)
yep, that's why you can change it in the config, so everyone can have it how they desire ;)
Since i can't reproduce, I am closing this issue for now.. However feel free to reopen it if you find a way (on a fresh server or sth.) for me to reproduce the issue! :)
BlueMap Version:
BlueMap-1.2.0-snap-spigot-1.16.1
I am (not) using:
Description: This may be a duplicate of #103 but figured i should ask anyway. When pointing to a nether/end dimension following the example formatting (
worlds/hub_nether/DIM-1
) it complains there is no world to be found in that folder and barfs an error.example console output:
If i instead point to the general
hub_nether
map folder (no DIM specified) it doesn't print any errors but doesn't load the map either. Am i missing something? Also yes, i have the worlds under aworlds
folder to keep them from spilling everywhere in the project root folder, but i doubt that's an issue since normal overworld maps load fine.