Найти тему
Разработчик

Учимся писать плагин на Spigot для чайников

Оглавление

часто используемые ядра для сервера

CraftBukkit - глобальная серверная модификация, предоставляющая API для взаимодействия с игровым миром и созданная для упрощения создания плагинов к SMP-серверу.В августе 2014 года команду Bukkit покинули практически все разработчики, в том числе глава проекта EvilSeph.

Spigot - оптимизированная версия CraftBukkit со своими доработками и новыми возможностями и настройками, которая продолжила работу команды Bukkit.

Разработки, созданные для данного туториала, используют ядро Spigot.

Софт для начала работы
Среда разработки

• IntelliJ IDEA [+]
• Eclipse
[+]

Редактирование файлов (.yml, .json, etc...)

• Notepad++ [+]

Проект, созданный для данного туториала, был разработан в СР Eclipse.

НАЧАЛО РАБОТЫ

Создание проекта в среде разработки Eclipse:

1. Запускаем Eclipse.

2. Нажимаем на кнопку File (в левой верхней части экрана) -> New -> Java project. [cкрин]

3. В появившемся окне указываем имя проекта (в нашем случае "Guide") и ставим такие настройки: [cкрин]

4. Нажимаем Finish. Проект создан!

Создание пакетов:
1. В созданном обьекте нажимаем ПКМ по папке src.

2. Нажимаем New -> Package. [скрин]

3. Создаем сами пакеты: [скрин]

4. Нажимаем Finish.

Пакеты созданы.
Мы создали в папке
src папку org, в ней папку rb и в ней папку guide.
Для чего нужны пакеты? Представьте, что у Вас есть один большой ящик (Ваша программа) и в нем 4 маленьких ящика. В первом - яблоки, во втором - персики, в третьем - гранаты, в четвертом - ананасы. Для чего нам нужны эти коробки? Правильно, чтобы все фрукты не находились в одной коробке.
Но в Java пакеты не только используются для сортировки. Они берут участие в
инкапсуляции. Помните Обычный модификатор доступа? Вот вся информация с модификатором Обычный будет доступна всем объектам в этом пакете. То есть, у яблок своя тусовка, и никакие персики и другие фрукты туда не полезут.

Создание класса:
Создадим теперь наш главный класс, который запустит весь наш плагин, назовем его
Main.
1. Нажимаем ПКМ по пакету guide ->
New -> Class. [скрин]

2. Указываем название main и нажимаем Finish. [скрин]

Добавление библиотеки Spigot в проект:
Для этого нажимаем ПКМ по проекту и нажимаем
Properties -> Java build pass, заходим во вкладку Libraries и нажимаем на кнопку Add external JARs и указываем место хранения ядра Spigot [скачать их можно тут или тут] [скрин]

Начинаем кодить!
Созданный нами класс
Main пока-что выглядит вот так: [скрин]

Для того, чтобы наш проект считался плагином, нам нужно унаследовать класс JavaPlugin [этот класс находится в самом ядре Spigot]
Для того, чтобы унаследовать этот класс, нам нужно в строку
public class Main дописать extends JavaPlugin.
Хорошо. Или нехорошо? Что за красная лампочка?
Eclipse нам говорит, что мы не импортировали класс JavaPlugin. Нажимаем на лампочку и импортируем. [скрин]

Теперь мы имеем доступ к protected и public полям и методам. Чтобы Java знала наверняка, что мы используем метод из родительского класса (JavaPlugin), мы скажем это, используя аннотацию @Override. Какой метод мы возьмем из родительского класса? onEnable(), так как он запускает весь наш проект. Само ядро будет знать, что это плагин, и начнет получать всю нужную информацию. Если мы уберем extends JavaPlugin и метод onEnable(), то когда добавим плагин в папку plugins, он вообще не загрузится, и его вообще не будет в списке плагинов. [скрин]

Что такое void? Это тип возвращаемых данных. Поскольку метод onEnable() ни чего не возвращает через return, то мы должны сообщить об этом системе. (Тип доступа может быть любым форматом возвращаемых данных, к примеру: int, boolean и даже String).

ак узнать все методы, к которым мы имеем доступ? Пишем this и ставим точку. Нам программа вывела все доступные методы и поля из класса JavaPlugin.


Что будем делать? Ну давайте выведем при запуске плагина, что он включился.
Для этого заходим в метод onEnable(){ } и между { и } пишем нашу команду. Она выглядит так:
this.getLogger().info("плагин работает!");
Что мы сделали, введя эту команду? Мы получили класс
Logger, в которого есть метод info(...), который и запустили.

Плагин написан. Теперь мы должны создать файл plugin.yml. Нажимаем ПКМ по проекту. В окне нажимаем New -> File и вводим plugin.yml.
В нем мы должны ввести такие значения:

name: RBGuide # Имя плагина
main: org.rb.guide.Main # Путь к главному классу (тому, который наследует JavaPlugin)
author: MasterCapeXD # Автор плагина
version: 0.1 # Версия плагина
description: super plugin # Описание плагина

Теперь мы можем скомпилировать плагин. Нажимаем ПКМ по проекту, в окне нажимаем Export... -> Java -> JAR file -> Next и вводим путь к папке, где хотим сохранить файл.

Доп. информация:
Кроме метода onEnable() в JavaPlugin есть еще 2 метода - onLoad() и onDisable().

Весь класс Main:
package org.rb.guide;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin
{
    @Override
public void onEnable()
    {
this.getLogger().info("ПЛУГИН РАБОТАИТ!");
    }
}

Одна из частей подошла к концу, если тема будет актуальна , то в следующем мы продолжим добавлять функционала в плагин.

Читайте так же, что делать если у Вас лагает сервер? https://zen.yandex.ru/media/id/5fef199f5d3c8f7ab9058674/kak-uveliichit-tps-na-servere-5fef6010af142f0b17d647b5