• MinePluginCheckBot – the trusted bot for checking Minecraft plugins
    • Detects backdoors, hacks, and malicious functionality
    • Scans commands, connections, and hidden calls in the code
    • Dissects plugins down to bytes to catch shady behavior
    • Remembers hashes and instantly responds on re-check
    • Files are not stored — they're deleted right after scanning
    • And yeah, we’re the best at this — try it and see for yourself
    God-tier feature
    It can even crack resource packs. Just drop an encrypted archive — the bot repacks it into a normal one, no fuss. You instantly see what’s been hidden inside.
    Learn more

Members online

  • MrLavX
  • VitaliyXX
  • gdgdh
  • sw3ens
  • Kanya
  • flai
  • Xosi_
  • abernat
  • ffish22
  • bananoviyostrov
  • lepeykozeka
  • Misterkuku
  • shadowmoon
  • MidTano
  • Snoky
  • iQueez
  • Kachevnikov
  • paranoia
  • thesenya1
  • saniock
  • Ifritius13
  • wertey
  • warface2007man
  • Demiurgos
  • AldiiiGamer
  • mrufkolott
  • Фрозка
  • avav
  • hdsdhsdj
  • Alpha9000
  • emrmkew
  • Adola
  • mrbedrock
  • _Klaidi4_YT_
  • Ivhintyy
  • SmallMy
  • DaMixue
  • Xu00mi
  • THESeeT
  • MrFeellYT
  • stussywaves
  • sevenworl
  • Plomins__
  • ZeRexVN
  • litos
  • MrJob18
  • _Tot_Sami1_
  • zeeeekyooo
  • caneda33
  • bblod1
  • _Mandarinka_TV_
  • luadtr
  • Dragon725
  • Makar297700
  • He1ly03
  • mishaserv
  • zxcasdzxc
  • NMKaRaS1K
  • endkey
  • bobobo
  • Roflega
  • kholmogorov
  • Noktis
  • Miroslav

Instructions Гайдик по созданию плагинов

Eselfins
v.1.0.0
1 УРОК - НАЧАЛО
Постараюсь писать максимально подробно:
В этом уроке сделаем простенький плагин для приветствия игрока при заходе на сервер
ВНИМАНИЕ: Все примеры создания проекта и кода будут сделаны в IntelliJ IDEA и на версию 1.20.1 Paper

1 ШАГ
  • Установить Java Development Kit (JDK).
  • Установить интегрированную среду разработки (IDE), такую как IntelliJ IDEA или Eclipse.

2 ШАГ Основы JAVA
Гайдов полным полно на YT или даже на этом форуме
Минимальные знания:
  • Переменные, циклы, условия, классы, методы и интерфейсы.
  • Наследование, полиморфизм, инкапсуляция и абстракция.
  • List, Map, Set, Stream API.
3 ШАГ Создаём проект
После установки JDK и среды (буду делать на примере IntelliJ IDEA) залетаем в саму среду, нажимаем New Project, кликаем на Minecraft и видим перед собой вот такую картину:
 2024 05 30 172951284
В Platform Type выбираем Plugin, Platform - Bukkit, Bukkit Platform - Paper, Minecraft Version - 1.20.1, Build System - Maven
Name, Plugin Name, Main Class, GroupID и Artifact ID выбираем сами.
Нажимаем Create и This Window
1717079610550
Среда сама за нас загрузит все необходимые файлы
1717079653358
В основном модуле (переименовал его в PluginTest для понятности) видим следующую картину1717079840182
package org.vuemd.test показывает модулю в какой папке он находится
И сам public class Plugintest (Наш основной модуль)
Теперь добавим extends JavaPlugin и систему событий implements Listener
Сразу добавим регистрацию событий, таких как onEnable (при включении) и onDisable (при выключении)1717080176103

Теперь добавим сами события
1717080225102


Теперь максимально подробное описание кода:

Импорты​

1717080295769

  • import org.bukkit.event.Listener;: Импортирует интерфейс Listener из библиотеки Bukkit. Этот интерфейс используется для обработки событий.
  • import org.bukkit.plugin.java.JavaPlugin;: Импортирует класс JavaPlugin, от которого будет наследоваться наш плагин. Этот класс предоставляет базовую функциональность для создания плагинов Minecraft.

