Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Получить координаты всех блоков всех сторон куба

UserGames

Активный участник
Баллы
61
Задача: Есть куб размером 5x5x5, внутри он пустой, у него всегда будет черная обводка, но цвет стороны может быть разный (скрин приложил ниже). По координатам центрального блока в кубе мне надо получить координаты каждого блока каждой из сторон, не учитывая обводку.

Я написал код, который с этим справляется, но я в ручную прописывал все координаты. Для куба 5x5x5 это не проблема, а вот если куб будет 7x7x7 или выше, вручную придётся прописать в несколько, а то и десятков раз больше, еще и есть вероятность ошибится.

Прошу знающих людей помочь в написании улучшенного кода, чтобы он независимо от размера мог выводить то что я описал выше. (размер я буду знать, поэтому его можно использовать)

Мой код и вывод я приложил ниже.

Код:
   private void calculateSides (Location centralBlock) {
        int centralBlockX = centralBlock.getBlockX();
        int centralBlockY = centralBlock.getBlockY();
        int centralBlockZ = centralBlock.getBlockZ();

        // Создаем Map для хранения координат каждой стороны
        Map<String, List<Location>> coordinates = new HashMap<>();

        // Перебираем каждую сторону куба
        for (int side = 0; side < 6; side++) {
            // Изменяем координаты в зависимости от стороны
            int x = centralBlockX;
            int y = centralBlockY;
            int z = centralBlockZ;
            boolean booleanX = true;
            boolean booleanY = true;
            boolean booleanZ = true;
            String sideName = "";

            switch (side) {
                case 0: // Сторона "верх"
                    y += 2;
                    booleanY = false;
                    sideName = "Top";
                    break;
                case 1: // Сторона "низ"
                    y -= 2;
                    booleanY = false;
                    sideName = "Bottom";
                    break;
                case 2: // Сторона "восток"
                    x += 2;
                    booleanX = false;
                    sideName = "East";
                    break;
                case 3: // Сторона "запад"
                    x -= 2;
                    booleanX = false;
                    sideName = "West";
                    break;
                case 4: // Сторона "север"
                    z += 2;
                    booleanZ = false;
                    sideName = "North";
                    break;
                case 5: // Сторона "юг"
                    z -= 2;
                    booleanZ = false;
                    sideName = "South";
                    break;
            }
            List<Location> locations = new ArrayList<>();
            if(!booleanY) {
                locations.add(new Location(centralBlock.getWorld(), x, y, z));
                locations.add(new Location(centralBlock.getWorld(), x, y, z - 1));
                locations.add(new Location(centralBlock.getWorld(), x, y, z + 1));
                locations.add(new Location(centralBlock.getWorld(), x - 1, y, z));
                locations.add(new Location(centralBlock.getWorld(), x - 1, y, z + 1));
                locations.add(new Location(centralBlock.getWorld(), x - 1, y, z - 1));
                locations.add(new Location(centralBlock.getWorld(), x + 1, y, z));
                locations.add(new Location(centralBlock.getWorld(), x + 1, y, z - 1));
                locations.add(new Location(centralBlock.getWorld(), x + 1, y, z + 1));
            } else if (!booleanX) {
                locations.add(new Location(centralBlock.getWorld(), x, y, z));
                locations.add(new Location(centralBlock.getWorld(), x, y, z - 1));
                locations.add(new Location(centralBlock.getWorld(), x, y, z + 1));
                locations.add(new Location(centralBlock.getWorld(), x, y - 1, z));
                locations.add(new Location(centralBlock.getWorld(), x, y - 1, z + 1));
                locations.add(new Location(centralBlock.getWorld(), x, y - 1, z - 1));
                locations.add(new Location(centralBlock.getWorld(), x, y + 1, z));
                locations.add(new Location(centralBlock.getWorld(), x, y + 1, z - 1));
                locations.add(new Location(centralBlock.getWorld(), x, y + 1, z + 1));
            } else if (!booleanZ) {
                locations.add(new Location(centralBlock.getWorld(), x, y, z));
                locations.add(new Location(centralBlock.getWorld(), x - 1, y, z));
                locations.add(new Location(centralBlock.getWorld(), x + 1, y, z));
                locations.add(new Location(centralBlock.getWorld(), x, y - 1, z));
                locations.add(new Location(centralBlock.getWorld(), x + 1, y - 1, z));
                locations.add(new Location(centralBlock.getWorld(), x - 1, y - 1, z));
                locations.add(new Location(centralBlock.getWorld(), x, y + 1, z));
                locations.add(new Location(centralBlock.getWorld(), x - 1, y + 1, z));
                locations.add(new Location(centralBlock.getWorld(), x + 1, y + 1, z));
            }
            coordinates.put(sideName, locations);
        }
        for (String key : coordinates.keySet()) {
            Bukkit.getLogger().info(key);
            for(Location location : coordinates.get(key)) {
                Block block = location.getBlock();
                Bukkit.getLogger().info("X - " + block.getX() + " Y - " + block.getY() + " Z - " + block.getZ() + " Block: " + block.toString());
            }
        }
    }

