From 657b0ed0070cc31e375e33ec752e4757e0c7a343 Mon Sep 17 00:00:00 2001 From: bibo38 Date: Mon, 11 Jan 2016 17:55:32 +0100 Subject: Changed the format of the MobHead data to allow MobHeads working on MInecraft 1.8 The NBT format now carries the texture data and transmit it to the client. See: http://minecraft.gamepedia.com/Head#Block_entity Related to #2674 --- src/WorldStorage/WSSAnvil.cpp | 43 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 3 deletions(-) (limited to 'src/WorldStorage/WSSAnvil.cpp') 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(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(); -- cgit v1.2.3