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

Помогите Проблема подгрузки чанка

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

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

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

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

    Столкнулся с такой проблемой:

    Мне нужно получать список Entity в мире, когда в мире есть хотя-бы один игрок, все хорошо,
    а когда нету ни одного игрока, список Entity - пуст. Я придумал что можно подгружать 1 чанк из этого мира, и тогда уже будут видны некоторые Entity.

    Так вот, собственно суть проблемы:

    Когда я подгружаю чанк, по идее, сразу-же после этого я могу выполнить поиск Entity в этом чанке.
    Но к моему сожалению, чанк подгружается только на следующий тик. А мне нужно подгрузить чанк и сразу-же взять список Entity, а не ждать следующего тика.

    Есть идеи?
     
    Denscore и Tarock12 нравится это.
  2. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Почему нет? Получайте список на следующий тик.
     
  3. Автор темы
    kirill2011s

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

    Баллы:
    103
    Ну я еще подожду, может кто-нибудь что-нибудь по лучше придумает.

    Еще конечно есть вариант отслеживать все выходы игрока из мира и если там больше никого не осталось, то подгружать, но это тоже долго.

    Есть еще идеи?
     
  4. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Другая идея это ловление Выгрузки чанка, когда можно получить всех сущностей в нём.
     
  5. Автор темы
    kirill2011s

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

    Баллы:
    103
    Тоже можно, но все-же хотелось что-бы все дело не выходило за рамки одного метода.
     
  6. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    Эээ... а зачем Вам энтити, если нет игроков? Что вы с ними делаете?

    Если Вам достаточно энтитей в одном чанке - сделайте какой-то чанк невыгружаемым (и выпустите там свиней или иных не деспавнящихся мобов)
     
    Последнее редактирование: 21 май 2014
  7. Автор темы
    kirill2011s

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

    Баллы:
    103
    Суть плагина в том, чтобы спавнить дракона края каждые 30 минут. Или не спавнить, если он там уже есть, а когда игроков в эндер-мире нету, он постоянно спавнит дракона.

    Как сделать чанк не выгружаемым?
     
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    a) Отслеживать ChunkUnloadEvent
    b) Периодически проверять нужный чанк(isLoaded())
     
  9. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    я это делал 1м огромным костылём:
    Код:
    public boolean isSpawned = false;
    спавним дракона
    Код:
    isSpawned = true;
    EntityDeathEvent:
    если умер дракон:
    Код:
    isSpawned = false;
    CreatureSpawnEvent

    Код:
    if(isSpawned == true){...}
    проверяешь, если это дракон то:
    Код:
    e.setCancelled(true);
    Ещё костыли нужны? :D
     
  10. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Деспаун вызывается при выгрузке чанка?
     
  11. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    нет вроде, когда я летал по карте своего 'сервера', То в 1м чанке видел более 200 мобов :D
     
  12. unlimited

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

    Баллы:
    123
    Имя в Minecraft:
    infinity
    Entity Дракоша = Твой дракон

    Код:
    public void (ChunkUnloadEvent ch) {
      Entity[] ents = ch.getEntities();
      if(Arrays.asList(ents).contains(Дракоша)) {
          e.setCanceled(true);
      }
    }
     
  13. Автор темы
    kirill2011s

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

    Баллы:
    103
    Ладно, сейчас по пробуем все что написали...
     
    Tarock12 нравится это.
  14. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    даже мой костыль?:eek:
     
  15. Автор темы
    kirill2011s

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

    Баллы:
    103
    Не, что-то на подобии этого у меня было изначально.)
     
  16. fromgate

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

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    А зачем спавнить дракона Эндера (уж не знаю из какого Вы края, что у Вас драконы ;)) если в Энде нет игроков? Пришёл игрок, проверяете есть ли в мире дракон. Нет - спавните. К чему вся эта чехарда?
     
  17. Автор темы
    kirill2011s

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

    Баллы:
    103
    Задача в том, чтобы спавнить дракона через определенное время, то есть, когда прийдет время спавна дракона игроков может там и не быть.
     
  18. ptnk

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

    Баллы:
    173
    В чем проблема загрузить чанк, и сделать runnable, который запустится с задержкой в несколько тиков?
     
    Лайка2, mahimamax и Лайка нравится это.
  19. Автор темы
    kirill2011s

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

    Баллы:
    103
    Да я уже сделал...
     
    Лайка2, mahimamax и Лайка нравится это.
  20. ptnk

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

    Баллы:
    173
    ну так закрой тему.
     
    Лайка2, mahimamax и Лайка нравится это.
Статус темы:
Закрыта.

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