diff options
author | bibo38 <bibo38@github.com> | 2016-01-11 17:55:32 +0100 |
---|---|---|
committer | bibo38 <bibo38@github.com> | 2016-01-11 17:55:32 +0100 |
commit | 657b0ed0070cc31e375e33ec752e4757e0c7a343 (patch) | |
tree | 1302f67bea0416a54c7d1077c84f53018acbbc11 /src/WorldStorage/WSSAnvil.cpp | |
parent | Added "core.help" permission to Default rank. (diff) | |
download | cuberite-657b0ed0070cc31e375e33ec752e4757e0c7a343.tar cuberite-657b0ed0070cc31e375e33ec752e4757e0c7a343.tar.gz cuberite-657b0ed0070cc31e375e33ec752e4757e0c7a343.tar.bz2 cuberite-657b0ed0070cc31e375e33ec752e4757e0c7a343.tar.lz cuberite-657b0ed0070cc31e375e33ec752e4757e0c7a343.tar.xz cuberite-657b0ed0070cc31e375e33ec752e4757e0c7a343.tar.zst cuberite-657b0ed0070cc31e375e33ec752e4757e0c7a343.zip |
Diffstat (limited to '')
-rwxr-xr-x | src/WorldStorage/WSSAnvil.cpp | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/src/WorldStorage/WSSAnvil.cpp b/src/WorldStorage/WSSAnvil.cpp index 5138717a7..3d325d354 100755 --- a/src/WorldStorage/WSSAnvil.cpp +++ b/src/WorldStorage/WSSAnvil.cpp @@ -1293,10 +1293,47 @@ cBlockEntity * cWSSAnvil::LoadMobHeadFromNBT(const cParsedNBT & a_NBT, int a_Tag MobHead->SetRotation(static_cast<eMobHeadRotation>(a_NBT.GetByte(currentLine))); } - currentLine = a_NBT.FindChildByName(a_TagIdx, "ExtraType"); - if (currentLine >= 0) + int ownerLine = a_NBT.FindChildByName(a_TagIdx, "Owner"); + if (ownerLine >= 0) { - MobHead->SetOwner(a_NBT.GetString(currentLine)); + AString OwnerName, OwnerUUID, OwnerTexture, OwnerTextureSignature; + + currentLine = a_NBT.FindChildByName(ownerLine, "Id"); + if (currentLine >= 0) + { + OwnerUUID = a_NBT.GetString(currentLine); + } + + currentLine = a_NBT.FindChildByName(ownerLine, "Name"); + if (currentLine >= 0) + { + OwnerName = a_NBT.GetString(currentLine); + } + + int textureLine = a_NBT.GetFirstChild( // The first texture of + a_NBT.FindChildByName( // The texture list of + a_NBT.FindChildByName( // The Properties compound of + ownerLine, // The Owner compound + "Properties" + ), + "textures" + ) + ); + if (textureLine >= 0) + { + currentLine = a_NBT.FindChildByName(textureLine, "Signature"); + if (currentLine >= 0) + { + OwnerTextureSignature = a_NBT.GetString(currentLine); + } + + currentLine = a_NBT.FindChildByName(textureLine, "Value"); + if (currentLine >= 0) + { + OwnerTexture = a_NBT.GetString(currentLine); + } + } + MobHead->SetOwner(OwnerUUID, OwnerName, OwnerTexture, OwnerTextureSignature); } return MobHead.release(); |