summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/settingtypes.txt3
-rw-r--r--minetest.conf.example3
-rw-r--r--src/client.cpp3
-rw-r--r--src/game.cpp22
4 files changed, 20 insertions, 11 deletions
diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt
index 10db4787d..822568af4 100644
--- a/builtin/settingtypes.txt
+++ b/builtin/settingtypes.txt
@@ -418,8 +418,7 @@ fps_max (Maximum FPS) int 60
pause_fps_max (FPS in pause menu) int 20
# View distance in nodes.
-# Min = 20
-viewing_range (Viewing range) int 100
+viewing_range (Viewing range) int 100 20 4000
# Width component of the initial window size.
screenW (Screen width) int 800
diff --git a/minetest.conf.example b/minetest.conf.example
index 90d7af0a3..f0e5f1d47 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -473,8 +473,7 @@
# pause_fps_max = 20
# View distance in nodes.
-# Min = 20
-# type: int
+# type: int min: 20 max: 4000
# viewing_range = 100
# Width component of the initial window size.
diff --git a/src/client.cpp b/src/client.cpp
index 7e88e5562..5476aad0e 100644
--- a/src/client.cpp
+++ b/src/client.cpp
@@ -940,7 +940,8 @@ void writePlayerPos(LocalPlayer *myplayer, ClientMap *clientMap, NetworkPacket *
u32 keyPressed = myplayer->keyPressed;
// scaled by 80, so that pi can fit into a u8
u8 fov = clientMap->getCameraFov() * 80;
- u8 wanted_range = std::ceil(clientMap->getControl().wanted_range / MAP_BLOCKSIZE);
+ u8 wanted_range = MYMIN(255,
+ std::ceil(clientMap->getControl().wanted_range / MAP_BLOCKSIZE));
v3s32 position(pf.X, pf.Y, pf.Z);
v3s32 speed(sf.X, sf.Y, sf.Z);
diff --git a/src/game.cpp b/src/game.cpp
index 18b28c142..ea07accf8 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -3277,9 +3277,16 @@ void Game::increaseViewRange(float *statustext_time)
{
s16 range = g_settings->getS16("viewing_range");
s16 range_new = range + 10;
+
+ if (range_new > 4000) {
+ range_new = 4000;
+ statustext = utf8_to_wide("Viewing range is at maximum: "
+ + itos(range_new));
+ } else {
+ statustext = utf8_to_wide("Viewing range changed to "
+ + itos(range_new));
+ }
g_settings->set("viewing_range", itos(range_new));
- statustext = utf8_to_wide("Viewing range changed to "
- + itos(range_new));
*statustext_time = 0;
}
@@ -3289,12 +3296,15 @@ void Game::decreaseViewRange(float *statustext_time)
s16 range = g_settings->getS16("viewing_range");
s16 range_new = range - 10;
- if (range_new < 20)
+ if (range_new < 20) {
range_new = 20;
-
+ statustext = utf8_to_wide("Viewing range is at minimum: "
+ + itos(range_new));
+ } else {
+ statustext = utf8_to_wide("Viewing range changed to "
+ + itos(range_new));
+ }
g_settings->set("viewing_range", itos(range_new));
- statustext = utf8_to_wide("Viewing range changed to "
- + itos(range_new));
*statustext_time = 0;
}