summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHowaner <franzi.moos@googlemail.com>2014-10-30 21:24:10 +0100
committerHowaner <franzi.moos@googlemail.com>2014-10-30 21:24:10 +0100
commit9c7661f50f82fe265836f3279bf20b15aebba5b3 (patch)
tree85d4deca92d7159d94f9cacb40e0a62cb118b240
parentMerge pull request #1576 from mc-server/QtBiomeVisualiserThreadedGen (diff)
downloadcuberite-9c7661f50f82fe265836f3279bf20b15aebba5b3.tar
cuberite-9c7661f50f82fe265836f3279bf20b15aebba5b3.tar.gz
cuberite-9c7661f50f82fe265836f3279bf20b15aebba5b3.tar.bz2
cuberite-9c7661f50f82fe265836f3279bf20b15aebba5b3.tar.lz
cuberite-9c7661f50f82fe265836f3279bf20b15aebba5b3.tar.xz
cuberite-9c7661f50f82fe265836f3279bf20b15aebba5b3.tar.zst
cuberite-9c7661f50f82fe265836f3279bf20b15aebba5b3.zip
-rw-r--r--src/ClientHandle.cpp4
-rw-r--r--src/World.cpp3
-rw-r--r--src/World.h10
3 files changed, 16 insertions, 1 deletions
diff --git a/src/ClientHandle.cpp b/src/ClientHandle.cpp
index faee05450..9b3bd9545 100644
--- a/src/ClientHandle.cpp
+++ b/src/ClientHandle.cpp
@@ -2847,7 +2847,9 @@ void cClientHandle::SetUsername( const AString & a_Username)
void cClientHandle::SetViewDistance(int a_ViewDistance)
{
- m_ViewDistance = Clamp(a_ViewDistance, MIN_VIEW_DISTANCE, MAX_VIEW_DISTANCE);
+ ASSERT(m_Player->GetWorld() == NULL);
+
+ m_ViewDistance = Clamp(a_ViewDistance, cClientHandle::MIN_VIEW_DISTANCE, m_Player->GetWorld()->GetMaxViewDistance());
LOGD("Setted %s's view distance to %i", GetUsername().c_str(), m_ViewDistance);
}
diff --git a/src/World.cpp b/src/World.cpp
index 2e079d447..4e6ca264f 100644
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -283,6 +283,7 @@ cWorld::cWorld(const AString & a_WorldName, eDimension a_Dimension, const AStrin
m_bCommandBlocksEnabled(true),
m_bUseChatPrefixes(false),
m_TNTShrapnelLevel(slNone),
+ m_MaxViewDistance(12),
m_Scoreboard(this),
m_MapManager(this),
m_GeneratorCallbacks(*this),
@@ -561,6 +562,8 @@ void cWorld::Start(void)
m_BroadcastDeathMessages = IniFile.GetValueSetB("Broadcasting", "BroadcastDeathMessages", true);
m_BroadcastAchievementMessages = IniFile.GetValueSetB("Broadcasting", "BroadcastAchievementMessages", true);
+ SetMaxViewDistance(IniFile.GetValueSetI("SpawnPosition", "MaxViewDistance", 12));
+
// Try to find the "SpawnPosition" key and coord values in the world configuration, set the flag if found
int KeyNum = IniFile.FindKey("SpawnPosition");
m_IsSpawnExplicitlySet =
diff --git a/src/World.h b/src/World.h
index ec6dcadde..cc8906d95 100644
--- a/src/World.h
+++ b/src/World.h
@@ -26,6 +26,7 @@
#include "MapManager.h"
#include "Blocks/WorldInterface.h"
#include "Blocks/BroadcastInterface.h"
+#include "ClientHandle.h"
@@ -646,6 +647,12 @@ public:
eShrapnelLevel GetTNTShrapnelLevel(void) const { return m_TNTShrapnelLevel; }
void SetTNTShrapnelLevel(eShrapnelLevel a_Flag) { m_TNTShrapnelLevel = a_Flag; }
+ int GetMaxViewDistance(void) const { return m_MaxViewDistance; }
+ void SetMaxViewDistance(int a_MaxViewDistance)
+ {
+ m_MaxViewDistance = Clamp(a_MaxViewDistance, cClientHandle::MIN_VIEW_DISTANCE, cClientHandle::MAX_VIEW_DISTANCE);
+ }
+
bool ShouldUseChatPrefixes(void) const { return m_bUseChatPrefixes; }
void SetShouldUseChatPrefixes(bool a_Flag) { m_bUseChatPrefixes = a_Flag; }
@@ -961,6 +968,9 @@ private:
*/
eShrapnelLevel m_TNTShrapnelLevel;
+ /** The maximum view distance that a player can have. */
+ int m_MaxViewDistance;
+
/** Name of the nether world */
AString m_NetherWorldName;