4jcraft/Minecraft.World/Util/CombatEntry.cpp
2026-03-21 17:37:16 -05:00

50 lines
1.5 KiB
C++

#include "../Platform/stdafx.h"
#include "../Headers/net.minecraft.world.damagesource.h"
#include "../Headers/net.minecraft.world.entity.h"
#include "BasicTypeContainers.h"
#include "CombatEntry.h"
CombatEntry::CombatEntry(DamageSource* source, int time, float health,
float damage, CombatTracker::eLOCATION location,
float fallDistance) {
this->source = NULL;
if (source != NULL) {
// 4J: this might actually be a derived damage source so use copy func
this->source = source->copy();
}
this->time = time;
this->damage = damage;
this->health = health;
this->location = location;
this->fallDistance = fallDistance;
}
CombatEntry::~CombatEntry() { delete source; }
DamageSource* CombatEntry::getSource() { return source; }
int CombatEntry::getTime() { return time; }
float CombatEntry::getDamage() { return damage; }
float CombatEntry::getHealthBeforeDamage() { return health; }
float CombatEntry::getHealthAfterDamage() { return health - damage; }
bool CombatEntry::isCombatRelated() {
return source->getEntity() &&
source->getEntity()->instanceof(eTYPE_LIVINGENTITY);
}
CombatTracker::eLOCATION CombatEntry::getLocation() { return location; }
std::wstring CombatEntry::getAttackerName() {
return getSource()->getEntity() == NULL
? L""
: getSource()->getEntity()->getNetworkName();
}
float CombatEntry::getFallDistance() {
if (source == DamageSource::outOfWorld) return Float::MAX_VALUE;
return fallDistance;
}