Вопрос WorldEdit & Схемы

unclickable

Пользователь
Сообщения
9
Название темы должно быть информативным, максимально четко отражая смысл проблемы
Привет Spigot

Задача
: загрузить схему через WorldEdit и проверить, сломал ли игрок тот блок который был загружен через схему.

Проблема: В общем то загрузить схему у меня удалось, в этом ничего трудного нет, по документации описано, а вот с получением списка измененных блоков у меня проблема, знает может кто как их получить?

От себя: Загружаю через EditSession и он реализует интерфейс Extent, но при попытке получить его - получаю SurvivalExtent (в общем то, не то что нужно)
И если возможно получить объект Region (где была установлена схема) после операции, то будет и этого достаточно.

Конечно если есть способы более простой реализации, буду рад услышать. Жду идей. Спасибо.
 
Последнее редактирование:
Решение
"все блоки", а это какие?
в радиусе спавна схемы
Объединено

Java:
int x = (int) loc.getX();
                int y = (int) loc.getY();
                int z = (int) loc.getZ();

                if(/*лишний иф (лень убирать)*/true) {
                    for(int i = x-2; i<=x+2; i++) {
                        for(int j = y-1; j<=y+1; j++) {
                            for (int k = z-2; k <= z+2; k++) {
                                Block targetBlock = loc.getWorld().getBlockAt(i,j,k);
                                if(targetBlock.getType() == Material.OAK_PLANKS || targetBlock.getType() == Material.DIRT) {...
Привет Spigot

Задача
: загрузить схему через WorldEdit и проверить, сломал ли игрок тот блок который был загружен через схему.

Проблема: В общем то загрузить схему у меня удалось, в этом ничего трудного нет, по документации описано, а вот с получением списка измененных блоков у меня проблема, знает может кто как их получить?

От себя: Загружаю через EditSession и он реализует интерфейс Extent, но при попытке получить его - получаю SurvivalExtent (в общем то, не то что нужно)
И если возможно получить объект Region (где была установлена схема) после операции, то будет и этого достаточно.

Конечно если есть способы более простой реализации, буду рад услышать. Жду идей. Спасибо.
перебирай все блоки, записывай нужный по айди или координатам и всё.
 
"все блоки", а это какие?
в радиусе спавна схемы
Объединено

Java:
int x = (int) loc.getX();
                int y = (int) loc.getY();
                int z = (int) loc.getZ();

                if(/*лишний иф (лень убирать)*/true) {
                    for(int i = x-2; i<=x+2; i++) {
                        for(int j = y-1; j<=y+1; j++) {
                            for (int k = z-2; k <= z+2; k++) {
                                Block targetBlock = loc.getWorld().getBlockAt(i,j,k);
                                if(targetBlock.getType() == Material.OAK_PLANKS || targetBlock.getType() == Material.DIRT) {
                                    
                                    config.set("schem.location."+targetBlock.getType().toString(), loc.getWorld().getName()+","+x+","+y+","+z)
                                    
                                }
                            }
                        }
                    }
                }
 
Последнее редактирование:
Назад
Сверху Снизу