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

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

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

  1. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Что в нем такого?
    Ахах, раз в 2-е минуты проверять мобов в мире с опр. хп, боооже какая нагрузка, наверное дедик на Celeron-e :D
     
  2. oleg57zls

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

    Баллы:
    173
    Skype:
    BlayzerQ
    Имя в Minecraft:
    Blayzer
    Сейчас бы раз в две минуты моба проверять, когда по ТЗ нам надо при нужном хп у моба которого бьем спавнить "миньонов".
     
  3. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Пфф, сейчас бы ТЗ читать :D Я просто предложил альтернативу
     
  4. AtomicInteger

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

    Баллы:
    76
    Убил ты такой моба, а где миньоны?А через 2 минуты будут.Или не будут.
     
  5. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Чот не продумал ничего, спать уже хочу ;D А на счет ТЗ, я его не читал
     
  6. AtomicInteger

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

    Баллы:
    76
    Слишком много кастомизации не бывает, добавил поддержку миров из конфига:

    Код:
        @EventHandler
        public void onEntityEvent(EntityDamageByEntityEvent event) {
            if(event.getDamager() instanceof Player && config.getList("worlds").contains(event.getDamager().getWorld())) {
                LivingEntity entity = (LivingEntity) event.getEntity();
                if(config.getList("entities").contains(event.getEntity().getType().toString()) && entity.getHealth() < config.getInt("healthCount"))
                    entity.getWorld().spawnEntity(entity.getLocation(), EntityType.valueOf(config.getString("spawnEntity")));
            }
        }
     
  7. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Каша
     
  8. alexandrage

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

    Баллы:
    173
    Но главную проблему ты не решил.

    Код:
        @EventHandler
        public void on(EntityDamageByEntityEvent e) {
            Entity mob = e.getEntity();
            if(mob.getCustomName()==null) return;
            if(mob.getCustomName().equals("Живой и полнон сил")) {
                LivingEntity en = (LivingEntity) mob;
                if(en.getHealth()<300) {
                    mob.setCustomName("Подыхаю");
                    mob.getWorld().spawnEntity(mob.getLocation(), EntityType.ZOMBIE);
                }
            }
        }
     
    Последнее редактирование: 29 ноя 2016
  9. AtomicInteger

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

    Баллы:
    76
    Я этой строки не понимаю.
     
  10. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Вот хороше решение
    Сравниваем имя моба с заданным в Equals
     
  11. AtomicInteger

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

    Баллы:
    76
    Это, конечно, понятно.Но где мы это кастомное имя задаем?Почему это лучше EntityType?Не понимаю.
     
  12. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Можно мобов объеденить
     
  13. AtomicInteger

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

    Баллы:
    76
    Каким образом?Имеешь в виду то, что у нескольких мобов один customName?
     
  14. alexandrage

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

    Баллы:
    173
    При спавне босса конечно же.
    Не обязательно, можно по части из его имени.
    Код:
        @EventHandler
        public void on(EntityDamageByEntityEvent e) {
            Entity mob = e.getEntity();
            if(mob.getCustomName()==null) return;
            if(mob.getCustomName().contains("Живой и полон сил")) {
                LivingEntity en = (LivingEntity) mob;
                if(en.getHealth()<300) {
                    mob.setCustomName(mob.getCustomName().replace("Живой и полон сил", "Подыхаю"));
                    mob.getWorld().spawnEntity(mob.getLocation(), EntityType.ZOMBIE);
                }
            }
        }
     
  15. AtomicInteger

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

    Баллы:
    76
    Какого босса?Тут ещё используется какой-то ивент?
    Ты вызываешь метод getCustomName() на mob, а у класса Entity даже нет такого метода, или я что-то упустил?
    Зачем нужны дополнительные проверки и, тем более, записи в виде mob.setCustomName?
    Более того, код не работает, я только что проверил.
    А какая у тебя версия?
     
  16. alexandrage

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

    Баллы:
    173
    У LivingEntity есть.
     
  17. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Даа
     
  18. AtomicInteger

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

    Баллы:
    76
    Да, я заменил.
    EntityType тоже объединяет, не знаю это ли ты имел в виду...
     
  19. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Устанавливает имя
     
  20. AtomicInteger

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

    Баллы:
    76
    Спасибо.Я сам бы не додумался.
    Но всё же, что за главная проблема?
     

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