Помогите Сохранение схематиков с кастомным Origin

LuckyZeeRo

Активный участник
Пользователь
Баллы
96
Имя в Minecraft
i0xHeX
Всем привет 🙂
Столкнулся с такой проблемкой, которую не могу решить уже достаточное количество времени. Суть задачи - сохранить определенный регион в схематик с кастомным origin (точкой, относительно которой будет сохранен регион), по умолчанию это нижний угол. Используя при этом FAWE.

Сама проблема такова, что схематик сохраняется, но при вставке блоков нет, вставляется чисто воздух там, где должны быть блоки. Вот такой код у меня примерно:
Код:
public static Schematic saveSchematic(World world, Cuboid cuboid, Point origin, File destination) {
    Vector min = cuboid.getFrom().getAsBlockVector();
    Vector max = cuboid.getTo().getAsBlockVector();
    com.sk89q.worldedit.world.World worldEditWorld = FaweAPI.getWorld(world.getName());
    
    CuboidRegion region = new CuboidRegion(worldEditWorld, min, max);
    Clipboard clipboard = new BlockArrayClipboard(region);
    clipboard.setOrigin(origin.getAsBlockVector());
    
    Schematic schem = new Schematic(clipboard);
    try {
        schem.save(destination, ClipboardFormat.SCHEMATIC);
        return schem;
    } catch (IOException ex) {
        throw new AssertionError("Cannot save schematic '" + destination.getName() + "'.", ex);
    }
}
То есть все работает хорошо, кроме того, что блоки не сохраняет, весь регион идет как воздух. Для сравнения и информации приведу пример кода, который работает как надо, но origin поставлен по умолчанию:
Код:
public static Schematic saveSchematic(World world, Cuboid cuboid, File destination) {
    Vector min = cuboid.getFrom().getAsBlockVector();
    Vector max = cuboid.getTo().getAsBlockVector();
    com.sk89q.worldedit.world.World worldEditWorld = FaweAPI.getWorld(world.getName());
    
    CuboidRegion region = new CuboidRegion(worldEditWorld, min, max);
    Schematic schem = new Schematic(region);
    try {
        schem.save(destination, ClipboardFormat.SCHEMATIC);
        return schem;
    } catch (IOException ex) {
        throw new AssertionError("Cannot save schematic '" + destination.getName() + "'.", ex);
    }
}
Версия 1.12.2, FAWE 20.9
Я так понимаю, что в Clipboard скорее заносится только инфа про регион, а блоки нужно заполнять вручную. Если это так, то как это сделать адекватным способом?
 
* bump *

Попробовал еще проделать махинации с вещами, взятых из команды //copy. Не получилось. Тот же результат - пустой клипборд.
Код:
public static Schematic saveSchematic(World world, Cuboid cuboid, Point origin, File destination) {
    Vector min = cuboid.getFrom().getAsBlockVector();
    Vector max = cuboid.getTo().getAsBlockVector();
    com.sk89q.worldedit.world.World worldEditWorld = FaweAPI.getWorld(world.getName());
   
    CuboidRegion region = new CuboidRegion(worldEditWorld, min, max);
    Clipboard clipboard = new BlockArrayClipboard(region);
    clipboard.setOrigin(origin.getAsBlockVector());
   
    EditSession session = new EditSessionBuilder(world.getName()).fastmode(true).build();
    ForwardExtentCopy copy = new ForwardExtentCopy(session, region, min, clipboard, max);
    copy.setCopyEntities(false);
    copy.setCopyBiomes(false);
   
    try {
        Operations.completeLegacy(copy);
        Schematic schem = new Schematic(clipboard);
        schem.save(destination, ClipboardFormat.SCHEMATIC);
        return schem;
    } catch (Exception ex) {
        throw new AssertionError("Cannot save schematic '" + destination.getName() + "'.", ex);
    }
}
 
Назад
Верх