1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Получить блоки на территории

Тема в разделе "Разработка плагинов для новичков", создана пользователем Ant1m0, 29 июн 2020.

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

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

    Баллы:
    66
    Короче, такая история - нужен метод, возвращающий лист с блоками, находящимися на локации
    Допустим
    x1: 0 y1: 0 z1: 0 , x2: 1 y2: 0 z2: 1 = вернет 4 блока - 0 0 0 , 0 0 1 , 1 0 0, 1 0 1
     
    Последнее редактирование: 29 июн 2020
  2. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Циклом в цикле, от координат первого блока к координатам второго или наоборот
     
  3. Gru2303

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

    Баллы:
    76
    Имя в Minecraft:
    Gru2303
    Геометрию нужно учить
     
  4. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Тройным циклам по высоте ширине и глубине. Получаешь их от разницы мин и макс (pos1 pos2).
     
  5. Gru2303

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

    Баллы:
    76
    Имя в Minecraft:
    Gru2303
    Тебе нужен куб или квадрат?
     
  6. Автор темы
    Ant1m0

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

    Баллы:
    66
    квадрат
     
  7. Автор темы
    Ant1m0

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

    Баллы:
    66
    куб тоже желательно
     
  8. Gru2303

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

    Баллы:
    76
    Имя в Minecraft:
    Gru2303
  9. keepitslice

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

    Баллы:
    66
    :mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad::mad:

    Используй lowercase когда называешь пакеты, спасибо.
    upload_2020-6-29_18-11-50.png upload_2020-6-29_18-12-40.png upload_2020-6-29_18-14-0.png
     
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Писал же выше как. Перечитай
     
  11. Gru2303

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

    Баллы:
    76
    Имя в Minecraft:
    Gru2303
    Я знаю что правильнее делать lowercase, но не могу избавиться от этой привычки.


    Знаю говно)))


    Сам доделает...
     
    Последнее редактирование: 29 июн 2020
  12. keepitslice

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

    Баллы:
    66
    Реализаций подобного в интернете полно, просто нужно приложить немного усилий для поиска.
    Например вот. А лучше всего вместо копипаста начать подтягивать геометрию и учиться проецировать знания в код.
     
  13. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Это элементарная математика, тебе для куба нужно цикл от pos1(x) до pos2(x), в этом цикле от pos1(y) до pos2(y), а в нем от pos1(z) до pos2(z), в итоге ты пройдешься по трехмерному массиву из блоков, каждый из которых ты добавишь в лист.
     
  14. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Зачем тебе центр? Ты просто делаешь тоже самое, только по высоте ширине и глубине.
     
  15. Автор темы
    Ant1m0

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

    Баллы:
    66
    Я на математика похож?
     
  16. Gru2303

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

    Баллы:
    76
    Имя в Minecraft:
    Gru2303
    Геометрия 5 класс...
     
  17. Автор темы
    Ant1m0

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

    Баллы:
    66
    Я в садике еще
     
  18. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Код:
    public static Collection<Block> getBlocksInCuboid(World world, int x1, int y1, int z1, int x2, int y2, int z2) {
        List<Block> blocks = new ArrayList<>();
        for(int x = Math.min(x1, x2); x <= Math.max(x1, x2); x++) {
            for(int y = Math.min(y1, y2); y <= Math.max(y1, y2); y++) {
                for(int z = Math.min(z1, z2); z <= Math.max(z1, z2); z++) {
                    blocks.add(world.getBlockAt(x, y, z));
                }
            }
        }
        return blocks;
    }
    А теперь кыш, и тему на замок.
     
  19. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Да он уже забанен за идиотизм :D. И вообще нормализацию векторов лучше заранее делать в отдельном методе.
     

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