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

Помогите Проблема с API WorldEditа 7.2.0

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

Метки:
  1. Автор темы
    capybebra

    capybebra Новичок

    Баллы:
    16
    Имя в Minecraft:
    mmmiiikk
    Пытаюсь сделать метод, в котором схематика из папки плагина будет спавниться на рандомных координатах.

    Проблема:
    в 11 строчке выскакивает ошибка: 'getEditSession(com.sk89q.worldedit.world.World, int)' in 'com.sk89q.worldedit.EditSessionFactory' cannot be applied to '(org.bukkit.World, int)'

    код:

    private void buildSchematic(File schemFile) {
    File schemFile1 = new File(getDataFolder(), "CapyZamok/ebatzamok.schem");
    try {
    ClipboardFormat format = ClipboardFormats.findByFile(schemFile1);
    try (ClipboardReader reader = format.getReader(new FileInputStream(schemFile1))) {
    Clipboard clipboard = reader.read();
    World world = getServer().getWorld("world");
    Random random = new Random();
    int x = random.nextInt(10000) - 5000;
    int z = random.nextInt(10000) - 5000;
    int y = world.getHighestBlockYAt(x, z);
    try (EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1)) {
    Operation operation = new ClipboardHolder(clipboard)
    .createPaste(editSession)
    .to(BlockVector3.at(x, y, z))
    .ignoreAirBlocks(false)
    .build();
    Operations.complete(operation);
    } catch (WorldEditException e) {
    e.printStackTrace();
    }
    }
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    У тебя прям в ошибке написано, что в методе getEditSession() требуется мир из WE, а ты передаёшь мир из баккита. Для конвертации различных объектов из баккита в WE и обратно используется класс BukkitAdapter:
    https://docs.enginehub.org/javadoc/...it/BukkitAdapter.html#adapt(org.bukkit.World)
     
  3. Автор темы
    capybebra

    capybebra Новичок

    Баллы:
    16
    Имя в Minecraft:
    mmmiiikk
    А как это должно выглядеть? Не очень понимаю что мне с этим делать :/
     
  4. Level132331

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

    Баллы:
    66
    Что непонятного? BukkitAdapter.adapt(то что тебе нужно)
     
  5. Автор темы
    capybebra

    capybebra Новичок

    Баллы:
    16
    Имя в Minecraft:
    mmmiiikk
    как в коде это должно быть не совсем понимаю(
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Изучай основы Java, иначе так и будешь элементарнейшие вопросы задавать.
    getEditSession(BukkitAdapter.adapt(world), -1)
     
  7. Автор темы
    capybebra

    capybebra Новичок

    Баллы:
    16
    Имя в Minecraft:
    mmmiiikk
    спасибо <3, я просто небольшой код для своих нужд написать хотел, не разбираюсь в джаве
     

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