Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Метки:
Теги Теги
dev gradle

OsipXD

Старожил
Пользователь
Баллы
173
Имя в Minecraft
OsipXD
BukkitGradle
v0.6.7

Подключить | GitHub | Пример использования | SpigotMC

Почти всё, что написано ниже - устарело. Новое описание доступно на GitHub
​
Сразу напишу, что это плагин не для майна, а для разработчиков плагинов. Если Вы разработчик, но еще не поняли почему 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 следующего содержания:
YAML:
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:
YAML:
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
______________________________________________________________________
Надеюсь, что из приведенных примеров ясно как использовать плагин. Если есть вопросы или предложения, пишите в комментарии.
 
Последнее редактирование:
depend'ы можно добавлять в plugin.yml?
Можно, добавлять любые атрибуты, которые пока не поддерживает плагин. Для этого надо создать пустой plugin.yml и добавить в него необходимые атрибуты
 
Последнее редактирование:
Добавишь:
  • Позволяет запускать тестовый сервер прямо из dev окружения
  • Позволяет быстро подключить популярные библиотеки (ProtocolLib, Vault, Placeholder API и др.)
Будет очень полезным, пока не очень.
 
Добавишь:
  • Позволяет запускать тестовый сервер прямо из dev окружения
  • Позволяет быстро подключить популярные библиотеки (ProtocolLib, Vault, Placeholder API и др.)
Будет очень полезным, пока не очень.
Есть еще какие-нибудь предложения?
 
Еще планирую автоматическое добавление всех depend'ов, которые используются в проекте в plugin.yml, только там надо будет разделать softpend и depend, а еще loadbefore. В общем, пока не придумал как это удобнее сделать
 
v0.3.5
  • Рефакторинг
  • Ко всем методам добавлены комментарии
  • Исправлены мелкие баги генерации файла plugin.yml
  • Чуток ускорена генерация plugin.yml

v0.5.3
  • Добавлена возможность запуска сервера таском Gradle
  • Добавлена возможность конфигурировать сервер
  • Плагин автоматически копируется в папку plugins
Подробнее читайте в шапке пункт "Запуск тестового сервера"
Ссылка на плагин исправлена
v0.5.6
  • Исправлена ошибка при создании папки плагинов
  • Нерабочий флаг -о заменен на изменение online-mode в server.properties
На GitHub опубликовал простейший проект, который использует BukkitGradle. Можно использовать его как отправную точку.
v0.5.7
  • Исправлена ошибка в ссылке на репозиторий sk89q из-за которой он не подгружался

v0.5.8
  • Исправлен баг из-за которого отступы в plugin.yml удалялись

v0.6.7
  • Исправлена работа плагина, когда Gradle в оффлайн режиме
  • Теперь не затирается шапка eula.txt со ссылкой на EULA
  • Все таски помещены в категорию "Bukkit" и к ним добавлены описания
  • Теперь запуск и отладка сервера в IntelliJ IDEA еще удобнее. Консоль сервера находится внутри IDE
 
@OsipXD
А можно указать путь к кастомному тест серверу на локале?
 
22:44:46: Executing task ':buildIdeaRun --stacktrace'...
 
Последнее редактирование:

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

Назад
Верх