diff --git a/Minecraft.Client/LivingEntityRenderer.cpp b/Minecraft.Client/LivingEntityRenderer.cpp index 034498cf..b0996231 100644 --- a/Minecraft.Client/LivingEntityRenderer.cpp +++ b/Minecraft.Client/LivingEntityRenderer.cpp @@ -465,11 +465,11 @@ void LivingEntityRenderer::renderNameTags(shared_ptr mob, double x { if (mob->isSleeping()) { - renderNameTag(mob, msg, x, y - 1.5f, z, 64); + renderNameTag(mob, msg, x, y - 1.5f, z, 64, mob->nametagColor); } else { - renderNameTag(mob, msg, x, y, z, 64); + renderNameTag(mob, msg, x, y, z, 64, mob->nametagColor); } } diff --git a/Minecraft.Client/PlayerRenderer.cpp b/Minecraft.Client/PlayerRenderer.cpp index 634a6b5e..e43a15f0 100644 --- a/Minecraft.Client/PlayerRenderer.cpp +++ b/Minecraft.Client/PlayerRenderer.cpp @@ -485,7 +485,7 @@ void PlayerRenderer::additionalRendering(shared_ptr _mob, float a) } } -void PlayerRenderer::renderNameTags(shared_ptr player, double x, double y, double z, wstring msg, float scale, double dist) +void PlayerRenderer::renderNameTags(shared_ptr player, double x, double y, double z, const wstring& msg, float scale, double dist) { #if 0 if (dist < 10 * 10) @@ -511,6 +511,13 @@ void PlayerRenderer::renderNameTags(shared_ptr player, double x, d } #endif + if (player->instanceof(eTYPE_PLAYER)) { + shared_ptr p = dynamic_pointer_cast(player); + p->nametagColor = getNametagColour(p->getPlayerIndex()); + } + else { + player->nametagColor = 0xFF000000; + } LivingEntityRenderer::renderNameTags(player, x, y, z, msg, scale, dist); } diff --git a/Minecraft.Client/PlayerRenderer.h b/Minecraft.Client/PlayerRenderer.h index c5ae8250..d8373228 100644 --- a/Minecraft.Client/PlayerRenderer.h +++ b/Minecraft.Client/PlayerRenderer.h @@ -34,7 +34,7 @@ public: protected: virtual void additionalRendering(shared_ptr _mob, float a); - void renderNameTags(shared_ptr player, double x, double y, double z, wstring msg, float scale, double dist); + virtual void renderNameTags(shared_ptr player, double x, double y, double z, const wstring& msg, float scale, double dist) override; virtual void scale(shared_ptr _player, float a); public: diff --git a/Minecraft.World/LivingEntity.cpp b/Minecraft.World/LivingEntity.cpp index a476fd33..459eb4aa 100644 --- a/Minecraft.World/LivingEntity.cpp +++ b/Minecraft.World/LivingEntity.cpp @@ -93,6 +93,8 @@ void LivingEntity::_init() speed = 0.0f; noJumpDelay = 0; absorptionAmount = 0.0f; + + nametagColor = 0xFF000000; //default to black. Overridden by stuff } LivingEntity::LivingEntity( Level* level) : Entity(level) diff --git a/Minecraft.World/LivingEntity.h b/Minecraft.World/LivingEntity.h index 086935ef..bb2f7086 100644 --- a/Minecraft.World/LivingEntity.h +++ b/Minecraft.World/LivingEntity.h @@ -80,6 +80,8 @@ public: float yHeadRot, yHeadRotO; float flyingSpeed; + int nametagColor; + protected: shared_ptr lastHurtByPlayer; int lastHurtByPlayerTime;