Проверка чанка на прогрузку

Версия Minecraft
1.7.10
Всем привет.

У меня есть EntityPlayer, который я получаю из LivingUpdateEvent на клиентской части. Я могу достать из него координаты чанка, а каким образом можно проверить чанк по координатам на то, прогружен ли он/сгенерирован ли? Ещё бы желательно, чтобы эта проверка работала, пока клиент подключён к серверу.
Это нужно, к примеру, чтобы останавливать игрока(при помощи setVelocity) при попытке пройти в непрогруженный чанк при высокой скорости полёта.

Благодарю заранее.
 
Решение
Это условие отлично срабатывает на клиенте если чанк еще не загрузился:
!player.worldObj.blockExists((int)player.posX, 0, (int)player.posZ) || !player.worldObj.getChunkFromBlockCoords((int)player.posX, (int)player.posZ).isChunkLoaded
В данный момент, код такой:
onEntityUpdate:
@SubscribeEvent
  public void onEntityUpdate(LivingUpdateEvent e) {
      if(!(e.entityLiving instanceof EntityPlayer)) return;
      EntityPlayer player = (EntityPlayer) e.entityLiving;
      if(player != Minecraft.getMinecraft().thePlayer) return;
      if(!player.worldObj.getChunkProvider().chunkExists(player.chunkCoordX, player.chunkCoordZ) && player.capabilities.isFlying) {
          player.setVelocity(0D, 0D, 0D);
      }
  }
Но игрок всё равно может залетать в непрогруженные чанки при включённом флае
 
Последнее редактирование:
2,992
191
577
ClientTickEvent - не лучше будет?
Ну или хотя бы PlayerTickEvent.
В принципе, ClientTickEvent действительно норм тема, попробую на него переписать, но это проблему не разрешит. Суть в том, что клиент думает, что чанк существует и прогружен, поэтому не останавливает игрока.
chunkExists(player.chunkCoordX, player.chunkCoordZ)
Конкретно в этом моменте.

Мб я координаты чанка как-то неверно указываю?
 
5,397
179
986
Вероятно, на клиенте все чанки считаются загруженными, просто они пустые, пока с сервера не будет принят(и обработан) пакет с данными чанка.
Поэтому чекать надо на пустой чанк
Че-то типо того
world.getChunkFromChunkCoords(player.chunkCoordX, player.chunkCoordZ).isEmpty()
 

tox1cozZ

aka Agravaine
Модератор
7,124
455
2,148
Это условие отлично срабатывает на клиенте если чанк еще не загрузился:
!player.worldObj.blockExists((int)player.posX, 0, (int)player.posZ) || !player.worldObj.getChunkFromBlockCoords((int)player.posX, (int)player.posZ).isChunkLoaded
 
Решение
Сверху