[Урок][Глава 1] Учимся писать плагин для сервера
Урок по написанию плагинов
Здравствуйте, в этой новости, я расскажу вам, как правильно сделать плагин с нуля. Начнем мы с вещей, которые нужны для его создания, и напишем маленькую систему. Давайте начнем
Инструменты для создания плагина
Создание проекта в Eclipse
Мы скачали программу и ядро, теперь делаем следующие
Создаем новый проект Java Project
Здесь мы вводим название нашего проекта и нажимаем Next
Здесь нажимаем Add External Jars и ищем свой JAR ядро (в моем случае bukkit 1.8), и отправляем сюда
Далее, мы создаем файл и начинаем редактировать его
Далее мы создаем Package в файле scr и в Package создаем Class. Все файлы называть как название плагина.
Когда вы создадите файл, вы должны добавить к 2 строке extends JavaPlugin, затем, навести на него курсор и нажать импорт. После чего, у вас появится строка с импортом для работы плагина
И так. Дабы не томить вас нудными скринами, составил вам сразу готовый код выдачи лога в консоль. Давайте же разберемся, а не тупо спишем.
Вы наверное спросите, зачем мы пишем < и >> Несколько раз?
Дело в том, что эти скобочки, открывают взаимодействие с пабликом. Если после ввода public void onEnable() поставить <, то все ниже коды будут выполняться тогда, когда паблик начнет их выполнять.
Чтобы закрыть паблик, нужно ввести >. Чтобы полностью закончить код, нужно в самом конце и в самом начале строке, написать еще раз >. Это означает, что паблик и код завершены
В сегодняшнем уроке, мы научились выставлять сообщение в консоль о запуске/выключении консоли.
Создание плагина Майнкрафт
Здравствуйте посмотрел темы на пикабу станет ясно что уроков по написанию плагинов увы очень и очень мало. Зато запросов на разработку плагинов довольно много.
Работа с plugin.yml
Работа с командами
Написать плагин для Bukkit не так уж и сложно.Плагины могут перехватывать эвенты (события) изменять или анулировать результат к примеру эвенты входа и выхода с сервера игроков выглядят так:
public void onJoin(PlayerJoinEvent event) <
event.setJoinMessage(event.getPlayer().getName() + » вошел на сервер»);
public void onQuit(PlayerQuitEvent event) <
event.setQuitMessage(event.getPlayer().getName() + » покинул сервер»);
Рассмотрим их повнимательнее. «@EventHandler» перед функцией означает что дальше идёт перехват эвента, то есть когда игрок заходит или выходит с сервера будет срабатывать та или иная функция при этом в переменную «event» будут переданы некоторые значения.
Изменить игрока не получится зато можно изменить сообщение:
event.setJoinMessage(event.getPlayer().getName() + » вошел на сервер»);
Рассмотрим этот код:
String playername = event.getPlayer().getName();
Так инициализируется переменная playername содержащая текстовую информацию,
в конце должен стоять знак «;» означающий завершение строки иначе при компиляции будет ошибка.
на экран будет выведено «Hello World!»
замете что знак + не заменяется на пробел а просто играет роль связующего.
Теперь давайте приступим к написанию самого плагина.
Во первых понадобится программа для компиляции кода, я посоветую использовать
выберете для Java EE. После установки нужно скачать craftbukkit.
Теперь зайдите в NetBeans и нажмите «Создать проект» (светло коричневая папка с плюсиком в панеле инструментов)
Нажмите готово и у вас должен будет создаться проект и открыться класс Main
Теперь заходим в папку с проектом и создаём папку lib в неё помещаем скачанный craftbukkit после переключаемся сново в NetBeans жмём правой кнопкой по проекту (слева) заходим в свойства, в открывшемся окне выбираем «Библиотеки» и жмём «добавить папку или jar» и выбираем craftbukkit.jar, жмём ок и ещё раз ок.
Возвращаемся к главному классу
public class Main extends JavaPlugin implements Listener < <
JavaPlugin и Listener будут подчёркнуты красным нажимаем на них и зажимаем Alt+Enter появется подсказка жмём «Добавить оператор импорта org.bukkit.event.Listener»
потом по другому слову тоже самое и выбираем «Добавить оператор импорта org.bukkit.plugin.java.JavaPlugin»
public static void main(String[] args) <
// TODO code application logic here
public void onEnable() <
getServer().broadcastMessage(«Мой плагин включен»);
public void onDisable() <
getServer().broadcastMessage(«Мой плагин отключен»);
public void onJoin(PlayerJoinEvent event) <
event.setJoinMessage(event.getPlayer().getName() + » зашел на сервер»);
public void onQuit(PlayerQuitEvent event) <
event.setQuitMessage(event.getPlayer().getName() + » покинул сервер»);
с PlayerJoinEvent и PlayerQuitEvent сделать тоже самое(иморт)
Готово теперь можно скомпилировать код и плагин готов.
Написание плагинов на Spigot/Bukkit
Первый мой туториал, просто хочу донести инфу до людей которые хотят этим заниматься, но не знают где начать. Не судите строго.
Стоит отметить что навыки работы с серверами, так же как и опыт в программировании это очень хорошо и поможет вам в дальнейшем. Если нет, будет чуть сложнее это все понимать.
Писать наши плагины мы будем на Java, так что начать стоит с выбора среды разработки (IDE). Лично я начинал с Eclipse, потом перешел на IntelliJ IDEA. Просто качаем Eclipse и не паримся.
После запуска Eclipse предлагает нам создать рабочее пространство (workspace), размещаем где угодно, я оставлю как есть.
Ну, мы тут плагины писать собирались, так что давайте создадим наш проект. Снизу от Package Explorer нажимаем на Create a Java project.
Возвращаемся в Eclipse. На данный момент мы можем просто писать на Java и не париться, но нам нужно писать плагины. Нам нужно подключить библиотеку, наше ядро сервера. Прожимаем Alt + Enter, видим вот это.
Add External JARs, выбираем наше ядро, Apply and Close.
Снова прожимаем Alt +Enter, Java Compiler, убираем галочку под JDK Compliance, и ставим Compieler Compliance Level на 1.8, это важно.
Всё, библиотеку мы подключили, теперь надо создать пакеты.
Далее нужно создать главный класс. Я не могу тут объяснять что такое классы в Java, советую почитать об этом либо сейчас, либо позже. Для создания класса в нашем пакете, ПКМ по пакету, new, Class. Название главного класса должно совпадать с Plugin name.
После этого вы должны увидеть примерно это.
Время писать код. В коде ниже мы наследуемся от класса JavaPlugin. Это значит что мы добавляем свой код, который будет отвечать за наш плагин.
Резонный вопрос: почему оно подчёркнуто? Все просто, мы не импортировали класс JavaPlugin. Если навести на ошибку, Eclipse предложит возможные варианты решения, первый из них, это и есть импорт.
Теперь наш код выглядит так:
Следующее что я предлагаю сделать, это сообщение в консоль сервера при включении нашего плагина. Любой плагин содержит метод onEnable(), вызывается он при его включении. Так-же существует и метод onDisable(). В коде это выглядит вот так:
@Override отвечает за переопределение метода, просто запомните что перед этими двумя методами ставится эта аннотация. Сейчас эти методы ничего не делают, время это исправить.
Методом getLogger() получаем наш логгер, записываем в переменную log. Класс Logger содержит в себе метод info( ), котрый и выводит сообщение в консоль. Теперь можно и скомпилировать наш плагин, но для начала нужно добавить один файл: plugin.yml в src
name: Имя плагина
main: Главный класс
version: Версия
НЕ ИСПОЛЬЗУЙТЕ TAB
Для экспорта кликаем File, Export, Java, JAR File. Указываем путь для экспорта, можете ставить сразу папку с плагинами на локальном сервере, ну и кликаем Finish.
После запуска сервера, в консоль будет выведено сообщение о включении нашего плагина. Хоть консоль имеет некоторые проблемы с Русским языком, но это уже какой-то профит.
Это только начало, и я буду писать ещё статьи на эту тему, если это кому-то интересно.
