Доступна тёмная тема!
Ощутите форум N&R Group по новому!
Перейти на тёмную тему

Текстовый вариант 1 урока.

Статус
Закрыто для дальнейших ответов.

Monikon

Спец.администратор
Команда форума
Основатель проекта
Модератор
17.05.2019
113
117
43
Тема урока: Вступление

---

О ЯЗЫКЕ

Сегодня мы научимся базовым знаниям в программировании, а именно в разработке плагинов на сервер MineCraft на языке Java с ядром Spigot.
Для начала давайте разберём на каком языке мы будем програмировать.

Java - это язык программирования, разработанный в 1995 году.
Кстати, интересный факт, MineCraft тоже был разработан на этом языке, отсюда, плагины и моды тоже пишут на Java.

Сам код пишут в специальных "классах".
Другими словами, классы это просто описание того, какими должны быть созданные сущности: какими свойствами и методами должны обладать.
А код - текст компьютерной программы на каком-либо языке программирования или языке разметки, который может быть прочтён человеком.

Свойства – характеристики сущности, методы – действия, которые она может выполнять.

Классы хранятся в пакетах (папках) и каждая "ветка" (то бишь, папка) разделяется точкой.
Поэтому будь-те осторожны в выборе названий для каждой ветки.

Но, приложения Java обычно транслируются в специальный байт-код, поэтому они могут работать на любой компьютерной архитектуре, с помощью виртуальной Java-машины.
Сами данные этого приложения, включая код, переводятся в формат .class (как класс в котором мы этот код писали).

Именно из-за этого мы не можем просто открыть .class файл и просмотреть чужой код.

---

ДЕКОМПИЛЯЦИЯ

Базовые знания о декомпиляции очень помогут вам в определении вирусов на вашем сервере.

Для этого есть целый специальный процесс - декомпиляция.
Это процесс когда .class файлы расшифруются и переводятся в формат .java (открытый).

Декомпиляция не может быть точной так как она использует те же методы чтения, что и наш сервер и пытается перевести в код, поэтому если Вы захотите просто перенести декомпилированный плагин в IntellIJ Idea, то могут возникнуть ошибки, которые придётся исправлять в ручную.

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

Поэтому существует понятие похожее на декомпиляцию, но называется деобфускация (процесс расшифровки зашифрованного кода), от слова обфускация (шифрование кода).

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

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

---

СОЗДАНИЕ ПЛАГИНА И ЧТО ДЛЯ ЭТОГО НУЖНО

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

Spigot - это ядро сервера, набор пакетов необходимых для работы сервера на MineCraft определённой выбранной вами версии.
В качестве ядра может также выступать Bukkit, PaperSpigot (форк на спайгот), Sponge, BungeeCord и т.д.

В этом курсе мы рассмотрим только самый популярный и основной - это Spigot.

Spigot абсолютно бесплатный и не требует доп. лицензий для разработки своего плагина и является переделкой Bukkit.
В этом ядре предусмотрены уже готовые методы для запуска, выключения и взаимодействия (будь-то команды или ивенты).

Ивенты - это действия, выполняемые на самом сервере (например, сломал блок или вышел с игры).

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

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

name - Название плагина (на английском)
version - Версия (например, 1.0-BETA)
main - ссылка на основной класс (включая пакеты, например me.monikon.NMTest)

Эту информацию мы поместим в файле под именем plugin.yml в корневую папку плагина (первую).

Заметьте, под этим форматом ещё хранятся конфиги различных плагинов, но об этом в след.уроках.

После того как мы разобрали как запустить плагин, он теперь может восприниматься ядром как плагин. А это значит пора добавлять ему действий.

Самое первое действие от нашего плагина, конечно же - Включение (onEnable()).

Скобочки обязательны, в некоторых ваших методах могут быть не пустыми, а требовать какую-либо переменную, например, игрока.

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

ВАЖНЫЙ МОМЕНТ. Зарегистрированную команду необходимо вписать в plugin.yml и дать описание description.

Выполним обращение к Spigot и тут нас ждёт нежданчик, Spigot оказывается и не совсем уж то Spigot, а Bukkit.
У вас всё нормально, вы скачали то ядро которое нужно было, поэтому не беспокойтесь и можете спокойно выдохнуть.

Просто, как я сказал раньше, Spigot это оптимизированная переделка Bukkit, то большая часть будет указывать именно на Bukkit, а модификации самого спайгота не будут вам мешать в комфортной кросс-разработке плагинов между бакитом и спайготом.

Вызываем класс регистратора команд ядра и регистрируем нашу команду.

Здесь от нас требуют 2 аргумента:
1 - текстовой, он же String
2 - класс, который будет обрабатывать эту команду.

Вписываем название команды которое мы сделали в plugin.yml

Но кое-что мы забыли, от нас требуется 2 аргумент - класс.

Создаём класс для команды.

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

Теперь мы можем подключить этот класс к нашему регистратору в главном классе.

Поздравляю! Теперь Вы можете запустить ваш плагин.
 
  • Like
Реакции: nerexi и RusmayTV
Статус
Закрыто для дальнейших ответов.