как писать свои плагины для майнкрафт
[Урок][Глава 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.
После запуска сервера, в консоль будет выведено сообщение о включении нашего плагина. Хоть консоль имеет некоторые проблемы с Русским языком, но это уже какой-то профит.
Это только начало, и я буду писать ещё статьи на эту тему, если это кому-то интересно.
Туториал по созданию плагинов mineraft
Разработки, созданные для данного туториала, используют ядро Spigot.
Софт для начала работы :
Среда разработки :
1) IntelliJ IDEA [+]
2) Eclipse [+]
3) NetBeans [+]
Для нормального запуска этих программ у Вас должен быть установлен JDK (Java Development Kit) и JRE (Java Runtime Environment)!
Проект, созданный для данного туториала, был разработан в СР Eclipse.
3) В появившемся окне указываем имя проекта (в этом случае » RuBukkitGuide «) и ставим такие настройки:
3) Создаем сами пакеты:
2) Указываем название и нажимаем Finish.
Начинаем кодить!
Созданный нами класс Main пока-что выглядит вот так:
Теперь мы имеем доступ к protected и public полям и методам. Чтобы Java знала наверняка, что мы используем метод из родительского класса (JavaPlugin), мы скажем это, используя аннотацию @Override. Какой метод мы возьмем из родительского класса? onEnable(), так как он запускает весь наш проект. Само ядро будет знать, что это плагин, и начнет получать всю нужную информацию. Если мы уберем extends JavaPlugin и метод onEnable(), то когда добавим плагин в папку plugins, он вообще не загрузится, и его вообще не будет в списке плагинов.
Что такое void? Это тип возвращаемых данных. Поскольку метод onEnable() ни чего не возвращает через return, то мы должны сообщить об этом системе. (Тип доступа может быть любым форматом возвращаемых данных, к примеру: int, boolean и даже String).
Как узнать все методы, к которым мы имеем доступ? Пишем this и ставим точку. Нам программа вывела все доступные методы и поля из класса JavaPlugin.
Что будем делать? Ну давайте выведем при запуске плагина, что он включился.
Для этого заходим в метод onEnable() < >и между < и >пишем нашу команду. Она выглядит так: this.getLogger().info(«ПЛУГИН РАБОТАИТ!»);
Что мы сделали, введя эту команду? Мы получили класс Logger, в которого есть метод info(. ), который и запустили.
Как писать свои плагины для майнкрафт
Итак, мальчики и девочки. Многие из нас играют в эту замечательную песочницу. И чуть меньше людей желают открыть свой сервер со своими шахматами и пионерками, со своим набором плагинов… Но случается и так, что нужного плагина порой не найти или нужна какая-то мелочовка, которая вшита только в монструозные плагины.
Сегодня я вас научу как писать плагины для сервера майнкрафта.
Устанавливаем и запускаем Эклипс. Знакомить вас с его интерфейсом не стану. В Гугле можно много статей на эту тему найти.
Первым делом, создаем новый проект (Java Project).
В появившемся окне, в поле Project name, пишем любое название. В группе JREможно
выбрать версию библиотек Java, которые будут подключены к проекты. Хотя я не знаю на сколько это сильно влияет на результат, но всегда можно изменить эти параметры в настройках проекта и занаво пересобрать плагин.
.
Слева, в Package Explorer, мы увидим наше древо проекта. Там пока ничего путного нету. Даже компилировать нечего. Исправим ситуацию. Добавим сначало Пакет(package). Грубо говоря,
Пакет – это пространство имен(namespace) и служит для унификации переменных и функций.
В полу Name вводим имя пакета. Формат имени должен быть примерно такой: me.dmitriymx.firstplg.
Теперь добавим Class в пакет.
В поле Name вводим имя нового класса (у меня это DmxFirstPlugin).
Все остальные пункты оставляем как етсь и подтверждаем создание.
Вот вроде и всё с подготовкой… Хотя нет. Забыли про Bukkit API. Скачиваем в любую папку(лучше в ту же, где и workspace, чтобы не потерять) и подключаем его к проекту. Для этого кликаем пкм(правой кнопкой мыши) на папке вашего проекта в Package Explorer и выбираем Properties. В появившемся окне, слева, выбираем пункт Java Build Path. Справа теперь выбираем Libraries. Далее жмем кнопку Add External JARs и выбираем скаченный Bukkit API.
Создание каркаса для плагина
Теперь приступим непосредственно к программированию.
Изменим это
public class DmxFirstPlugin<
на это
public class DmxFirstPlugin extends JavaPlugin<
Эклипс подчеркнет нам JavaPlugin, указывая на ошибку в коде. Если подвести мышь к такому подчеркнутому коду, то откроется окошко с описанием ошибки и способы ее решения. В данном случае нам нужно импортировать класс из Bukkit API, для чего выбираем пункт Import ‘JavaPlugin’(org.bukkit.plugin.java). И сразу же замечаем. как над всем нашим кодом вписалась строчка
import org.bukkit.plugin.java.JavaPlugin;
Но вот опять Эклипсу что-то не нравится и он нам подчеркивает теперь класс DmxFirstPlugin. Повторяем трюк с подсказкой и выбираем первый пункт решения проблеммы: добавить недостоющие методы нашего класса. После этого, нам допишут 2 метода: onEnabled и onDisabled.
Событие onEnabled происходит, когда сервер подключает наш плагин при старте. Т.е. код расположенный в этом метоже будет выполнен самым первым. Именно по этому, onEnabled() используют как инициализацию плагина, прописывая там глобальные переменные и прочие подготовительные процедуры.
Событие onDisabled, соответственно. происходит при отключении плагина во время выключения сервера. Этот метод используют как деструктор, где освобождается память от уже ненужных данных и закрываются разного рода соединения(если, напиример, плагин подключался к бд)
Теперь «закрепим» на переменной вывод консоли сервера. для этого, перед всеми методами напишем:
private static final Logger mclog = Logger.getLogger(«minecraft»);
А в методах onEnabled и onDisabled:
public void onEnable() <
mclog.info(«[DmxFirstPlugin] Start»);
>
public void onDisable() <
mclog.info(«[DmxFirstPlugin] Stop»);
>
В итоге, должен получится вот такой вот код:
package me.dmitriymx.firstplg;
public class DmxFirstPlugin extends JavaPlugin<
private static final Logger mclog = Logger.getLogger(«minecraft»);
@Override
public void onDisable() <
mclog.info(«[DmxFirstPlugin] Stop»);
>
@Override
public void onEnable() <
mclog.info(«[DmxFirstPlugin] Start»);
Последний штрих перед компиляцией. Надо добавить файл описания для нашего плагина.
Клик пкм по src, New->File. В File name пишем plugin.yml. В него пишем следующий текст:
name: FirstSamplePlugin
main: me.dmitriymx.firstplg.DmxFirstPlugin
version: 1.0
А вот теперь компилация.
для сохранения кода. Клик пкм по папке src и выбираем Export. В окне открываем папку Java и выбираем там JAR file. После нажатия на Next, жмем на Browse и сохраняем файл сразу в папку плагинов сервера(plugins). Finish.
Запускаем сервер и убеждаемся, что все работает как мы хотим:
На сегодня всё. Мы получили каркас для будующих плагинов.