Ник атакующего игрока

Версия Minecraft
1.12.2
API
Forge
Мне нужно получить ник игрока, который последним атаковал меня(локального игрока), при том, что мод у меня полностью клиентский.

Пытался использовать события LivingAttackEvent, LivingDamageEvent, LivingHurtEvent. Во всех этих событиях, если я атакую существо, то damageType == "player", а если меня атакует существо/игрок, то тип урона "generic"(общий), и получить атакующее существо я не могу. Погуглив узнал, что клиент не может знать источник урона на сервере. Неужели нету другого способа определить, какой именно игрок атакует меня?
 
390
7
27
justc0de написал(а):
Если я атакую существо, то damageType == "player", а если меня атакует существо/игрок, то тип урона "generic"(общий), и получить атакующее существо я не могу.
Ну так это тип урона, а получить сущность можно так event.source.getSourceOfDamage()
 

jopi

Попрошайка
1,421
30
260
В теории можно.
Если я не ошибаюсь можно, кастить LivingHurtEvent, там проверять если source.getEntity() != null && source.getEntity() instanceof EntityPlayer то можно взять ((EntityPlayer)source.getEntity()).username либо доставать напрямую через getEntityName()

По поводу точного кода сказать не могу, на 1.6.4 DamageSource может предложить метод getEntity
 
Сверху