Создание плагина майнкрафт visual studio

Обновлено: 20.05.2024

если вы ранее не написали Visual Studioное расширение, возможно, у вас есть вопросы. Некоторые из наиболее распространенных из них перечислены здесь. Если вы не видите нужную информацию, воспользуйтесь кнопками обратной связи (Эта страница полезна в правом верхнем углу экрана), чтобы запросить нужные сведения.

Эта статья относится к Visual Studio в Windows. дополнительные Visual Studio для Mac см. в разделе расширение Visual Studio для Mac. Visual Studio Code см. в разделе API расширения Visual Studio Code.

какое программное обеспечение требуется для разработки расширений Visual Studio?

для разработки расширений Visual Studio необходимо установить пакет SDK для Visual Studio в дополнение к Visual Studio. пакет SDK Visual Studio можно установить в рамках обычной установки или позже. дополнительные сведения об установке пакета sdk для Visual Studio см. в разделе установка пакета sdk для Visual Studio.

какие виды действий можно выполнить с помощью расширений Visual Studio?

предельное значение перевозки, когда приходится выключать различные расширения Visual Studio. Конечно, большинство расширений имеют что-то, что нужно делать с написанием кода, но это не должно быть так. Ниже приведены некоторые примеры типов расширений, которые можно создать.

поддержка языков, которые не входят в Visual Studio, с использованием расцветки синтаксиса, технологии IntelliSense и поддержки компилятора и отладки

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

Зависящие от домена конструкторы для таких сценариев, как проектирование данных или поддержка в облаке

примеры расширений см. в Visual Studio Marketplace. многие расширения открыты с открытым исходным кодом, и в Marketplace имеются ссылки на их GitHub репозиторий.

какие возможности Visual Studio можно расширить?

теоретически, вы можете расширить практически любую часть Visual Studio: меню, панелей инструментов, команд, окон, решений, проектов, редакторов и т. д.

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

расширение меню и команд: добавление собственных элементов в Visual Studio меню и панелей инструментов. их можно использовать для запуска новых Visual Studio функциональных возможностей или собственных внешних вспомогательных приложений. Можно также указать настраиваемые сочетания клавиш для пунктов меню.

расширение и настройка средства Windows: расширение существующих окон инструментов или создание собственных окон инструментов. Например, можно добавить в Свойства новые свойства или создать новое окно инструментов для добавления дополнительных компонентов.

расширения редактора и языковой службы: добавьте собственные настройки в IntelliSense, предоставляемую для Visual Studio языков, или создайте поддержку для новых языков программирования. Можно создавать новые завершения операторов, предложения и новые подсказки краткие сведения. С помощью лампочкй можно добавлять предложения рефакторинга и исправления кода для поддержки новых языков программирования.

Какие шаблоны проектов предоставляются VSSDK?

Два основных типа расширений — это пакеты VSPackage и расширения MEF. Как правило, расширения VSPackage используются для расширений, которые используют или расширяют команды, окна инструментов и проекты. расширения MEF используются для расширения или настройки редактора Visual Studio.

Для C++ мастер VSPackage предоставляет код для добавления команд меню, окон инструментов и пользовательских редакторов.

шаблон изолированной оболочки используется для упаковки расширения в версии оболочки Visual Studio, которую можно распространять и предоставлять самостоятельно. В следующих разделах показано, как приступить к работе с каждым типом расширения.

Разделы справки получить расширение, которое будет выглядеть Visual Studio?

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

Где можно найти примеры кода VSSDK?

Каждая из ссылок, перечисленных в предыдущем разделе, содержит пошаговые пошаговые руководства, демонстрирующие способы реализации конкретных функций. примеры VSSDK с открытым исходным кодом также можно найти на GitHub Visual Studio примерах.

Как можно распространить расширение?

вы также можете опубликовать расширение в Visual Studio Marketplace, что делает его видимым для большого количества Visual Studioных клиентов. пример упаковки расширения в Marketplace см. в разделе пошаговое руководство. публикация расширения Visual Studio. Дополнительные сведения о том, что необходимо сделать для публикации в Marketplace, см. в разделе Products and Extensions for Visual Studio.


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

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

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

[+] <- Помощь в изучении Java;
[+] <- Сборка ссылок на обучающие материалы
[+] <- Документация Spigot API;

