@events.entity_deathотменить нельзя3 методаКогда живое существо умирает: и рядом с тобой, и по данным, пришедшим с сервера.
Готовый момент для статистики: посчитать убийства, отметить смерть цели, сбросить всё, что скрипт держал про эту сущность.
Кто именно убил, отдаёт getKillerEntity(). Если сервер этого не сообщил, будет None, и это нормально, а не ошибка.
| Метод | Возвращает | Зачем |
|---|---|---|
getEntity() | LivingEntity | Кто умер. Объект Minecraft, нужен wrap |
getSource() | DamageSource | None | Источник урона, если он известен |
getKillerEntity() | LivingEntity | None | Кто убил, если сервер это сказал |
db = Storage("killcount")
kills = db.get("kills", 0)
@events.entity_death
def on_death(event):
global kills
killer = event.getKillerEntity()
if killer is None or not world.ingame():
return
if killer.getId() == mc.player.getId(): # убили мы
kills += 1
db.set("kills", kills).save()
client.msg("Убийств за всё время: %d" % kills)Общий список всех событий и правила подписки лежат на странице События.