Код:
[00:05:15 INFO]: Top
[00:05:15 INFO]: X - -10 Y - 99 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=99,z=-7,type=CONCRETE,data=11}
[00:05:15 INFO]: X - -10 Y - 99 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=99,z=-8,type=CONCRETE,data=11}
[00:05:15 INFO]: X - -10 Y - 99 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=99,z=-6,type=CONCRETE,data=11}
[00:05:15 INFO]: X - -11 Y - 99 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=99,z=-7,type=CONCRETE,data=11}
[00:05:15 INFO]: X - -11 Y - 99 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=99,z=-6,type=CONCRETE,data=11}
[00:05:15 INFO]: X - -11 Y - 99 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=99,z=-8,type=CONCRETE,data=11}
[00:05:15 INFO]: X - -9 Y - 99 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=99,z=-7,type=CONCRETE,data=11}
[00:05:15 INFO]: X - -9 Y - 99 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=99,z=-8,type=CONCRETE,data=11}
[00:05:15 INFO]: X - -9 Y - 99 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=99,z=-6,type=CONCRETE,data=11}[00:05:15 INFO]: West
[00:05:15 INFO]: X - -12 Y - 97 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=97,z=-7,type=CONCRETE,data=10}
[00:05:15 INFO]: X - -12 Y - 97 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=97,z=-8,type=CONCRETE,data=10}
[00:05:15 INFO]: X - -12 Y - 97 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=97,z=-6,type=CONCRETE,data=10}
[00:05:15 INFO]: X - -12 Y - 96 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=96,z=-7,type=CONCRETE,data=10}
[00:05:15 INFO]: X - -12 Y - 96 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=96,z=-6,type=CONCRETE,data=10}
[00:05:15 INFO]: X - -12 Y - 96 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=96,z=-8,type=CONCRETE,data=10}
[00:05:15 INFO]: X - -12 Y - 98 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=98,z=-7,type=CONCRETE,data=10}
[00:05:15 INFO]: X - -12 Y - 98 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=98,z=-8,type=CONCRETE,data=10}
[00:05:15 INFO]: X - -12 Y - 98 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-12,y=98,z=-6,type=CONCRETE,data=10}
[00:05:15 INFO]: South
[00:05:15 INFO]: X - -10 Y - 97 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=97,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: X - -11 Y - 97 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=97,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: X - -9 Y - 97 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=97,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: X - -10 Y - 96 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=96,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: X - -9 Y - 96 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=96,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: X - -11 Y - 96 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=96,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: X - -10 Y - 98 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=98,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: X - -11 Y - 98 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=98,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: X - -9 Y - 98 Z - -9 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=98,z=-9,type=CONCRETE,data=1}
[00:05:15 INFO]: Bottom
[00:05:15 INFO]: X - -10 Y - 95 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=95,z=-7,type=CONCRETE,data=14}
[00:05:15 INFO]: X - -10 Y - 95 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=95,z=-8,type=CONCRETE,data=14}
[00:05:15 INFO]: X - -10 Y - 95 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=95,z=-6,type=CONCRETE,data=14}
[00:05:15 INFO]: X - -11 Y - 95 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=95,z=-7,type=CONCRETE,data=14}
[00:05:15 INFO]: X - -11 Y - 95 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=95,z=-6,type=CONCRETE,data=14}
[00:05:15 INFO]: X - -11 Y - 95 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=95,z=-8,type=CONCRETE,data=14}
[00:05:15 INFO]: X - -9 Y - 95 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=95,z=-7,type=CONCRETE,data=14}
[00:05:15 INFO]: X - -9 Y - 95 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=95,z=-8,type=CONCRETE,data=14}
[00:05:15 INFO]: X - -9 Y - 95 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=95,z=-6,type=CONCRETE,data=14}
[00:05:15 INFO]: North
[00:05:15 INFO]: X - -10 Y - 97 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=97,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: X - -11 Y - 97 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=97,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: X - -9 Y - 97 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=97,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: X - -10 Y - 96 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=96,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: X - -9 Y - 96 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=96,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: X - -11 Y - 96 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=96,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: X - -10 Y - 98 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-10,y=98,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: X - -11 Y - 98 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-11,y=98,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: X - -9 Y - 98 Z - -5 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-9,y=98,z=-5,type=CONCRETE,data=4}
[00:05:15 INFO]: East
[00:05:15 INFO]: X - -8 Y - 97 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=97,z=-7,type=CONCRETE,data=2}
[00:05:15 INFO]: X - -8 Y - 97 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=97,z=-8,type=CONCRETE,data=2}
[00:05:15 INFO]: X - -8 Y - 97 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=97,z=-6,type=CONCRETE,data=2}
[00:05:15 INFO]: X - -8 Y - 96 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=96,z=-7,type=CONCRETE,data=2}
[00:05:15 INFO]: X - -8 Y - 96 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=96,z=-6,type=CONCRETE,data=2}
[00:05:15 INFO]: X - -8 Y - 96 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=96,z=-8,type=CONCRETE,data=2}
[00:05:15 INFO]: X - -8 Y - 98 Z - -7 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=98,z=-7,type=CONCRETE,data=2}
[00:05:15 INFO]: X - -8 Y - 98 Z - -8 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=98,z=-8,type=CONCRETE,data=2}
[00:05:15 INFO]: X - -8 Y - 98 Z - -6 Block: CraftBlock{chunk=CraftChunk{x=-1z=-1},x=-8,y=98,z=-6,type=CONCRETE,data=2}
 

Вложения:

  • upload_2023-7-19_23-47-46.png
    upload_2023-7-19_23-47-46.png
    Размер файла
    106,1 КБ
    Просмотров
    5

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

Назад
Верх