diff options
author | Tycho <work.tycho+git@gmail.com> | 2014-09-25 16:22:08 +0200 |
---|---|---|
committer | Tycho <work.tycho+git@gmail.com> | 2014-09-25 16:22:08 +0200 |
commit | 9c459cbe50dd7c7c327d712369b523dd018575bf (patch) | |
tree | 9dea40b71ffdca0dccf31fa1f005e279d822fa46 /src/WorldStorage/NBTChunkSerializer.cpp | |
parent | Fix accedental c++11 (diff) | |
parent | Merge pull request #1449 from mc-server/WorldLoader (diff) | |
download | cuberite-9c459cbe50dd7c7c327d712369b523dd018575bf.tar cuberite-9c459cbe50dd7c7c327d712369b523dd018575bf.tar.gz cuberite-9c459cbe50dd7c7c327d712369b523dd018575bf.tar.bz2 cuberite-9c459cbe50dd7c7c327d712369b523dd018575bf.tar.lz cuberite-9c459cbe50dd7c7c327d712369b523dd018575bf.tar.xz cuberite-9c459cbe50dd7c7c327d712369b523dd018575bf.tar.zst cuberite-9c459cbe50dd7c7c327d712369b523dd018575bf.zip |
Diffstat (limited to 'src/WorldStorage/NBTChunkSerializer.cpp')
-rw-r--r-- | src/WorldStorage/NBTChunkSerializer.cpp | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/src/WorldStorage/NBTChunkSerializer.cpp b/src/WorldStorage/NBTChunkSerializer.cpp index 92d754d3f..6cc901b0c 100644 --- a/src/WorldStorage/NBTChunkSerializer.cpp +++ b/src/WorldStorage/NBTChunkSerializer.cpp @@ -81,6 +81,18 @@ void cNBTChunkSerializer::Finish(void) memset(m_BlockLight, 0, sizeof(m_BlockLight)); memset(m_BlockSkyLight, 0, sizeof(m_BlockSkyLight)); } + + // Check if "Entity" and "TileEntities" lists exists. MCEdit requires this. + if (!m_HasHadEntity) + { + m_Writer.BeginList("Entities", TAG_Compound); + m_Writer.EndList(); + } + if (!m_HasHadBlockEntity) + { + m_Writer.BeginList("TileEntities", TAG_Compound); + m_Writer.EndList(); + } } @@ -504,6 +516,8 @@ void cNBTChunkSerializer::AddMonsterEntity(cMonster * a_Monster) m_Writer.AddFloat("", a_Monster->GetDropChanceBoots()); m_Writer.EndList(); m_Writer.AddByte("CanPickUpLoot", (char)a_Monster->CanPickUpLoot()); + m_Writer.AddString("CustomName", a_Monster->GetCustomName()); + m_Writer.AddByte("CustomNameVisible", (char)a_Monster->IsCustomNameAlwaysVisible()); switch (a_Monster->GetMobType()) { case mtBat: @@ -580,7 +594,7 @@ void cNBTChunkSerializer::AddMonsterEntity(cMonster * a_Monster) } m_Writer.AddByte("Sitting", Wolf.IsSitting() ? 1 : 0); m_Writer.AddByte("Angry", Wolf.IsAngry() ? 1 : 0); - m_Writer.AddInt("CollarColor", Wolf.GetCollarColor()); + m_Writer.AddByte("CollarColor", (unsigned char)Wolf.GetCollarColor()); break; } case mtZombie: @@ -763,6 +777,22 @@ void cNBTChunkSerializer::LightIsValid(bool a_IsLightValid) +void cNBTChunkSerializer::HeightMap(const cChunkDef::HeightMap * a_HeightMap) +{ + for (int RelX = 0; RelX < cChunkDef::Width; RelX++) + { + for (int RelZ = 0; RelZ < cChunkDef::Width; RelZ++) + { + int Height = cChunkDef::GetHeight(*a_HeightMap, RelX, RelZ); + m_VanillaHeightMap[(RelZ << 4) | RelX] = Height; + } + } +} + + + + + void cNBTChunkSerializer::BiomeData(const cChunkDef::BiomeMap * a_BiomeMap) { memcpy(m_Biomes, a_BiomeMap, sizeof(m_Biomes)); |