Get radius block

  • Автор темы Автор темы jusik
  • Дата начала Дата начала

jusik

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Jusik
Как получить блок в радиусе
 
Java:
    private Block getBlockOnLineSight(Player p) {
        @SuppressWarnings("deprecation")
        Block block = p.getTargetBlock(null, 2); // 2 - расстояние перед игроком. 
        if (block.getType() != AIR) {
            return block;
        } else {
            return null;
        }
    }
 
Это не то что я имел ввиду у нас есть кординаты и радиусом я должен проверить есть ли в этих кординатах блок допустим земли если есть то я получаю эго кординаты
 
Это не то что я имел ввиду у нас есть кординаты и радиусом я должен проверить есть ли в этих кординатах блок допустим земли если есть то я получаю эго кординаты
Можно циклом по всем кордам, но мне кажется это костыль, и есть решение легче
 
Java:
HashSet<Block> blocks = new HashSet<>();
int rad = 2;//радиус
Location centre = player.getLocation(); //точка центра
Location min = centre.add(rad*-1,rad*-1,rad*-1); //задаем диагональ описаного куба
Location max = centre.add(rad,rad,rad);

for (int x=min.getBlockX(); x<=max.getBlockX(); x++){
    for (int y=min.getBlockY(); y<=max.getBlockY(); y++){ //перебираем все блоки описаного куба
        for (int z=min.getBlockZ(); z<=max.getBlockZ(); z++){
            Location now = new Location(centre.getWorld(), x, y, z);
            if (now.distance(centre)>rad) continue; //отсекаем те части куба, которые не попали в сферу
            blocks.add(now.getBlock()); //складываем блок в сет блоков
        }
    }
}
//используем наши блоки как хотим
 
Спасибо
 
Назад
Верх