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

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

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    RudeyCoolLeet
    И снова здравствуйте!
    Я решил сделать что-то вроде скиллов мобам.
    Как сделать так, чтобы если у определённого моба хм = или <... Ну, допустим 300, то он выпускает
    каких-нибудь миньонов?
    Заранее спасибо :)
     
  2. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Код:
    if (spider.getHealth() >= 300){
                spider.getLocation().getWorld().spawnEntity(spider.getLocation(), EntityType.ZOMBIE);
            }
     
  3. Автор темы
    _Rudey_

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

    Баллы:
    76
    Имя в Minecraft:
    RudeyCoolLeet
    Пробовал. Не происходит ничего.
     
  4. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    В каком ивенте используешь?
     
    Последнее редактирование: 28 ноя 2016
  5. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Ни нада =(
     
  6. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Будем*
     
  7. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Пасаны, не бейте, я с села =(
    Вчера из танка вылез =(
     
  8. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Не переживай, мы не сильно
     
  9. alexandrage

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

    Баллы:
    173
    Тогда нужна дубинка покрепче.
     
  10. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    С гвоооооздиком :D
     
  11. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Неее, плес(9((( Я в детстви головой ударелся и мозг отрофировался, мне нильзя палучать боль, я в овощьь привращусь и мама мэня в салат порежет9(((все деньги отдам вам, ток не бейте!
     
  12. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Проверяй здоровье моба в мире, если больше спауни на его кордах моба
    Получить моба в мире можно через for
     
  13. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Код:
    bublic voed МобДамадже == моб;(((
    ЕСЛИ (Моб.get HP 300}}
    minecraft.spawn.зомби
    chat.игрок.отправить сообщение:[RED] + Босс призвал мобав!
    Должно работать, но мне Eclipse всё подчеркнул красным =(
     
  14. Автор темы
    _Rudey_

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

    Баллы:
    76
    Имя в Minecraft:
    RudeyCoolLeet
    Очень странно, почему же? О_о
    Даже не знаю
     
  15. Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    А у него ТОЧНО HP 300? Нигде не вижу setMaxHealth->then->setHealth
     
  16. AtomicInteger

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

    Баллы:
    76
    В общем, метод должен выглядеть примерно так:
    Код:
        @EventHandler
        public void onEntityEvent(EntityDamageEvent event) {
            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")));
        }
    Для удобства я сделал 3 значения, которые мы получаем из файла конфигурации, что позволяет задавать нужных мобов и предел здоровья. Конфиг выглядит так:
    Код:
    entities:
        - SHEEP
    healthCount: 2
    spawnEntity: PIG
    В массив entities заносим всех мобов, которые должны "иметь скилы".Значение healthCount отвечает за значение здоровья моба, после которого он начнёт спавнить других мобов. Значение spawnEntity отвечает за моба, который будет спавниться.
    Все доступные сущности можно посмотреть в enum

    При такой конфигурации(как в конфиге), мы будем бить овцу и она будет спавнить свиней, после того как у неё останется меньше 2 хп, таким образом можно заспавнить 2 свиньи, если бить овцу рукой.В качестве дополнения, можно добавить команды для добавления значений в конфиг и его перезагрузки.Так же, можно сделать подгрузку значений из конфига при включении плагина, ибо при каждом ударе моба мы будем запрашивать значение из конфига, что не есть очень хорошо.Вышеприведённый код протестирован и работает как нужно(но баги всё равно возможны).
     
  17. xDark

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

    Баллы:
    96
    а потом сервер зациклится... ну - ну.. удачи.
     
  18. AtomicInteger

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

    Баллы:
    76
    Почему сервер зациклится?
     
  19. IcedwinterZ

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

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    ne
     
  20. xDark

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

    Баллы:
    96
    в код вчитайся. поймешь
     

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