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

Помогите Спавн моба в другом потоке

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

Статус темы:
Закрыта.
  1. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Мне нужно заспавнить моба в async-ивенте. Пробовал и через обычный Bukkit API и через WorldServer+Entity[Zombie к примеру]. Все равно пишет Exception: Async entity add

    Также попробовал создать новый ивент, вызвав его в Async ивенте, но трюк не сработал.

    Как можно обойти этот блок? Помогите пожалуйста)
     
  2. Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Вроде никак.
     
  3. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Никак это обойти нельзя. Мир изменять в асинхронном потоке не получится
     
  4. EnderBro3D

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

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
    Если я правильно понял вопрос, то можно попробовать Bukkit.getScheduler().runTask(new SpawnMob());
     
  5. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Обойти можно, напрямую имитировать спавн, но без проверки потока.
    Этим ты добьешься ошибок, краша и подобной срани, потому что так специально и сделали проверку потока, чтобы асинхронно вы не спавнили. Так оно заделано. И не вижу причин спавнить асинхронно.
     
  6. alexandrage

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

    Баллы:
    173
    Юзать бакит шедулер.
    new Scheduler(моб).runTask(plugin);
     
  7. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Всё что надо выполнить в основном потоке с другого - отправляй в синхронный шедулер
     
  8. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Да, спасибо, именно это мне и нужно было. Спасибо также @alexandrage, но ответ был менее понятен.
     
Статус темы:
Закрыта.

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