Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов 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. Хостинг MineCraft
    <
  3. slavik123123123

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

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

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
  6. slavik123123123

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

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

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

    Баллы:
    46
    Код:
        @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
  8. slavik123123123

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Баллы:
    46
    А как ты это сделал?
     
  16. Автор темы
    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();
    [DOUBLEPOST=1487525646,1487521248][/DOUBLEPOST]ПАМАГИТЕ))0))
     
  17. xDark

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

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

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

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    Теку...

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

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

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

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

    Баллы:
    76
    Skype:
    RomaMamkinHasker1337
    Имя в Minecraft:
    TheZefirrkka
    А в чём разница?)
     
  21. Автор темы
    IcedwinterZ

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

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

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