diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 10db4787..822568af 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 90d7af0a..f0e5f1d4 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 7e88e556..5476aad0 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 18b28c14..ea07accf 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; }