Объявление класса​

1717080532390

  • public class PluginTest: Объявление публичного класса PluginTest.
  • extends JavaPlugin: Класс PluginTest наследует от JavaPlugin, что означает, что он является плагином и может переопределять методы, предоставляемые JavaPlugin.
  • implements Listener: Класс PluginTest реализует интерфейс Listener, что означает, что он может обрабатывать события Minecraft.

Переопределение метода onEnable​

1717080560153

  • @Override: Аннотация указывает, что метод onEnable переопределяет метод из суперкласса JavaPlugin.
  • public void onEnable(): Метод onEnable вызывается при включении плагина. Здесь можно поместить код, который нужно выполнить при загрузке плагина.
  • Внутри метода onEnable​

    • getServer().getPluginManager().registerEvents(this, this);
      • getServer(): Получает текущий сервер.
      • getPluginManager(): Получает менеджер плагинов.
      • registerEvents(this, this): Регистрирует текущий объект this как слушатель событий. Первый параметр указывает на объект, реализующий интерфейс Listener, а второй параметр указывает на текущий экземпляр плагина.
    • getLogger().info("PluginTest включен!");
      • getLogger(): Получает логгер для записи логов.
      • info("PluginTest включен!"): Записывает информационное сообщение в логах, что плагин был включен.
Абсолютно аналогичная тема и в методе onDisable()

Теперь добавим метод с самим приветствием игрока

1717080890036

1717081499765

  • @EventHandler:
    • Это аннотация указывает, что метод будет использоваться для обработки события. В данном случае, метод onPlayerJoin будет вызван, когда произойдет событие PlayerJoinEvent.
  • public void onPlayerJoin(PlayerJoinEvent event):
    • public: Метод публичный и доступен для вызова извне.
    • void: Метод не возвращает никакого значения.
    • onPlayerJoin: Имя метода. Вы можете назвать метод как угодно, но принято давать названия, отражающие тип обрабатываемого события.
    • PlayerJoinEvent event: Параметр метода. PlayerJoinEvent - это класс события, представляющий факт подключения игрока к серверу. Переменная event содержит всю информацию, связанную с этим событием.


Внутри метода​

  • event.getPlayer().sendMessage("Добро пожаловать на сервер!");:
    • event.getPlayer(): Получает объект Player, представляющий игрока, который присоединился к серверу.
    • sendMessage("Добро пожаловать на сервер!"): Отправляет сообщение игроку. В данном случае, игроку отправляется сообщение "Добро пожаловать на сервер!".

Пояснение​

  1. Импорты:
    • EventHandler, Listener, и PlayerJoinEvent импортируются для работы с событиями.
  2. Класс PluginTest:
    • Наследуется от JavaPlugin и реализует интерфейс Listener.
  3. Методы onEnable и onDisable:
    • Переопределяются для выполнения действий при включении и отключении плагина.
  4. Метод onPlayerJoin:
    • Помечен аннотацией @EventHandler, чтобы система событий Bukkit знала, что этот метод должен вызываться при подключении игрока.
    • При подключении игрока метод получает PlayerJoinEvent, из которого извлекается объект Player.
    • Игроку отправляется приветственное сообщение.

Теперь билдим наш плагин, закидываем в папку plugin и запускаем сервер, при заходе видим наше сообщение
1717081328039
Если вы захотите увидеть больше уроков, например по основам Java или уроки на какие-то конкретные темы, пишите мне в Discord - eselfins_ или в ответах на эту тему.

Всем удачи и мира


Сам архив с проектом прикрепил к этому посту (jar файл плагина можно найти в out\artifacts\Test_jar)
 

Attachments

  • 1717080284016.png
    1717080284016.png
    5 KB · Views: 27
  • Test.zip
    11.7 KB · Views: 8
Last edited:
Eselfins
Update 1.0.1
Для тех кто в танке:
Если в plugin.yml указать неправильный путь до основного модуля, в консоли будет улица красных фонарей.
1717083366030
 
bobobo
При создании проекта вы показываете как создаёте проект для мода
1738657158831

Эта путаница может повлечь последствия для новичков. Почему нельзя было показать уже оформленную титульную страницу при создании проекта. Хотя словами вы написали это, но скриншот всё равно сбивает с толку.
 
TopBottom