1
0

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
This commit is contained in:
bibo38
2016-01-11 17:55:32 +01:00
parent 725db4475c
commit 657b0ed007
7 changed files with 130 additions and 19 deletions

View File

@@ -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();