Помогите Заспавнить зомби на месте смерти игрока.

  • Автор темы Автор темы fastow
  • Дата начала Дата начала

fastow

Ньюби
Баллы
1
Перепробовал все. То что ниже не единственный вариант. Нечего не работает, в цикл даже не заходит, ибо "Ты умер!" не высвечивается, помогите(

@EventHandler

public void onDeathPlayer(PlayerDeathEvent e) {
Player p = e.getEntity();
if (p.isDead()) {
p.sendMessage("Ты умер!");
Location loc = e.getEntity().getLocation();
p.getLocation().getWorld().spawnEntity(loc, EntityType.ZOMBIE);
}
 
1. Всегда оборачивай код с отступами в
HTML:
[CODE] Твой код [/CODE]
2. На момент вызова PlayerDeathEvent игрок еще жив, отсюда p.isDead() будет false. Можешь обернуть в таск, который запустится после события смерти:
Код:
Plugin plugin = // обьект твоего плагина (который наследует JavaPlugin)
Bukkit.getScheduler().runTask(plugin, () -> {
    if (p.isDead()) {
        p.sendMessage("Ты умер!");
        Location loc = e.getEntity().getLocation();
        p.getLocation().getWorld().spawnEntity(loc, EntityType.ZOMBIE);
    }
});
 
1. Всегда оборачивай код с отступами в
HTML:
[CODE] Твой код [/CODE]
2. На момент вызова PlayerDeathEvent игрок еще жив, отсюда p.isDead() будет false. Можешь обернуть в таск, который запустится после события смерти:
Код:
Plugin plugin = // обьект твоего плагина (который наследует JavaPlugin)
Bukkit.getScheduler().runTask(plugin, () -> {
    if (p.isDead()) {
        p.sendMessage("Ты умер!");
        Location loc = e.getEntity().getLocation();
        p.getLocation().getWorld().spawnEntity(loc, EntityType.ZOMBIE);
    }
});

А сам код верный?
 
Я придурок) У меня не работало потому что я забыл написать Bukkit.getServer().getPluginManager().registerEvents(this, this); Я все верно писал до этого ХД
Значит игрок на момент события уже мертв?
 
Вопрос только в том, зачем проверять, умер ли игрок, прямо в событии смерти..
 
Назад
Верх