Софт для начала работы :
Среда разработки :
1) IntelliJ IDEA [+]
2) Eclipse [+]
3) NetBeans [+]
Для нормального запуска этих программ у Вас должен быть установлен JDK (Java Development Kit) и JRE (Java Runtime Environment)!

Редактирование файлов (.yml, .json, etc. ) :
1) Notepad++ [+]

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

Основы :
Java - обьектно-ориентированный язык программирования (вся программа - связь разных обьектов. Это как организм, в котором каждый орган отвечает за свою функцию для нормального функционирования всего организма. Органы могут сотрудничать, обмениваться информацией и тп).
Его приемущества:
1) Инкапсуляция :
Теория : позволяет устанавливать доступ к обьекту и информации в нем с помощью модификаторов доступа.
Пример : у Вас есть 3 сейфа с информацией. Первый - приватный (пароль знаете только Вы), второй - обычный (пароль знают Ваши родственники и соседи), третий - публичный (пароля нет).

2) Наследование :
Теория : позволяет наследовать свойства, методы и поля родительского обьекта.
Пример : У Вас есть обьект Car (автомобиль), и обьект BMW , который наследует обьект Car.

3) Полиморфизм (углубленно о наследовании):
Теория : позволяет обьекту использовать методы производного класса, который не существует на момент создания базового.
Пример : Что может хранить класс Car ? Например, название марки автомобиля, кол-во сидений и тп. Допустим, кол-во сидений = 4. А что, если мы делаем 2-местный автомобиль? Мы наследуем класс Car и имеем возможность изменить для себя кол-во сидений для нашего авто.

Переменные - ячейки памяти, которые хранят в себе определенный обьект (тип данных).

Модификаторы доступа в Java:
private - приватный (как мы помним, пароль знаем только мы).
(модификатор не указывается) - обычный (как мы помним, пароль знают только наши родственники и соседи).
protected - защищенный (пароль знают только наши дети и мы сами).
public - публичный (пароля нет).

НАЧАЛО РАБОТЫ:
Создание проекта в среде разработки Eclipse :
1) Запускаем Eclipse .
2) Нажимаем на кнопку File (в левой верхней части экрана) -> New -> Java project

3) В появившемся окне указываем имя проекта (в этом случае " RuBukkitGuide ") и ставим такие настройки:

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

Создание пакетов :
1) В созданном обьекте нажимаем ПКМ по папке src.
2) Нажимаем New -> Package .

3) Создаем сами пакеты:

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

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

2) Указываем название и нажимаем 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.
В нем мы должны ввести такие значения:

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

Первый мой туториал, просто хочу донести инфу до людей которые хотят этим заниматься, но не знают где начать. Не судите строго.

Стоит отметить что навыки работы с серверами, так же как и опыт в программировании это очень хорошо и поможет вам в дальнейшем. Если нет, будет чуть сложнее это все понимать.

Писать наши плагины мы будем на Java, так что начать стоит с выбора среды разработки (IDE). Лично я начинал с Eclipse, потом перешел на IntelliJ IDEA. Просто качаем Eclipse и не паримся.

После запуска Eclipse предлагает нам создать рабочее пространство (workspace), размещаем где угодно, я оставлю как есть.


Ну, мы тут плагины писать собирались, так что давайте создадим наш проект. Снизу от Package Explorer нажимаем на Create a Java project.


Вписываем в Project name имя вашего плагина. Далее - Finish. Теперь у нас есть проект, уже что-то. Смотрим версию нашего сервера, я лично буду писать на 1.12.2, вы можете учиться на любой другой версии. Некоторые моменты в написании кода под разные версии отличаются.

Для теста наших плагинов нам нужен локальный сервер, идём качать ядро. Bukkit или Spigot - значения не имеет, нам просто плагины потестить. Тестовый сервер в особой настройке не нуждается, просто выдаём себе опку и радуемся жизни.

Возвращаемся в Eclipse. На данный момент мы можем просто писать на Java и не париться, но нам нужно писать плагины. Нам нужно подключить библиотеку, наше ядро сервера. Прожимаем Alt + Enter, видим вот это.


Add External JARs, выбираем наше ядро, Apply and Close.

Снова прожимаем Alt +Enter, Java Compiler, убираем галочку под JDK Compliance, и ставим Compieler Compliance Level на 1.8, это важно.


Всё, библиотеку мы подключили, теперь надо создать пакеты.

