summaryrefslogtreecommitdiffstats
path: root/src/World.cpp
diff options
context:
space:
mode:
authorTiger Wang <ziwei.tiger@hotmail.co.uk>2014-07-21 23:49:06 +0200
committerTiger Wang <ziwei.tiger@hotmail.co.uk>2014-07-21 23:49:06 +0200
commit8050a5b98a3003c2a4bed39b896b4a3a4c1068c0 (patch)
treebb0be233efcf1052125862812569ce3874b4d9d0 /src/World.cpp
parentBug and crash fixes (diff)
downloadcuberite-8050a5b98a3003c2a4bed39b896b4a3a4c1068c0.tar
cuberite-8050a5b98a3003c2a4bed39b896b4a3a4c1068c0.tar.gz
cuberite-8050a5b98a3003c2a4bed39b896b4a3a4c1068c0.tar.bz2
cuberite-8050a5b98a3003c2a4bed39b896b4a3a4c1068c0.tar.lz
cuberite-8050a5b98a3003c2a4bed39b896b4a3a4c1068c0.tar.xz
cuberite-8050a5b98a3003c2a4bed39b896b4a3a4c1068c0.tar.zst
cuberite-8050a5b98a3003c2a4bed39b896b4a3a4c1068c0.zip
Diffstat (limited to 'src/World.cpp')
-rw-r--r--src/World.cpp135
1 files changed, 79 insertions, 56 deletions
diff --git a/src/World.cpp b/src/World.cpp
index d27ad1eb4..2af8fc59e 100644
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -512,7 +512,7 @@ void cWorld::InitializeSpawn(void)
-void cWorld::Start()
+void cWorld::Start(void)
{
m_SpawnX = 0;
m_SpawnY = cChunkDef::Height;
@@ -594,61 +594,8 @@ void cWorld::Start()
m_TNTShrapnelLevel = (eShrapnelLevel)Clamp(TNTShrapnelLevel, (int)slNone, (int)slAll);
m_Weather = (eWeather) Clamp(Weather, (int)wSunny, (int)wStorm);
- switch (GetDimension())
- {
- case dimEnd:
- {
- IniFile.GetValueSet("Generator", "BiomeGen", "Constant");
- IniFile.GetValueSet("Generator", "ConstantBiome", "End");
- IniFile.GetValueSet("Generator", "HeightGen", "Biomal");
- IniFile.GetValueSet("Generator", "CompositionGen", "End");
- break;
- }
- case dimOverworld:
- {
- IniFile.GetValueSet("Generator", "BiomeGen", "MultiStepMap");
- IniFile.GetValueSet("Generator", "HeightGen", "DistortedHeightmap");
- IniFile.GetValueSet("Generator", "CompositionGen", "DistortedHeightmap");
- IniFile.GetValueSet("Generator", "Finishers", "Ravines, WormNestCaves, WaterLakes, WaterSprings, LavaLakes, LavaSprings, OreNests, Mineshafts, Trees, SprinkleFoliage, Ice, Snow, Lilypads, BottomLava, DeadBushes, PreSimulator");
- break;
- }
- case dimNether:
- {
- IniFile.GetValueSet("Generator", "BiomeGen", "Constant");
- IniFile.GetValueSet("Generator", "ConstantBiome", "Nether");
- IniFile.GetValueSet("Generator", "HeightGen", "Flat");
- IniFile.GetValueSet("Generator", "FlatHeight", "128");
- IniFile.GetValueSet("Generator", "CompositionGen", "Nether");
- IniFile.GetValueSet("Generator", "Finishers", "WormNestCaves, BottomLava, LavaSprings, NetherClumpFoliage, NetherForts, PreSimulator");
- IniFile.GetValueSet("Generator", "BottomLavaHeight", "30");
- break;
- }
- }
-
- // Load allowed mobs:
- const char * DefaultMonsters = "";
- switch (m_Dimension)
- {
- case dimOverworld: DefaultMonsters = "bat, cavespider, chicken, cow, creeper, enderman, horse, mooshroom, ocelot, pig, sheep, silverfish, skeleton, slime, spider, squid, wolf, zombie"; break;
- case dimNether: DefaultMonsters = "blaze, ghast, magmacube, skeleton, zombie, zombiepigman"; break;
- case dimEnd: DefaultMonsters = "enderman"; break;
- }
- m_bAnimals = IniFile.GetValueSetB("Monsters", "AnimalsOn", true);
- AString AllMonsters = IniFile.GetValueSet("Monsters", "Types", DefaultMonsters);
- AStringVector SplitList = StringSplitAndTrim(AllMonsters, ",");
- for (AStringVector::const_iterator itr = SplitList.begin(), end = SplitList.end(); itr != end; ++itr)
- {
- cMonster::eType ToAdd = cMonster::StringToMobType(*itr);
- if (ToAdd != cMonster::mtInvalidType)
- {
- m_AllowedMobs.insert(ToAdd);
- LOGD("Allowed mob: %s", itr->c_str());
- }
- else
- {
- LOG("World \"%s\": Unknown mob type: %s", m_WorldName.c_str(), itr->c_str());
- }
- }
+ InitialiseGeneratorDefaults(IniFile);
+ InitialiseAndLoadMobSpawningValues(IniFile);
m_ChunkMap = new cChunkMap(this);
@@ -745,6 +692,82 @@ eWeather cWorld::ChooseNewWeather()
+void cWorld::InitialiseGeneratorDefaults(cIniFile & a_IniFile)
+{
+ switch (GetDimension())
+ {
+ case dimEnd:
+ {
+ a_IniFile.GetValueSet("Generator", "BiomeGen", "Constant");
+ a_IniFile.GetValueSet("Generator", "ConstantBiome", "End");
+ a_IniFile.GetValueSet("Generator", "HeightGen", "Biomal");
+ a_IniFile.GetValueSet("Generator", "CompositionGen", "End");
+ break;
+ }
+ case dimOverworld:
+ {
+ a_IniFile.GetValueSet("Generator", "BiomeGen", "MultiStepMap");
+ a_IniFile.GetValueSet("Generator", "HeightGen", "DistortedHeightmap");
+ a_IniFile.GetValueSet("Generator", "CompositionGen", "DistortedHeightmap");
+ a_IniFile.GetValueSet("Generator", "Finishers", "Ravines, WormNestCaves, WaterLakes, WaterSprings, LavaLakes, LavaSprings, OreNests, Mineshafts, Trees, SprinkleFoliage, Ice, Snow, Lilypads, BottomLava, DeadBushes, PreSimulator");
+ break;
+ }
+ case dimNether:
+ {
+ a_IniFile.GetValueSet("Generator", "BiomeGen", "Constant");
+ a_IniFile.GetValueSet("Generator", "ConstantBiome", "Nether");
+ a_IniFile.GetValueSet("Generator", "HeightGen", "Flat");
+ a_IniFile.GetValueSet("Generator", "FlatHeight", "128");
+ a_IniFile.GetValueSet("Generator", "CompositionGen", "Nether");
+ a_IniFile.GetValueSet("Generator", "Finishers", "WormNestCaves, BottomLava, LavaSprings, NetherClumpFoliage, NetherForts, PreSimulator");
+ a_IniFile.GetValueSet("Generator", "BottomLavaHeight", "30");
+ break;
+ }
+ }
+}
+
+
+
+
+
+void cWorld::InitialiseAndLoadMobSpawningValues(cIniFile & a_IniFile)
+{
+ AString DefaultMonsters;
+ switch (m_Dimension)
+ {
+ case dimOverworld: DefaultMonsters = "bat, cavespider, chicken, cow, creeper, enderman, horse, mooshroom, ocelot, pig, sheep, silverfish, skeleton, slime, spider, squid, wolf, zombie"; break;
+ case dimNether: DefaultMonsters = "blaze, ghast, magmacube, skeleton, zombie, zombiepigman"; break;
+ case dimEnd: DefaultMonsters = "enderman"; break;
+ }
+
+ m_bAnimals = a_IniFile.GetValueSetB("Monsters", "AnimalsOn", true);
+ AString AllMonsters = a_IniFile.GetValueSet("Monsters", "Types", DefaultMonsters);
+
+ if (!m_bAnimals)
+ {
+ return;
+ }
+
+ AStringVector SplitList = StringSplitAndTrim(AllMonsters, ",");
+ for (AStringVector::const_iterator itr = SplitList.begin(), end = SplitList.end(); itr != end; ++itr)
+ {
+ cMonster::eType ToAdd = cMonster::StringToMobType(*itr);
+ if (ToAdd != cMonster::mtInvalidType)
+ {
+ m_AllowedMobs.insert(ToAdd);
+ LOGD("Allowed mob: %s", itr->c_str());
+ }
+ else
+ {
+ LOG("World \"%s\": Unknown mob type: %s", m_WorldName.c_str(), itr->c_str());
+ }
+ }
+}
+
+
+
+
+
void cWorld::Stop(void)
{
// Delete the clients that have been in this world: