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

Помогите Деспаун мобов + экипировка мобов

Тема в разделе "Разработка плагинов для новичков", создана пользователем CraftCoder, 30 май 2014.

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

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    1.Как отменить или обойти деспаун мобов?
    2.Как подгрузить чанк?
    3.Как сделать так чтобы мобы спавнились максимум в кожанной броне, а не в золотой, кольчужной, железной или алмазной, т.е мне нужен оптимальный алгоритм этого: в CreatureSpawnEvent проверить наличие брони, и всю броню, которая есть на мобе, заменить на кожаннную и чтобы при этом чары остались.
     
    Последнее редактирование: 31 май 2014
    Лайка2, mahimamax и Лайка нравится это.
  2. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    1. При создании моба, при обработке CreatureSpawnEvent, выполните: event.getEntity().setRemoveWhenFarAway(false);
    2. chunk.load()?
     
  3. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Жесть, ответы настолько просты :D Спасибо
    А чанк на сколько времени подгружается?
     
  4. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    CraftCoder, не знаю никогда этим не озадачивался ;)

    Но Вы можете отследить момент выгрузки чанка обрабатывая событие ChunkUnloadEvent. По идее тут же можно отменить выгрузку. Но мне ещё это событие использовать не доводилось.
     
    Лайка2, mahimamax, Лайка и ещё 1-му нравится это.
  5. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
  6. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    п.3 - собственно Вы сами всё правильно описали.
    Моб отспавнился, проверяете броню. Есть броня - создаете кожаный аналог и вешаете на него те же эффекты, что были на оригинале
     
  7. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    В броне-то чего сложного? Делаем все как сказал @fromgate. Если броня != кожаной и не равна null, значит ты ее можешь удалить/поставить кожаную + добавляешь эффекты к броне с помощью addEnchantment(Enchantment.ПРОЧНОСТЬ_КАРОЧ, Уровень)/addUnsafeEnchantment(Enchantment.ОПЯТЬПРОЧНОСТЬЕШКИНКОТ, Уровень) [ItemStack]

    Или же ты можешь получить корректные зачарования с помощью getEnchantments() (return Map<Enchantment, Integer> (Зачарование, Его уровень)). Затем используя entrySet() распределяем все эффекты :D (Или как там еще, я не профи в мапах)

    FucKQ:
    1. Почему "прочность"? Да потому что только она и есть у мобов с зачаренной броней :D
    2. Чем отличаются addEnchantment/addUnsafeEnchantment? В unsafeEnchantment ты можешь сделать меч хоть 127 уровня, а в простой addEnchantment ты можешь засунуть только тот энчат, уровень которого не завышает 4-5. (Как я помню)
     
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    На деле, зачарования могут быть любые
     
  9. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Разве? :eek: Сколько играл -- никогда не видел броню на мобе с другими зачарованиями. Как выбивал что-то - ПРОЧНОСТЬ 1! Ну да ладна..
     
  10. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Спасибо за разъяснение с броней, но меня интересует вопрос: на какое время подгружается чанк, с помощью chunk.load()?
     
  11. kirill2011s

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

    Баллы:
    103
    Точно не сразу, где-то на следующий тик.
     
  12. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Если можно, то подскажите кодом как мне подгрузить чанк и заспавнить там моба, но мне нужны гарантии что он там заспавнится, ведь если чанк не подгружен, то моб не заспавнится.
     
  13. BeYkeR

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

    Баллы:
    173
    PHP:
    //Android editor text
    Public void spawnCustomZombie(Location loc){
    boolean unload false;
    if(!
    loc.getChunk().isLoaded()){
    loc.getChunk().load();
    unload true;
    }

    Zombie zombie loc.getWorld().spawn...
    //Дальше лень писать

    if(unload){
    loc.getChunk().unload(true);
    }
    }
    Писал с телефона, могут быть недочеты. Работоспособность не гаранитирую.
     
    Последнее редактирование: 16 июн 2014
  14. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Огромное спасибо!
     
  15. kirill2011s

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

    Баллы:
    103
    Моб заспавнится даже если чанк не загружен.
     
  16. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Почему эта строка может выдавать NullPointerExeption:
    public HashMap<String, Integer> death = new HashMap<String, Integer>();
    public HashMap<String, Integer> time = new HashMap<String, Integer>();
    String name != null;

    if (death.get(name) != 0 && (systemTime - death.get(name)) >= time.get(name))
     
  17. aceJKE

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

    Баллы:
    123
    может быть нужно проверять на нул, а не на ноль if (death.get(name) != null && ...) ?
     
  18. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Вот я криворукий.... Спасибо
    У меня почему-то event.getEntity().setRemoveWhenFarAway(false); не работает :(
    Почему у меня не работает setRemoveWhenFarAway(false) и как это проверить?
     
  19. fhntv24

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

    Баллы:
    88
    проверить - запихнуть это в евент спауна моба -> потом улетаем -> прилетаем обратно.
    Или еще луште , tp 1000000 128 10000000 -> обратно.

    оффтопик: в твоем плагине на "изумрудные инструменты" очень много кода... я бы искал все рецепты которые дадут тебе алм. тулы и добовлял бы свои такие же , но с заменой на изумруд с алмаза.
     
  20. Автор темы
    CraftCoder

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

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Ну я улетал, а когда прилетал моба уже не было, как это имправить?
     

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