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

Плагин [DEV] BukkitGradle v0.6.7 - Убираем рутину из Gradle [1.7.10+]

Тема в разделе "Неподтвержденные плагины", создана пользователем OsipXD, 15 апр 2017.

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

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

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Сразу напишу, что это плагин не для майна, а для разработчиков плагинов. Если Вы разработчик, но еще не поняли почему Gradle хорош, то советую прочитать топик дальше.
    Возможно меня покарают за то что это не та ветка форума, но я не нашел более подходящей

    Что это такое?
    Это плагин для Gradle, который поможет убрать из проекта рутину, которую приходится делать при создании каждого нового плагина. Возможно, те кто писал плагины для Sponge уже убедились, что это удобно на примере SpongeGradle.
    Что именно BukkitGradle делает за Вас?

    • Подключает плагины: java, idea, eclipse
    • Устанавливает при компиляции кодировку UTF-8
    • Добавляет репозитории: mavenCentral, mavenLocal, репозиторий Spigot, репозиторий sk89q (содержит большое количество популярных плагинов)
    • Автоматически подтягивает Bukkit
    • Генерирует файл plugin.yml без Вашего участия, используя информацию из проекта, таким образом сводятся к нулю ошибки в plugin.yml, а так же позволит реже забывать менять версию плагина :D
    • Позволяет запускать тестовый сервер прямо из dev окружения
    • Позволяет быстро подключить популярные библиотеки (ProtocolLib, Vault, Placeholder API и др.)
    Пункты отмеченные серым еще не реализованы.

    Как подключить в свой проект?
    Плагин залит на plugins.gradle.org, благодаря чему Вы можете подключать огромное количество плагинов всего одной строчкой. Как это сделать смотрите здесь.

    Как использовать плагин?
    Самый простой способ начать использование это клонировать этот проект и запустить таск "runServer".

    Генерация plugin.yml

    Для начала работы не нужно ничего настраивать, хватит стандартных настроек.
    После подключения плагин уберет из Вашего plugin.yml пункты, которые должны генерировать автоматически.
    Давайте рассмотрим простейший build.gradle файл, в котором используется плагин:
    Код:
    plugins {
        // Подключаем BukkitGradle
        id "ru.endlesscode.bukkitgradle" version "0.6.7"
    }
    
    // Информация о проекте
    group "com.example"
    description "My first Bukkit plugin with Gradle"
    version "0.1"
    Всё! Этого достаточно. После сборки такого проекта будет автоматически подключена последняя версия Bukkit и сгенерирован plugin.yml следующего содержания:
    Код:
    name: MyPlugin
    description: My first Bukkit plugin with Gradle
    main: com.example.myplugin.MyPlugin
    version: 0.1
    Может показаться непонятным откуда BukkitGradle взял main. Он так же автоматически генерируется в соответствии с конвенцией в следующем формате:
    Код:
    <groupId>.<lower case name>.<name>
    Вы можете переопределить все значения, которые попадут в plugin.yml. Кроме того Вы можете изменить необходимую версию Bukkit. Давайте рассмотрим файл конфигурации, где переопределяются все поддерживаемые атрибуты:
    Код:
    plugins {
        // Подключаем BukkitGradle
        id "ru.endlesscode.bukkitgradle" version "0.6.7"
    }
    
    // Информация о проекте
    group "com.example"
    description "My first Bukkit plugin with Gradle"
    version "0.1"
    
    // Переопределяем стандартные настройки
    bukkit {
        // Выбираем версию Bukkit
        version = "1.10.2"
    
        // Переопределяем содержимое plugin.yml
        meta {
            name = "MyPlugin"
            description = "My amazing plugin, that doing nothing"
            main = "com.example.plugin.MyPlugin"
            version = "1.0"
            url = "http://www.example.com" // Это соответствует атрибуту website
            authors = ["OsipXD", "Contributors"]
        }
    }
    Посмотрим, что попало в plugin.yml:
    Код:
    name: MyPlugin
    description: My amazing plugin, that doing nothing
    main: com.example.plugin.MyPlugin
    version: 1.0
    website: http://www.example.com
    authors: [OsipXD, Contributors]

    Важно!
    Если Вам нужно добавить атрибуты, которые не поддерживаются BukkitGradle (например
    depend), Вы можете создать файл plugin.yml и добавить в него эти атрибуты. Добавлять при этом main, name и др. не нужно.

    Запуск тестового сервера
    Теперь рассмотрим запуск сервера из dev окружения.
    Сервер можно запустить так же без настроек, тогда по умолчанию последняя сборка ядра нужной версии будет скачана в папку "server" в корне вашего проекта, будет создан и запущен скрипт запуска в зависимости от вашей ОС. Ваш плагин будет автоматически помещен в папку "plugins".

    Если Вы используете IntelliJ IDEA, то можете запустить таск Gradle ":buildIdeaRun" и плагин добавит Вам конфигурацию запуска (Run Configuration), Вам останется только запустить её.


    Альтернативный способ запуска сервера - выполнить таск ":runServer". Это можно сделать, например командой:
    Код:
    > gradlew runServer
    При первом запуске сервера Вы увидите, что не приняты соглашения EULA. Тут нам пригодятся настройки bukkit секции run (всё в том же build.gradle):
    Код:
    bukkit {
        // Все, указанные здесь значения - это значения по умолчанию
        run {
           // Принимаем EULA
           eula = false
           // Устанавливаем значение online-mode
           onlineMode = false
           // Путь, куда будет установлен сервер (относительный)
           dir = "server"
           // Режим отладки (прослушивает 5005 порт для удалённой отладки)
           debug = true
           // Устанавливаем кодировку сервера (флаг -Dfile.encoding)
           encoding = "UTF-8"
           // Аргументы JVM
           javaArgs = "-Xmx1G"
           // Аргументы Bukkit
           bukkitArgs = ""
        }
    }

    Важно!
    Принимать EULA и менять online-mode следует именно из этих настроек, иначе плагин будет постоянно перезаписывать то значение, которое настроено в нём.

    Лог изменений
    v0.6.7
    • Исправлена работа плагина, когда Gradle в оффлайн режиме
    • Теперь не затирается шапка eula.txt со ссылкой на EULA
    • Все таски помещены в категорию "Bukkit" и к ним добавлены описания
    • Теперь запуск и отладка сервера в IntelliJ IDEA еще удобнее. Консоль сервера находится внутри IDE
    v0.5.8
    • Исправлен баг из-за которого отступы в plugin.yml удалялись
    v0.5.7
    • Исправлена ошибка в ссылке на репозиторий sk89q из-за которой он не подгружался
    v0.5.6
    • Исправлена ошибка при создании папки плагинов (опять)
    • Нерабочий флаг -о заменен на изменение online-mode в server.properties
    v0.5.3
    • Изменен ID плагина на plugins.gradle.org
    • Добавлена возможность запуска сервера таском Gradle
    • Добавлена возможность конфигурировать сервер
    • Плагин автоматически копируется в папку plugins
    v0.3.5
    • Рефакторинг
    • Ко всем методам добавлены комментарии
    • Исправлены мелкие баги генерации файла plugin.yml
    • Чуток ускорена генерация plugin.yml
    v0.3.4
    • Плагин опубликован на RUBukkit
    ______________________________________________________________________
    Надеюсь, что из приведенных примеров ясно как использовать плагин. Если есть вопросы или предложения, пишите в комментарии.
     
    Последнее редактирование: 12 май 2017
  2. Хостинг MineCraft
    <
  3. MrBrikster

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

    Баллы:
    78
    Имя в Minecraft:
    MrBrikster
    depend'ы можно добавлять в plugin.yml?
     
  4. Автор темы
    OsipXD

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

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Можно, добавлять любые атрибуты, которые пока не поддерживает плагин. Для этого надо создать пустой plugin.yml и добавить в него необходимые атрибуты
     
    Последнее редактирование: 15 апр 2017
  5. demkom

    demkom Администратор Пользователь

    Баллы:
    76
    Skype:
    demkom1983
    Имя в Minecraft:
    G_demkom_G
    Добавишь:
    • Позволяет запускать тестовый сервер прямо из dev окружения
    • Позволяет быстро подключить популярные библиотеки (ProtocolLib, Vault, Placeholder API и др.)
    Будет очень полезным, пока не очень.
     
  6. Автор темы
    OsipXD

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

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Есть еще какие-нибудь предложения?
     
  7. demkom

    demkom Администратор Пользователь

    Баллы:
    76
    Skype:
    demkom1983
    Имя в Minecraft:
    G_demkom_G
    Нету :nerd:
     
  8. Автор темы
    OsipXD

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

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Еще планирую автоматическое добавление всех depend'ов, которые используются в проекте в plugin.yml, только там надо будет разделать softpend и depend, а еще loadbefore. В общем, пока не придумал как это удобнее сделать
     
  9. Saharo4ek

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

    Баллы:
    76
    Имя в Minecraft:
    tin
    Офигеть
     
  10. Автор темы
    OsipXD

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

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    v0.3.5
    • Рефакторинг
    • Ко всем методам добавлены комментарии
    • Исправлены мелкие баги генерации файла plugin.yml
    • Чуток ускорена генерация plugin.yml
    [DOUBLEPOST=1492613613,1492352713][/DOUBLEPOST]v0.5.3
    • Добавлена возможность запуска сервера таском Gradle
    • Добавлена возможность конфигурировать сервер
    • Плагин автоматически копируется в папку plugins
    Подробнее читайте в шапке пункт "Запуск тестового сервера"[DOUBLEPOST=1492614587][/DOUBLEPOST]Ссылка на плагин исправлена[DOUBLEPOST=1492786378][/DOUBLEPOST]v0.5.6
    • Исправлена ошибка при создании папки плагинов
    • Нерабочий флаг -о заменен на изменение online-mode в server.properties
    На GitHub опубликовал простейший проект, который использует BukkitGradle. Можно использовать его как отправную точку.[DOUBLEPOST=1492795183][/DOUBLEPOST]v0.5.7
    • Исправлена ошибка в ссылке на репозиторий sk89q из-за которой он не подгружался
    [DOUBLEPOST=1493009897][/DOUBLEPOST]v0.5.8
    • Исправлен баг из-за которого отступы в plugin.yml удалялись
    [DOUBLEPOST=1493804073][/DOUBLEPOST]v0.6.7
    • Исправлена работа плагина, когда Gradle в оффлайн режиме
    • Теперь не затирается шапка eula.txt со ссылкой на EULA
    • Все таски помещены в категорию "Bukkit" и к ним добавлены описания
    • Теперь запуск и отладка сервера в IntelliJ IDEA еще удобнее. Консоль сервера находится внутри IDE
     
  11. Santa

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

    Баллы:
    66
    Имя в Minecraft:
    Santa64
    Лойс
     

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