Пакеты в Java позволяют организовать классы логически в наборы. Кроме того, пакеты могут иметь вложенные пакеты ( можно создать пакет в пакете который в пакете, ы). ПКМ по src, new, Package. При названии пакета можете писать me.<ник>.<название плагина>


Далее нужно создать главный класс. Я не могу тут объяснять что такое классы в Java, советую почитать об этом либо сейчас, либо позже. Для создания класса в нашем пакете, ПКМ по пакету, new, Class. Название главного класса должно совпадать с Plugin name.


После этого вы должны увидеть примерно это.


Время писать код. В коде ниже мы наследуемся от класса JavaPlugin. Это значит что мы добавляем свой код, который будет отвечать за наш плагин.


Резонный вопрос: почему оно подчёркнуто? Все просто, мы не импортировали класс JavaPlugin. Если навести на ошибку, Eclipse предложит возможные варианты решения, первый из них, это и есть импорт.


Теперь наш код выглядит так:


name: Имя плагина
main: Главный класс
version: Версия

НЕ ИСПОЛЬЗУЙТЕ TAB

Для экспорта кликаем File, Export, Java, JAR File. Указываем путь для экспорта, можете ставить сразу папку с плагинами на локальном сервере, ну и кликаем Finish.



Это только начало, и я буду писать ещё статьи на эту тему, если это кому-то интересно.

Здравствуйте посмотрел темы на пикабу станет ясно что уроков по написанию плагинов увы очень и очень мало. Зато запросов на разработку плагинов довольно много.

Работа с 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.getPlayer() - мы получим игрока который вошел или вышел

event.setJoinMessage(event.getPlayer().getName() + " вошел на сервер");

Рассмотрим этот код:

event.getPlayer().getName() - этим можно получить имя игрока и если передавать значение переменной то оно будет String :

String playername = event.getPlayer().getName();

Так инициализируется переменная playername содержащая текстовую информацию,

в конце должен стоять знак ";" означающий завершение строки иначе при компиляции будет ошибка.

Дальше идёт " + " вошел на сервер"" при объединении переменной и текста между ними ставится знак "+" а текст оборачивается в кавычки , пример:

String a = "Hello";

String b = "World";

на экран будет выведено "Hello World!"

замете что знак + не заменяется на пробел а просто играет роль связующего.

Теперь давайте приступим к написанию самого плагина.

Во первых понадобится программа для компиляции кода, я посоветую использовать

выберете для Java EE. После установки нужно скачать craftbukkit.

Теперь зайдите в NetBeans и нажмите "Создать проект" (светло коричневая папка с плюсиком в панеле инструментов)

Выберете Java => Приложение Java , введите папку и название проекта после в поле создать главный класс ставте галочку и вводите MyProject.Main

MyProject - пакет классов (папка) можно ввести название вашего плагина но не должно быть пробелов

Main - главный класс проекта

Нажмите готово и у вас должен будет создаться проект и открыться класс Main

Все

1 год на форуме

Топ пользователь

Итак, мальчики и девочки. Многие из нас играют в эту замечательную песочницу. И чуть меньше людей желают открыть свой сервер со своими шахматами и пионерками, со своим набором плагинов… Но случается и так, что нужного плагина порой не найти или нужна какая-то мелочовка, которая вшита только в монструозные плагины.
Сегодня я вас научу как писать плагины для сервера майнкрафта.

Подготовка.
Нам понадобятся следующие «инструменты»:
1. клиент minecraft;
2. сервер Bukkit;
3. Bukkit API;
4. среда разработки Eclipse;
5. базовые знания Java.
Если базовых знаний по Java нет, то я надеюсь, что хоть по какому-то языку программирования у вас есть базовые знания (тот же pascal abc). Если их нет то вам тут делать почти нечего .В таком случае бежим в гугл и ищем самоучители/учебники/справочники по Java.
Все ссылки даны в конце статьи.

Устанавливаем и запускаем Эклипс. Знакомить вас с его интерфейсом не стану. В Гугле можно много статей на эту тему найти.

Первым делом, создаем новый проект (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 JavaPluginprivate 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
А вот теперь компилация.

<CTRL+S> для сохранения кода. Клик пкм по папке src и выбираем Export. В окне открываем папку Java и выбираем там JAR file. После нажатия на Next, жмем на Browse и сохраняем файл сразу в папку плагинов сервера(plugins). Finish.

Читайте также: