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

Помогите Загрузка мира на сервер

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

Метки:
Статус темы:
Закрыта.
  1. Автор темы
    KvaytG

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

    Баллы:
    66
    Имя в Minecraft:
    KvaytG
    Я хочу сделать телепорт в другой мир через плагин, но если мир не загружен, то загрузить его вручную.
    Я сейчас делаю это через команду при помощи WorldCreator

    Bukkit.createWorld(new WorldCreator(args[1]));
    p.teleport(Bukkit.getWorld(args[1]).getSpawnLocation());

    Но проблема в том, что если мира нет, то он его создаёт. Нужно сделать, чтобы мир именно загружался, а не создавался при его отсутствии. Как это сделать?
     
  2. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Проверь наличие папки мира.
     
  3. Автор темы
    KvaytG

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

    Баллы:
    66
    Имя в Minecraft:
    KvaytG
    Зачем мне её проверять? Она находится в папке с сервером. Вопрос в том как загрузить мир из этой папки, так чтобы в него можно было тепнуться по команде
     
  4. alexandrage

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

    Баллы:
    173
    Bukkit.createWorld создаст или загрузит мир. В зависимости от его наличия или отсутствия.
     
  5. Автор темы
    KvaytG

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

    Баллы:
    66
    Имя в Minecraft:
    KvaytG
    Я это понимаю, но мне не нужно, чтобы он создавал мир если его нет. Нужно чтобы он загрузил уже имеющийся, а если его нет то так и написал "Введенный вами мир не найден!" Или так нельзя сделать?
     
  6. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Я же написал - проверяй наличие папки загружаемого мира.
     
  7. alexandrage

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

    Баллы:
    173
    Создай некий конфиг со списком своих миров. или чекай наличие папки, еще чего то.
     
  8. Автор темы
    KvaytG

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

    Баллы:
    66
    Имя в Minecraft:
    KvaytG
    Разве нет другого способа?
    Просто я находил вот это.

    Bukkit.getServer().getWorlds().add(WORLD);
    if(Bukkit.getServer().getWorlds().add(worldname) == true)
    {
    log.info("Loaded world '" + worldname + "' sucessfully!");
    }

    Вроде как отвечает за загрузку мира на сервер. Но add() не работает, когда вписываешь в него мир. Если нет такого способа, то не мог бы ты подсказать как проверить наличие папки с миром на сервере? И ведь не всякая папка на сервере папка с миром
     
  9. alexandrage

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

    Баллы:
    173
    level.dat чекнуть, но лучше вести свой список в плагине, точно будешь знать твои это миры или нет. Так делают всякие мультиворлды.
     
  10. Автор темы
    KvaytG

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

    Баллы:
    66
    Имя в Minecraft:
    KvaytG
    Короче в итоге получилось вот это
    В onEnable
    List<String> list = getConfig().getStringList("worlds");
    for (String s : list){
    Bukkit.createWorld(new WorldCreator(s));
    log.info("World " + s + " loaded!");
    }
    Это при вводе команды
    List<String> list = plugin.getConfig().getStringList("worlds");
    for (String s : list){
    if (args[1]!=s){
    p.teleport(Bukkit.getWorld(args[1]).getSpawnLocation());
    p.sendMessage(ChatColor.GREEN + "Вы были перемещены в мир " + args[1]);
    return true;
    } else {
    p.sendMessage(ChatColor.RED + "Мир " + args[1] + " не найден!");
    return true;
    }
    }
    Оно работает почти как надо, но при вводе неправильного мира вместо "Мир ... не найден!" выдает ошибку
    An internal error occurred while attempting to perform this command
    Скорее всего я неправильно работаю со списком
     
  11. alexandrage

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

    Баллы:
    173
Статус темы:
Закрыта.

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