1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите getKiller() и NPE 24/7

Тема в разделе "Разработка плагинов для новичков", создана пользователем IcedwinterZ, 19 фев 2017.

  1. Автор темы
    IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    В PlayerDeathEvent при попытке получить киллера, я жру NPE. Киллер точно есть, это моб, вернуть эта штука должна LivingEntity, но возвращает NPE, что делать?


    Код:
    Player p = e.getEntity();
            Entity killer = p.getKiller();
            if(killer instanceof Player){
                return;
            }
            if(killer == null){
                p.sendMessage("гавно");
                return;
            }
            p.sendMessage("*****cь");
            if(HellMobParser.toSett.containsKey(killer.getCustomName())){
                HellMob mob = HellMobParser.toSett.get(killer.getCustomName());
                if(mob.isDamageMessage()){
                    rand = HellWar.plugin.getConfig().getInt("kill-message-rand");
                    if(rand == 0){
                        rand ++;
                    }
                    if(r.nextInt(rand) == 0){
                        String message = "&a&l[" + killer.getCustomName() + "&a&l] " + mob.getDamageMessages().get(r.nextInt(mob.getDamageMessages().size()));
                        p.sendMessage(Utils.color(message));
                    }
                }
            }
     
  2. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    там вроде только игрока возвращает. и всё
     
  3. Автор темы
    IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    А как моба получить?
     
  4. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
  5. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    e.getEntity().getLastDamageCause().getEntity()
    попробуй так
     
  6. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    Код:
        @EventHandler
        public void PlayerDeathEvent(PlayerDeathEvent event) {
            Entity entity = event.getEntity();
            Player victim = (Player) entity;
            Entity killer = victim.getKiller();
            if (killer != null && killer.getType() == EntityType.КАКОЙ-ТОМОБ) {
                   //TODO
            }
        }
    
     
    Последнее редактирование: 19 фев 2017
  7. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    ему не игрок нужен
     
  8. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    Да я для примера, дальше то понять должен уже
     
  9. Автор темы
    IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Сделал так, попытался получить у него кастом нейм, угадай что поймал?)
     
  10. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    ну может у моба нет кастом нейма?
     
  11. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    А как ты хочешь у него его получить, если ему его никто не мог поставить?
     
  12. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    getKiller возвращает ТОЛЬКО игрока
     
  13. Автор темы
    IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Наверное, я ему перед этим поставил ...
     
  14. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    96
    А как ты это сделал?
     
  15. Автор темы
    IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Код:
    ent.getEquipment().setItemInHand(mob.getHand());
            ent.getEquipment().setHelmet(mob.getHilmet());
            ent.getEquipment().setChestplate(mob.getChestplate());
            ent.getEquipment().setBoots(mob.getBots());
            ent.setMaxHealth(mob.getHeal());
            ent.setHealth(mob.getHeal());
            ent.setCustomName(mob.getName());
            ent.setCustomNameVisible(true);
            NMSController.setRangeDetection(ent, mob.getDetect());
            NMSController.setSpeed(ent, mob.getSpeed());
            NMSController.setDamage(ent, mob.getDamage());
            listToRandom.clear();
            mobsByType.clear();

    ПАМАГИТЕ))0))
     
  16. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    можно покостылить (ne testil)
    @EventHandler
    public void onDamage(EntityDamageByEntityEvent e) {
    Entity attacked = e.getEntity();
    if ((attacked.getHealth() - e.getDamage()) > 0) return;
    Entity damager = e.getDamager();
    //todo
    }
     
  17. TheZefirrkka

    TheZefirrkka Активный участник Пользователь

    Баллы:
    76
    Теку...

    Сработает
     
  18. slavik123123123

    slavik123123123 Старожил Пользователь

    Баллы:
    143
    Имя в Minecraft:
    Leymooo
    скорее всего нужно
    getFinalDamage()
     
  19. TheZefirrkka

    TheZefirrkka Активный участник Пользователь

    Баллы:
    76
    А в чём разница?)
     
  20. Автор темы
    IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Поч?
     

Поделиться этой страницей