aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.World/EntityDamageSource.cpp
diff options
context:
space:
mode:
authorLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
committerLoki Rautio <lokirautio@gmail.com>2026-03-04 03:56:03 -0600
commit42aec6dac53dffa6afe072560a7e1d4986112538 (patch)
tree0836426857391df1b6a83f6368a183f83ec9b104 /Minecraft.World/EntityDamageSource.cpp
parentc9d58eeac7c72f0b3038e084667b4d89a6249fce (diff)
parentef9b6fd500dfabd9463267b0dd9e29577eea8a2b (diff)
Merge branch 'main' into pr/win64-world-saves
# Conflicts: # Minecraft.Client/MinecraftServer.cpp # README.md
Diffstat (limited to 'Minecraft.World/EntityDamageSource.cpp')
-rw-r--r--Minecraft.World/EntityDamageSource.cpp37
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