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

Статус
Закрыто для дальнейших ответов.

kirill2011s

Старожил
Пользователь
Баллы
103
Здравствуйте уважаемые форумчане!

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

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

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

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

Есть идеи?
 
Почему нет? Получайте список на следующий тик.
 
Почему нет? Получайте список на следующий тик.

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

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

Есть еще идеи?
 
Ну я еще подожду, может кто-нибудь что-нибудь по лучше придумает.

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

Есть еще идеи?
Другая идея это ловление Выгрузки чанка, когда можно получить всех сущностей в нём.
 
Эээ... а зачем Вам энтити, если нет игроков? Что вы с ними делаете?

Если Вам достаточно энтитей в одном чанке - сделайте какой-то чанк невыгружаемым (и выпустите там свиней или иных не деспавнящихся мобов)
 
Последнее редактирование:
Эээ... а зачем Вам энтити, если нет игроков? Что вы с ними делаете?

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

Если Вам достаточно энтитей в одном чанке - сделайте какой-то чанк невыгружаемым (и выпустите там свиней или иных не деспавнящихся мобов)

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



Как сделать чанк не выгружаемым?
я это делал 1м огромным костылём:
Код:
public boolean isSpawned = false;
спавним дракона
Код:
isSpawned = true;
EntityDeathEvent:
если умер дракон:
Код:
isSpawned = false;
CreatureSpawnEvent

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

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

Код:
public void (ChunkUnloadEvent ch) {
  Entity[] ents = ch.getEntities();
  if(Arrays.asList(ents).contains(Дракоша)) {
      e.setCanceled(true);
  }
}
 
Суть плагина в том, чтобы спавнить дракона края каждые 30 минут. Или не спавнить, если он там уже есть, а когда игроков в эндер-мире нету, он постоянно спавнит дракона.
Как сделать чанк не выгружаемым?

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

Задача в том, чтобы спавнить дракона через определенное время, то есть, когда прийдет время спавна дракона игроков может там и не быть.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх