Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите А можно ли выгрузить папку, а не файл?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Mr_RoboMan, 11 май 2016.

  1. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    У меня очень много файлов в проекте в папках races, artifacts, groups, и т.д., мне надо все их выгрузить, а можно ли выгрузить ПАПКУ а не файл? Ибо сейчас приходится делать вот так:
    [​IMG]
    А это не есть красиво...
    Пробовал делать что то вроде
    saveResource("artifacts", false) saveResource("races", false) - не пашет..
     
  2. Хостинг MineCraft
    <
  3. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Извините, вы слышали про циклы?[DOUBLEPOST=1462983735,1462983611][/DOUBLEPOST]И... Не относится к теме конечно, но по моему соединять пермишны, расы, предметы и типы урона в 1 плагин - плохая идея.
     
  4. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Слышал, если есть способ получить все файлы в папке, то я с удовольствием сделаю это через цикл..[DOUBLEPOST=1462983828,1462983753][/DOUBLEPOST]
    А если плагин пишется чисто для себя (один РПГ плагин), и никаких других плагинов на например на пермишены (PEX etc.) не будет? Мне не кажется целесообразным разделять на пару плагинов..
     
  5. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Модульность - это всегда плюс

    Если пишете для себя - зачем saveResource?

    Files.walk(Paths.get(getDataFolder().getPath(), "папка"))
     
  6. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Ну, да конечно, но мне будет неудобно, писать один плагин на пермы (при том что это дже не плагин, а просто два метода которые читают конфиг) один на расы, один на предметы и т.д..
    Потому-что я постоянно добавляю кучу новых файлов (прямо в проект, как как папку плагина (та которая создается на сервере) часто удаляю и каждый раз добавлять кучу сейв ресурсов - надоедает..
    Спасибо, прямо сейчас протестирую)[DOUBLEPOST=1462984314,1462984137][/DOUBLEPOST]
    Что-то я не совсем понял... Это возвращает Stream<Path>.. Что мне с этим делать? O,o
     
  7. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Ну, дело хозяйское. Тут уже скорее надо посмотреть насколько вы используете возможности своей IDE

    Возможно стоит задуматься о базе данных? Файлы - медленная штука

    Не за что c:
     
  8. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Вот я тоже думаю... С БД не работал, но мне кажется если сделаю хранение в БД, не смогу тестировать на компе все это? Или на комп можно какую-то БД установить? (Я просто вообще ноль во всем что связано с БД XD)
     
  9. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Добро пожаловать в Java 8
    Пример для 7 не найду а писать сейчас лень

    Используется это так:
    Код:
                Files.walk(Paths.get(getDataFolder().getPath(), "shops")).forEach(path -> {
                    if (Files.isRegularFile(path)) {
                        File file = path.toFile();
                                                              }}
    
     
  10. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    (У меня как раз Java 8, но в душе она все еще 7)
    Ничосиииии, круто, надо проверить, спасибо)
     
  11. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Если есть скайп - отпишите мне (под авараткой у меня)
    Так же можно в телеграм @M3lon

    Расскажу про базы данных и по мелочам[DOUBLEPOST=1462984816,1462984603][/DOUBLEPOST]Кстати говоря можно красивее записать ;D
    Files.walk(Paths.get(getDataFolder().getPath(), "shops"))
    .filter(Files::isRegularFile).map(Path::toFile).forEach(file -> {
    file.isAwesome(); //Нунапример
    });
     
  12. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Эээ... Вот так вот?..
    Код:
    Files.walk(Paths.get(getDataFolder().getPath(), "groups")).forEach(path -> {
                    if (Files.isRegularFile(path)) {
                        File file = path.toFile();
                        saveResource(file.getName(), false);
                    }
                });
                Files.walk(Paths.get(getDataFolder().getPath(), "races")).forEach(path -> {
                    if (Files.isRegularFile(path)) {
                        File file = path.toFile();
                        saveResource(file.getName(), false);
                    }
                });
                Files.walk(Paths.get(getDataFolder().getPath(), "damage_types")).forEach(path -> {
                    if (Files.isRegularFile(path)) {
                        File file = path.toFile();
                        saveResource(file.getName(), false);
                    }
                });
                Files.walk(Paths.get(getDataFolder().getPath(), "groups")).forEach(path -> {
                    if (Files.isRegularFile(path)) {
                        File file = path.toFile();
                        saveResource(file.getName(), false);
                    }
                });
    [DOUBLEPOST=1462985091,1462984989][/DOUBLEPOST]
    Да я слишком стеснительный... Да и люблю сам изучать, материалы видел буквально в соседней теме (вроде), так что обязаттельно почитаю, но все-равно большое спасибо за предложение))
     
  13. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Упс.. Немного затупил. Мой код для подгрузки из папки плагина.
    Сейчас подумаю на тему из jar'a

    Но в общем, на будущее запомните - когда у вас есть код который повторяется более двух раз и отличается одним словом - что-то не так
     
  14. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Намек понял)
    Код:
    String[] filesNeedToLoad = new String[]{"groups", "races", "damage_types", "artifacts"};
                for (String name : filesNeedToLoad) {
                    Files.walk(Paths.get(getDataFolder().getPath(), name)).forEach(path -> {
                        if (Files.isRegularFile(path)) {
                            File file = path.toFile();
                            saveResource(file.getName(), false);
                        }
                    });
                }
     
  15. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Намек поняли правильно)
    Боюсь что в случае с получением из .jar данный трюк не пройдет
    Придется либо получать доступ к jar файлу и создавать файловую систему, либо например просто забить все пути в массив после чего пройтись по ним вызывая saveResource.
    Уже выйдет короче...
    Хотя не исключаю что я чего-то не знаю.

    А вообще серьезно советую задуматься о базе данных.
    И еще, кстати говоря конфиги можно создавать прямо из кода, но это то еще занятия
     
  16. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Вообще то вполне "целесообразно".
    Твой плагин не умеет в перезагрузку (совсем-совсем), и любой /reload просто убьёт его. Ну и если же ты хочешь плагин всё-в-одном, то делай его модульно.
    Юзать ZipEntry в том for'e, распаковываем нужные файлы. Но всё равно не то, если у него проблема в организации плагина.
     
  17. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    Плагин пишеться чисто под один сервер, т.е. других плагинов там и не будет (максимум WE и VS в самом начале), так что релоад юзать не собираюсь..
     
  18. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Я тоже так думал. Пару лет назад :D

    В курсе, но как по мне - распаковывать JAR чтобы извлечь мать его конфиги.. Meh

    Особенно если учесть то что плагин может и несколько мб весить
     
  19. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Ты потом эту махину замучаешся обновлять. И при появлении какого-то бага, дебаггинг будет занимать огромное количество времени. ИМХО, не эффективно. Проще написать несколько плагинов поменьше, их будет легче переписывать / дописывать + не так сложно обновить. Я уже молчу про дебаггинг.
     
  20. Larin

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

    Баллы:
    103
    Что происходит в saveResource?
     
  21. Автор темы
    Mr_RoboMan

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

    Баллы:
    123
    ХЗ, но после этого волшебным образом нужные файлы оказываются в папке плагина.. :D
     

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