Различают загруженный
и активный
чанк. Загруженным называется чанк, который в данный момент находится в памяти, не более. Активным называется чанк, в котором выполняются обновления блоков, Entity и TileEntity, т.е. течет время с точки зрения игрока. Чанки могут быть загружены по разным причинам, но активируются они только игроком или чанклоадером.
Радиус активации чанков вокруг игрока явно задается опцией chunkActivateRadius
в worlds.yml, по умолчанию это 7 чанков. Также рядом присутствует опция viewDistance
- это радиус, по которому чанки высылаются игроку. В отличии от ваниллы, эти 2 параметра разделены.
В UltraMine чанки отправляются клиенту в отсортированном виде. Алгоритм сортировки взят из плагина NoLagg, выглядит примерно так:
Чанки отправляются небольшими группами, и следующая группа не высылается (и даже не загружается сервером), пока не будет отправлена предыдущая. Таким образом не забивается канал пользователя (особо актуально для медленных соединений), и лишний раз не нагружается сервер.
В UltraMine чанки не выгружаются сразу после выхода за пределы радиуса прорисовки игрока, а остаются в памяти еще некоторое время. Это связано с тем, что загрузка чанка - достаточно тяжелая операция, и гораздо разумнее немного придержать чанк в памяти на случай, если игрок вернется обратно. Это особо полезно при быстрой телепортации игрока по миру, а также в случаях синхронной загрузки чанков некоторыми модами. Размер такого кэша задается опцией chunkCacheSize
в worlds.yml. Все кэшированные чанки можно очистить командой /chunkgc
.
В UltraMine чанки хранятся в отдельном разделе памяти, т.е. не входят в -Xmx. Посмотреть сколько памяти занимают конкретно чанки можно командой /memstat
, строка Off-Heap chunk
. Максимальный объем памяти для чанков по умолчанию ограничен 6 гигабайтами и может быть изменен опцией -Dorg.ultramine.server.offheapchunk.memlimit=ЧИСЛО
, где ЧИСЛО
- количество гигабайт. Не нужно ставить рядом g
, как в -Xmx. (зачем чанки были перенесены в Off-Heap поймут только программисты.)