aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/EntityDamageSource.cpp
blob: 22237bf1805200800229824ab17ad532d7876eff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "stdafx.h"
#include "net.minecraft.world.entity.player.h"
#include "net.minecraft.world.entity.h"
#include "net.minecraft.world.damagesource.h"
#include "net.minecraft.network.packet.h"

//EntityDamageSource::EntityDamageSource(const wstring &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;
}

shared_ptr<Entity> EntityDamageSource::getEntity()
{
	return entity;
}

//wstring EntityDamageSource::getLocalizedDeathMessage(shared_ptr<Player> player)
//{
//	return L"death." + msgId + player->name + entity->getAName();
//	//return I18n.get("death." + msgId, player.name, entity.getAName());
//}

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->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())
	{
		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 ) );
	}
}

bool EntityDamageSource::scalesWithDifficulty()
{
	return (entity != NULL) && entity->instanceof(eTYPE_LIVINGENTITY) && !entity->instanceof(eTYPE_PLAYER);
}

// 4J: Copy function
DamageSource *EntityDamageSource::copy()
{
	return new EntityDamageSource(*this);
}