diff options
Diffstat (limited to 'Minecraft.World/EntityDamageSource.cpp')
| -rw-r--r-- | Minecraft.World/EntityDamageSource.cpp | 37 |
1 files changed, 30 insertions, 7 deletions
diff --git a/Minecraft.World/EntityDamageSource.cpp b/Minecraft.World/EntityDamageSource.cpp index 8c7a5ee1..22237bf1 100644 --- a/Minecraft.World/EntityDamageSource.cpp +++ b/Minecraft.World/EntityDamageSource.cpp @@ -5,7 +5,7 @@ #include "net.minecraft.network.packet.h" //EntityDamageSource::EntityDamageSource(const wstring &msgId, shared_ptr<Entity> entity) : DamageSource(msgId) -EntityDamageSource::EntityDamageSource(ChatPacket::EChatPacketMessage msgId, shared_ptr<Entity> entity) : DamageSource(msgId) +EntityDamageSource::EntityDamageSource(ChatPacket::EChatPacketMessage msgId, ChatPacket::EChatPacketMessage msgWithItemId, shared_ptr<Entity> entity) : DamageSource(msgId, msgWithItemId) { this->entity = entity; } @@ -21,18 +21,41 @@ shared_ptr<Entity> EntityDamageSource::getEntity() // //return I18n.get("death." + msgId, player.name, entity.getAName()); //} -shared_ptr<ChatPacket> EntityDamageSource::getDeathMessagePacket(shared_ptr<Player> player) +shared_ptr<ChatPacket> EntityDamageSource::getDeathMessagePacket(shared_ptr<LivingEntity> player) { + shared_ptr<ItemInstance> held = (entity != NULL) && entity->instanceof(eTYPE_LIVINGENTITY) ? dynamic_pointer_cast<LivingEntity>(entity)->getCarriedItem() : nullptr; wstring additional = L""; - if(entity->GetType() == eTYPE_SERVERPLAYER) + + if (entity->instanceof(eTYPE_SERVERPLAYER)) + { + additional = dynamic_pointer_cast<Player>(entity)->name; + } + else if (entity->instanceof(eTYPE_MOB)) + { + shared_ptr<Mob> mob = dynamic_pointer_cast<Mob>(entity); + if (mob->hasCustomName()) + { + additional = mob->getCustomName(); + } + } + + if ( (held != NULL) && held->hasCustomHoverName()) { - shared_ptr<Player> sourcePlayer = dynamic_pointer_cast<Player>(entity); - if(sourcePlayer != NULL) additional = sourcePlayer->name; + return shared_ptr<ChatPacket>( new ChatPacket(player->getNetworkName(), m_msgWithItemId, entity->GetType(), additional, held->getHoverName() ) ); + } + else + { + return shared_ptr<ChatPacket>( new ChatPacket(player->getNetworkName(), m_msgId, entity->GetType(), additional ) ); } - return shared_ptr<ChatPacket>( new ChatPacket(player->name, m_msgId, entity->GetType(), additional ) ); } bool EntityDamageSource::scalesWithDifficulty() { - return entity != NULL && dynamic_pointer_cast<Mob>(entity) && !(dynamic_pointer_cast<Player>(entity)); + return (entity != NULL) && entity->instanceof(eTYPE_LIVINGENTITY) && !entity->instanceof(eTYPE_PLAYER); +} + +// 4J: Copy function +DamageSource *EntityDamageSource::copy() +{ + return new EntityDamageSource(*this); }
\ No newline at end of file |
