#include "../Platform/stdafx.h" #include "../Headers/net.minecraft.world.entity.player.h" #include "../Headers/net.minecraft.world.entity.h" #include "../Headers/net.minecraft.world.damagesource.h" #include "../Headers/net.minecraft.network.packet.h" // IndirectEntityDamageSource::IndirectEntityDamageSource(const wstring &msgId, // shared_ptr entity, shared_ptr owner) : // EntityDamageSource(msgId, entity) IndirectEntityDamageSource::IndirectEntityDamageSource( ChatPacket::EChatPacketMessage msgId, ChatPacket::EChatPacketMessage msgWithItemId, std::shared_ptr entity, std::shared_ptr owner) : EntityDamageSource(msgId, msgWithItemId, entity) { this->owner = owner; } // 4J Stu - Brought forward from 1.2.3 to fix #46422 std::shared_ptr IndirectEntityDamageSource::getDirectEntity() { return entity; } std::shared_ptr IndirectEntityDamageSource::getEntity() { return owner; } // wstring // IndirectEntityDamageSource::getLocalizedDeathMessage(shared_ptr // player) //{ // return L"death." + msgId + player->name + owner->getAName(); // //return I18n.get("death." + msgId, player.name, owner.getAName()); // } std::shared_ptr IndirectEntityDamageSource::getDeathMessagePacket( std::shared_ptr player) { std::shared_ptr held = entity->instanceof(eTYPE_LIVINGENTITY) ? std::dynamic_pointer_cast(entity)->getCarriedItem() : nullptr; std::wstring additional = L""; int type; if (owner != nullptr) { type = owner->GetType(); if (type == eTYPE_SERVERPLAYER) { std::shared_ptr sourcePlayer = std::dynamic_pointer_cast(owner); if (sourcePlayer != nullptr) additional = sourcePlayer->name; } } else { type = entity->GetType(); } if (held != nullptr && held->hasCustomHoverName()) { return std::shared_ptr( new ChatPacket(player->getNetworkName(), m_msgWithItemId, type, additional, held->getHoverName())); } else { return std::shared_ptr(new ChatPacket( player->getNetworkName(), m_msgId, type, additional)); } } // 4J: Copy function DamageSource* IndirectEntityDamageSource::copy() { return new IndirectEntityDamageSource(*this); }