Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Get radius block

Тема в разделе "Разработка плагинов для новичков", создана пользователем jusik, 2 мар 2017.

  1. Автор темы
    jusik

    jusik Активный участник Пользователь

    Баллы:
    66
    Skype:
    louky94096
    Имя в Minecraft:
    Jusik
    Как получить блок в радиусе
     
  2. Хостинг MineCraft
    <
  3. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Код:
        private Block getBlockOnLineSight(Player p) {
            @SuppressWarnings("deprecation")
            Block block = p.getTargetBlock(null, 2); // 2 - расстояние перед игроком. 
            if (block.getType() != AIR) {
                return block;
            } else {
                return null;
            }
        }
    
     
  4. Автор темы
    jusik

    jusik Активный участник Пользователь

    Баллы:
    66
    Skype:
    louky94096
    Имя в Minecraft:
    Jusik
    Это не то что я имел ввиду у нас есть кординаты и радиусом я должен проверить есть ли в этих кординатах блок допустим земли если есть то я получаю эго кординаты
     
  5. IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    IcedwinterZ
    Можно циклом по всем кордам, но мне кажется это костыль, и есть решение легче
     
  6. Автор темы
    jusik

    jusik Активный участник Пользователь

    Баллы:
    66
    Skype:
    louky94096
    Имя в Minecraft:
    Jusik
  7. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    Код:
    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()); //складываем блок в сет блоков
            }
        }
    }
    //используем наши блоки как хотим
     
  8. Автор темы
    jusik

    jusik Активный участник Пользователь

    Баллы:
    66
    Skype:
    louky94096
    Имя в Minecraft:
    Jusik
    Спасибо
     

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