Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Если здоровье меньше...

Тема в разделе "Разработка плагинов для новичков", создана пользователем _Rudey_, 28 ноя 2016.

  1. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    Там вроде все норм.
     
  2. Хостинг MineCraft
    <
  3. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    АЛЕ! Это не CreatureSpawnEntity! Дамага то не нанесет, ивент не вызовется
     
  4. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    .... а теперь я включу килл ауру... ииииии...
    p.s: не так выразился.
     
  5. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Сразу бы так... Можно лимит на игрока сделать :D
     
  6. AtomicInteger

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

    Баллы:
    46
    Я всё ещё не понимаю, почему сервер должен зацикливаться.Ну да, там есть проверка на каждый удар по мобу, да, это не совсем экономно, но всё же, почему сервер должен зацикливаться?
     
  7. oleg57zls

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Нормальный код. Его спросили, он расписал все. Разве что немного не оптимизировано, но это уже на совести того кто этот код будет использовать. И все правится.
    А вот про "Зациклится" - полный бред.
     
  8. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    ну если хп 350, то да.
    А если два то наврятли зациклится.
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Ничего там не зацыклиться, просто будет спавнить при каждом дамаге, пока условие подходит.
     
  10. oleg57zls

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Да они тут бред какой-то пишут. Зациклится у них там что-то должно.
    Они походу даже код не понимают, а лезут со своими "зациклится, код почитай"
     
  11. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Пфф полюбому, клиенты пишем.. А тут BukkitAPI не понимаем :D[DOUBLEPOST=1480439009,1480438668][/DOUBLEPOST]
    Ахаха, представь что по мобу бьют хотя-бы тысячу раз в секунду :D
     
  12. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Так он вымрет. Если только дамаг у игрока будет 0.[DOUBLEPOST=1480439617][/DOUBLEPOST]И потом античит тебе писды вкатит за такое.
     
  13. AtomicInteger

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

    Баллы:
    46
    И что?Да, это ресурсозатратно, но это не проблема кода, это проблема того кто его использует.А код делает ровно то, что хотел автор темы.Я не буду писать защиту от идиотов.Это ровне то же, что и ограничить половину функционала, например, WE, ибо половиной его команд можно положить сервер(set,fixwater,drain etc.)Обвинять в это автора, как минимум, глупо.В качестве модернизации можно ограничить область действия слушателя только на игрока, хоть это и не сильно сократит ресурсозатраты, но иначе я не понимаю, зачем это вообще нужно.Вот:
    Код:
      Код удалён, есть реализации получше.
     
    Последнее редактирование: 29 ноя 2016
  14. slavik123123123

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

    Баллы:
    143
    Имя в Minecraft:
    Leymooooooooooo
    почему бы просто сразу этот эвент не использовать?
     
  15. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Да не, не вкатывает вроде..[DOUBLEPOST=1480440175,1480440117][/DOUBLEPOST]
    А разве мы не должны делать свою работу качественно?
     
  16. AtomicInteger

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

    Баллы:
    46
    Потому что существует возможность получения урона не от сущности, а от блока.Во втором варианте я как раз исключил получение урона от блока(используя EntityDamageByEntityEvent), а потом сузил выборку до того, что слушатель обрабатывает ивент только в том случае, если атакующий - игрок(тем самым исключив урон от блоков и всех сущностей, кроме игрока).
     
  17. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Помоему можно это сделать более компактнее
     
  18. AtomicInteger

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

    Баллы:
    46
    О какой работе идёт речь?Тогда уж, IcedwinterZ, жду реализации получше от тебя.
     
  19. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Говнокодер номер один :D Сяпки - поржал.
     
  20. AtomicInteger

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

    Баллы:
    46
    Конечно, можно и так сделать
    Код:
        @EventHandler
        public void onEntityEvent(EntityDamageByEntityEvent event) {
            if(event.getDamager() instanceof Player) {
                EntityType currentEntityType = event.getEntity().getType();
                LivingEntity entity = (LivingEntity) event.getEntity();
                if(config.getList("entities").contains(currentEntityType.toString()) && entity.getHealth() < config.getInt("healthCount"))
                    entity.getWorld().spawnEntity(entity.getLocation(), EntityType.valueOf(config.getString("spawnEntity")));
            }
        }
     
  21. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Жуй.

    Код:
        @EventHandler
        public void on(EntityDamageByEntityEvent e) {
            UUID uuid = e.getEntity().getUniqueId();
            if(mob.get(uuid)!=null) {
                //Что то делаем
                mob.remove(uuid);
            }
        }
    Пруфит!
     

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