Skip to content

Commit c0a7c67

Browse files
committedOct 29, 2015
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 parameters
1 parent 182b3fd commit c0a7c67

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed
 

‎builtin/settingtypes.txt

+6
Original file line numberDiff line numberDiff line change
@@ -693,6 +693,12 @@ enable_pvp (Player versus Player) bool true
693693
# If this is set, players will always (re)spawn at the given position.
694694
static_spawnpoint (Static spawnpoint) string
695695

696+
# Maximum distance above water level for player spawn.
697+
# Larger values result in spawn points closer to (x = 0, z = 0).
698+
# Smaller values may result in a suitable spawn point not being found,
699+
# resulting in a spawn at (0, 0, 0) possibly buried underground.
700+
vertical_spawn_range (Vertical spawn range) int 16
701+
696702
# If enabled, new players cannot join with an empty password.
697703
disallow_empty_password (Disallow empty passwords) bool false
698704

‎minetest.conf.example

+7
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,13 @@
829829
# type: string
830830
# static_spawnpoint =
831831

832+
# Maximum distance above water level for player spawn.
833+
# Larger values result in spawn points closer to (x = 0, z = 0).
834+
# Smaller values may result in a suitable spawn point not being found,
835+
# resulting in a spawn at (0, 0, 0) possibly buried underground.
836+
# type: int
837+
# vertical_spawn_range = 16
838+
832839
# If enabled, new players cannot join with an empty password.
833840
# type: bool
834841
# disallow_empty_password = false

‎src/defaultsettings.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ void set_default_settings(Settings *settings)
245245
settings->setDefault("default_privs", "interact, shout");
246246
settings->setDefault("player_transfer_distance", "0");
247247
settings->setDefault("enable_pvp", "true");
248+
settings->setDefault("vertical_spawn_range", "16");
248249
settings->setDefault("disallow_empty_password", "false");
249250
settings->setDefault("disable_anticheat", "false");
250251
settings->setDefault("enable_rollback_recording", "false");

‎src/server.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -3269,7 +3269,7 @@ v3f Server::findSpawnPos()
32693269
}
32703270

32713271
s16 water_level = map.getWaterLevel();
3272-
3272+
s16 vertical_spawn_range = g_settings->getS16("vertical_spawn_range");
32733273
bool is_good = false;
32743274

32753275
// Try to find a good place a few times
@@ -3282,9 +3282,9 @@ v3f Server::findSpawnPos()
32823282

32833283
// Get ground height at point
32843284
s16 groundheight = map.findGroundLevel(nodepos2d);
3285-
if (groundheight <= water_level) // Don't go underwater
3286-
continue;
3287-
if (groundheight > water_level + 6) // Don't go to high places
3285+
// Don't go underwater or to high places
3286+
if (groundheight <= water_level ||
3287+
groundheight > water_level + vertical_spawn_range)
32883288
continue;
32893289

32903290
v3s16 nodepos(nodepos2d.X, groundheight, nodepos2d.Y);

0 commit comments

Comments
 (0)
Please sign in to comment.