Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

[РЕШЕНО] Обновление биома без перезахода.

JonBoss

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Jon
Как сделать обновление биома у игрока на глазах? Ну или просто как перезагрузить чанк?
Мне просто пишет, что метод world.refreshChunk(x, z) устарел.
 
В доках на 1.7 он еще не помечен, как устаревший. Если так сильно мозолит глаза эта подсветка, то даунгрейд с 1.8 на 1.7.
 
Как сделать обновление биома у игрока на глазах? Ну или просто как перезагрузить чанк?
Мне просто пишет, что метод world.refreshChunk(x, z) устарел.
А причём тут мир? Ищи подобный метод у игрока. Что-то вроде Player.sendChunkUpdate(), который должен отправлять пакет игроку.
Хотя, мне кажется что такой возможности нет, ибо почему автор WorldEdit её не использовал?
 
Нормально это не сделать. Нужно пересылать чанк игроку. Готового метода нет в bukkit API, нужно обновлять через NMS.
 
Телепортировать его туда же, но клиенту послать, что это другой мир? -)
 
Телепортировать его туда же, но клиенту послать, что это другой мир? -)

Прикольно, до такого обмана я не додумался. В свое врем md_5, советовал игрока телепортировать чёрт знает куда и потом возвращать обратно. Но это не работает. Чанки не успевают выгрузиться. А когда сам начинаешь принудительно выгружать/загружать чанки, проиходит чёрт знает что.

В последней версии WeatherMan я отправлял чанк пакетом PacketPlayOutMapChunk - это обновляло чанки вокруг игрока и информацию о биомах тоже.
К сожалению, при этом мобы становились невидимыми для игрока. В 1.8.2 (или 1.8.3) я это побороть не смог и пока больше не пробовал.
 
Последнее редактирование:
Никак, можно конечно послать уже загруженный чанк клиенту, но это может крайне плохо закончится.
В обычном случае просто нельзя будет взаимодействовать с энтитями. В худшем майн просто зависнет или упадёт.
 
Кста, а что происходит по пакетам, когда игрока телепортируют из одного мира в другой, при условии что оба мира обычного типа (overworld, normal biomes)?
Respawn?
 
Всем спасибо за ответы, я нашел решение проблемы в одном плагине, все работает
Кому нужно: https://github.com/fromgate/WeatherMan/blob/master/src/fromgate/weatherman/NMSUtil.java


У тебя какая версия сервера? Я забыл на гитхабе обновить код до последней. То что былоЮ работало в 1.7.9, в 1.7.10, по моему уже было что-то другое. А с 1.8, я очень долго мучался и пришлось вернуться к этому отправке пакета PacketPlayOutMapChunk. Сейчас обновился до текущего варианта.

https://github.com/fromgate/WeatherMan/blob/master/src/fromgate/weatherman/NMSUtil.java#L240-L253

Кстати, почему-то когда происходит смена биома в больших количества, изменения часто не сохраняются. Для этого приходится принудительно сохранять биомы.

Вообще, вот эта возня с видимостью биомов, иногда превращается в какой-то безумный квест по поводу поиска работающего варианта. Как тот, который процитировал @Reality_SC
 
У тебя какая версия сервера? Я забыл на гитхабе обновить код до последней. То что былоЮ работало в 1.7.9, в 1.7.10, по моему уже было что-то другое. А с 1.8, я очень долго мучался и пришлось вернуться к этому отправке пакета PacketPlayOutMapChunk. Сейчас обновился до текущего варианта.

https://github.com/fromgate/WeatherMan/blob/master/src/fromgate/weatherman/NMSUtil.java#L240-L253

Кстати, почему-то когда происходит смена биома в больших количества, изменения часто не сохраняются. Для этого приходится принудительно сохранять биомы.

Вообще, вот эта возня с видимостью биомов, иногда превращается в какой-то безумный квест по поводу поиска работающего варианта. Как тот, который процитировал @Reality_SC
Я брал код не с github, а с декомпилятора, так что у меня все норм :)
Там вот этот кусок это делает?
Java:
public static void refreshChunk(Chunk ch)
{
   ch.unload(true);
   ch.load(false);
   ch.getWorld().refreshChunk(ch.getX(), ch.getZ());
}
Да, этот метод, только я не ту версию скинул, вот правильная:
https://github.com/fromgate/WeatherMan/blob/master/src/fromgate/weatherman/NMSUtil.java#L255-L274
 
Последнее редактирование:

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

Назад
Верх