findSpawnPos: Add setting for max height above water level
Increase default from 6 to 16 to help with mgv7 and mgfractal Large-scale or alternative mapgens can result in a lowland spawn point not being found, causing a spawn at (0, 0, 0) possibly buried underground The max height is now settable to allow correct player spawn in any mapgen or when using custom noise parametersstable-0.4
parent
182b3fd283
commit
c0a7c670a4
|
@ -693,6 +693,12 @@ enable_pvp (Player versus Player) bool true
|
||||||
# If this is set, players will always (re)spawn at the given position.
|
# If this is set, players will always (re)spawn at the given position.
|
||||||
static_spawnpoint (Static spawnpoint) string
|
static_spawnpoint (Static spawnpoint) string
|
||||||
|
|
||||||
|
# Maximum distance above water level for player spawn.
|
||||||
|
# Larger values result in spawn points closer to (x = 0, z = 0).
|
||||||
|
# Smaller values may result in a suitable spawn point not being found,
|
||||||
|
# resulting in a spawn at (0, 0, 0) possibly buried underground.
|
||||||
|
vertical_spawn_range (Vertical spawn range) int 16
|
||||||
|
|
||||||
# If enabled, new players cannot join with an empty password.
|
# If enabled, new players cannot join with an empty password.
|
||||||
disallow_empty_password (Disallow empty passwords) bool false
|
disallow_empty_password (Disallow empty passwords) bool false
|
||||||
|
|
||||||
|
|
|
@ -829,6 +829,13 @@
|
||||||
# type: string
|
# type: string
|
||||||
# static_spawnpoint =
|
# static_spawnpoint =
|
||||||
|
|
||||||
|
# Maximum distance above water level for player spawn.
|
||||||
|
# Larger values result in spawn points closer to (x = 0, z = 0).
|
||||||
|
# Smaller values may result in a suitable spawn point not being found,
|
||||||
|
# resulting in a spawn at (0, 0, 0) possibly buried underground.
|
||||||
|
# type: int
|
||||||
|
# vertical_spawn_range = 16
|
||||||
|
|
||||||
# If enabled, new players cannot join with an empty password.
|
# If enabled, new players cannot join with an empty password.
|
||||||
# type: bool
|
# type: bool
|
||||||
# disallow_empty_password = false
|
# disallow_empty_password = false
|
||||||
|
|
|
@ -245,6 +245,7 @@ void set_default_settings(Settings *settings)
|
||||||
settings->setDefault("default_privs", "interact, shout");
|
settings->setDefault("default_privs", "interact, shout");
|
||||||
settings->setDefault("player_transfer_distance", "0");
|
settings->setDefault("player_transfer_distance", "0");
|
||||||
settings->setDefault("enable_pvp", "true");
|
settings->setDefault("enable_pvp", "true");
|
||||||
|
settings->setDefault("vertical_spawn_range", "16");
|
||||||
settings->setDefault("disallow_empty_password", "false");
|
settings->setDefault("disallow_empty_password", "false");
|
||||||
settings->setDefault("disable_anticheat", "false");
|
settings->setDefault("disable_anticheat", "false");
|
||||||
settings->setDefault("enable_rollback_recording", "false");
|
settings->setDefault("enable_rollback_recording", "false");
|
||||||
|
|
|
@ -3269,7 +3269,7 @@ v3f Server::findSpawnPos()
|
||||||
}
|
}
|
||||||
|
|
||||||
s16 water_level = map.getWaterLevel();
|
s16 water_level = map.getWaterLevel();
|
||||||
|
s16 vertical_spawn_range = g_settings->getS16("vertical_spawn_range");
|
||||||
bool is_good = false;
|
bool is_good = false;
|
||||||
|
|
||||||
// Try to find a good place a few times
|
// Try to find a good place a few times
|
||||||
|
@ -3282,9 +3282,9 @@ v3f Server::findSpawnPos()
|
||||||
|
|
||||||
// Get ground height at point
|
// Get ground height at point
|
||||||
s16 groundheight = map.findGroundLevel(nodepos2d);
|
s16 groundheight = map.findGroundLevel(nodepos2d);
|
||||||
if (groundheight <= water_level) // Don't go underwater
|
// Don't go underwater or to high places
|
||||||
continue;
|
if (groundheight <= water_level ||
|
||||||
if (groundheight > water_level + 6) // Don't go to high places
|
groundheight > water_level + vertical_spawn_range)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
v3s16 nodepos(nodepos2d.X, groundheight, nodepos2d.Y);
|
v3s16 nodepos(nodepos2d.X, groundheight, nodepos2d.Y);
|
||||||
|
|
Loading…
Reference in New Issue