Помогите Узнать, бывали ли игроки в определенном чанке

GreenBudgie

Участник
Пользователь
Баллы
31
Есть команда, которая может телепортировать игрока на введенные им координаты. Но я хочу, чтобы игрок мог телепортироваться только на те чанки, которые уже заранее были прогружены, т.е. на исследованную территорию. Как это можно сделать?
 
Получаешь чанк по координатам, дальше чекаешь, загружен он или нет.

Примерный код (по результатам гугла):
PHP:
World world = Bukkit.getWorld("world");
Location location = new Location(world, 1.0, 1.0, 1.0);
Chunk chunk = world.getChunkAt(location);

if(!chunk.isLoaded()) {
// Если чанк не загружен.
}
 
Если бы все было так просто, я бы сюда не обращался. chunk.isLoaded() всегда выдает true. Уже перебрал все методы на проверку прогруженности чанка из World, и все равно ничего.
 
Наконец нашел то, что нужно. В нмс классе Chunk есть метод isDone(), который, как я понял, возвращает, был ли этот чанк сгенерирован ранее.
Код:
public static boolean isChunkGenerated(Location loc) {
        return ((CraftWorld) loc.getWorld()).getHandle().getChunkAtWorldCoords(new BlockPosition(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ())).isDone();
    }
 
Назад
Верх