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

Помогите Ошибка в потоке

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

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

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

    Баллы:
    103
    Здравствуйте, уважаемые форумчане!

    У меня есть плагин который должен спавнить моба в потоке.

    При запуске этого плагина на bukkit, у меня все работает, мобы спавнятся, ну вообщем все хорошо.
    Когда я запускаю плагин на Spigot, происходит ошибка:
    Вот кусочек кода в котором ошибка:

    Код:
    Bukkit.getWorld(world).spawnCreature(loc, EntityType.ZOMBIE);
    world - название мира
    loc - место для спавна моба

    Так-же эклипс говорит что этот метод устарел. Может как-раз дело в устаревшем методе?
    Подскажите, пожалуйста, новый метод для спавна, или объясните как решить эту ошибку.
     
    ПриветОтЛайки нравится это.
  2. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Код:
    loc.getWorld().spawnEntity(loc, EntityType.ZOMBIE);
     
  3. Автор темы
    kirill2011s

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

    Баллы:
    103
    И вы уверены что не будет опять исключения?
     
  4. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    А попробовать не хотите?
     
    Hilgert нравится это.
  5. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Уверен. :eek:
     
  6. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    В спиготе многое делается в отдельных потоках. Это послужило причиной ошибки. Исправление(хотя я сам не знаю) - вывести это действие в главный поток =\
     
  7. ptnk

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

    Баллы:
    173
    Можно попробовать все действия спрятать в runnable и вызвать через шедуллер - должно помочь с проблемой потока.
     
    Hilgert нравится это.
  8. Автор темы
    kirill2011s

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

    Баллы:
    103
    Я не очень понимаю как спавнить мобов в главном потоке? Ведь мне нужно чтобы мобы спавнились через определенный промежуток времени.

    Ээээ, а по подробнее?
     
  9. ptnk

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

    Баллы:
    173
    Что поподробнее? Нужные действия выполняешь в планировщике потоков через минимальное количество тиков (хоть ноль поставь) - это должно гарантировать, что действия будут выполнены в главном потоке.
     
  10. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Твоя проблема вызвана тем что ты пытаешься взаимодействовать с непосредственно сервером из асинхронного потока. Это запрещено.
    Как и сказали выше - используй Task'и
    http://wiki.bukkit.org/Scheduler_Programming
     
    EndEclipse нравится это.
  11. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Причиной ошибки послучило что автор не прочитал предепрежедение о том что использовать большую часть BukkitAPI не в главном потоке нельзя, так как это может вызвать краш сервера.
    И в отличии от баккита спайгот валидирует такие вещи.
     

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