Перейти к содержанию
В разделе "Гайды" запрещено задавать вопросы по Майнкрафту.

[ГАЙД] Как написать свой плагин для сервера майнкрафт?


Jodex

Рекомендуемые сообщения

В теме 24 сообщения

Привет, форумчане!
Давно хотели написать свой плагин? У меня есть для вас решение! Вы уже сегодня сможете написать свой плагин майнкрафт с небольшим функционалом.


Здесь я показываю как сделать свой первый плагин, если вы хотите пойти дальше, вам нужно изучить Java, а также внимательно изучить  SpigotAPI

Поехали!


1 Этап. Скачивание софта.

Лично я рекомендую использовать IntelliJ IDEA - ССЫЛКА

Очень удобный IDE для разработки на Java.
Скачивайте Community версию, она бесплатная!

Запускаем программу. Кликаем на кнопку Plugins
image.png.89e00f54eefb796a0d8bb9c3f9d4f882.png

В поисковике пишем Minecraft Development
image.png.8899c117ce9340837704f3d8c85592cd.png

Устанавливаем, перезапускаем программу.

2 Этап. Подготовка проекта.

После запуска программы вас встречает окно выбора проектов, если у вас это первый проект, то никаких других  не будет.
Справа сверху находим кнопку New Project , кликаем
image.thumb.png.e3b55f92bc1351f9cc14eaacab5c0bfa.png
 

После клика мы видим окно с выбором шаблона проекта. Выбираем Minecraft, далее Spigot Plugin.
Project SDK - это версия Java которую вы хотите выбрать для своего проекта, если это плагин ниже 1.12.2, то выбирайте 1.8, если это плагин выше, то выбирайте 11, в моём случае это 1.8 (Java 8).
image.png.b6d2b1a68b44743d24bd7a12840a7e1c.png

Next
image.png.1873f83b70c909bbf5df51c681f802c9.png

Далее видим, что нам предлагает вписать GroupId, ArtifactId и Version

GroupId - путь ко всем вашим класс файлам плагина.

ArtifactId - название плагина, лучше писать латинскими буквами (желательно без пробелов)

Version - версия плагина

Пример:

image.thumb.png.b9393d687d58683925a72fe5e2a3d354.png

Next

Очень много разных значений, обьясню по порядку.


Plugin Name - название плагина

Main Class Name - путь к класс файлу плагина ( Лучше оставить как есть)

Minecraft Version - версия майнкрафта

Description - описание плагина (Можно оставить пустым)

Authors - разработчики плагина (Можно оставить пустым)

WebSite - сайт плагина (Можно оставить пустым)

Log Prefix - префикс логгирования плагина в консоль (Можно оставить пустым, по умолчанию используется название плагина в качестве префикса)

Load Before - загружать плагин после определённых плагинов (Лучше оставить пустым)

Depend - зависимости плагина (Какие плагины обязательно требуются для работы нашего плагина, например Vault. Лучше оставить пустым, если вы не используете API других плагинов)

Soft Depend - не обязательные зависимости плагина (Какие плагины необязательно требуются для работы нашего плагина)


image.thumb.png.a1ff4460cd2b0a9124b573f06551faf8.png

Next

Project name - название проекта (можно оставить как есть)

Project location - путь к проекту


image.thumb.png.1c7457aec253d7981210d057c88d328b.png

Finish

3 Этап. Написание плагина.

Теперь мы перешли к написанию нашего плагина. Я напишу команду /grant для выдачи доната другому игроку.
Открываю главный класс
 

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public final class TestPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        // Регистрируем команду /grant
        getCommand("grant").setExecutor((sender, command, label, args) -> {
            // Если у отправителя нету прав test.plugin.grant выводим сообщение с ошибкой
            if (!sender.hasPermission("testplugin.grant")) {
                sender.sendMessage("§7[§c§l!§7] §cУ вас недостаточно прав!");
                // Завершаем выполнение
                return true;
            }
            if (args.length == 0 || args.length == 1) {
                // При вводе /grant отправляем сообщение
                // также с /grant (ник) ,так как не все аргументы учтены
                sender.sendMessage("§7[§c§l!§7] §c/grant (ник) (группа)");
                return true;
            }
            // Аргумент 0 отвечает за строку игрока (ник)
            String player = args[0];
            // Player (переменная) = Bukkit.getPlayer(player) - получаем переменную с игроков доступным на сервере
            Player target = Bukkit.getPlayer(player);
            String groupname = "Неизвестно";
            String group = "";
            // Если аргумент 1 (аргумент с группой) = premium, то
            if (args[1].equalsIgnoreCase("premium")) {
                // Перменная group = premium
                group = "premium";
                // Переменная groupname = §3Premium
                groupname = "§3Premium";
            }
            if (args[1].equalsIgnoreCase("vip")) {
                group = "vip";
                groupname = "§6Vip";
            }
            // Если игрок оффлайн, выводим сообщение и пытаемся выдать донат
            if (target == null) {
                sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cДанный игрок не онлайн!");
                sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cПопытка выдачи привилегии...");
                Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + player + " parent add " + group);
                return true;
            }
            // Если аргумент 0 (ник игрока) совпадает с ником отправителя команды, выводим сообщение
            if (target.getName().equals(sender.getName())) {
                sender.sendMessage("§7[§c§l!§7] §cВы не можете выдать привилегию самому себе!");
                return true;
            }
            // Если количество аргументов равняется 2 и аргумент с группой равняется vip или равняется premium и игрок не оффлайн,
            // то выполняем команду через консоль (lp user (ник) parent add (группа)
            if (args.length == 2 && args[1].equalsIgnoreCase("vip") || args[1].equalsIgnoreCase("premium") && target != null) {
                Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + target.getName() + " parent add " + group);
                sender.sendMessage("§7[§c§l!§7] §aВы успешно выдали игроку §c" + target.getName() + " §aпривилегию " + groupname);
                target.sendMessage("§7[§c§l!§7] §aАдминистратор §d" + sender.getName() + " §aвыдал вам привилегию " + groupname);
                return true;
            }
            return true;
        });

    }

    @Override
    public void onDisable() {
    }
}



image.png.59fffc8b3ae0a6ff3853f54967ba3a84.png

Далее открываю plugin.yml и в конце файла пишу

commands:
  grant: {}



После всех манипуляций я могу спокойно скомпилировать свой плагин, для этого мне нужно справа сверху кликнуть на кнопку Maven

image.thumb.png.f58b0c7892e1f069a5ec447de536dc16.png


И кликнуть на package

image.png.f949936b4031977f255b8d84daa3c477.png

И вуаля, мой плагин успешно скомпилировался. Теперь заходим в папку с проектом и видим папку target
image.png.18b141aa1b72d9a5540182175484e96a.png

В ней и лежит мой готовый плагин

image.png.ad2a18403a058addc661bdd0f12c5188.png



На этом всё, спасибо за внимание!

image.png

Изменено пользователем Jodex
Ссылка на комментарий
Поделиться на другие сайты

  • Jodex изменил название на [ГАЙД] Как написать свой плагин для сервера майнкрафт?
6 минут назад, Kelsi сказал:

Для школьников сложно, ты чо

Пускай учатся хотя бы так. Возможно приведу ещё примеров.

Ссылка на комментарий
Поделиться на другие сайты

В 19.07.2022 в 14:35, Jodex сказал:

Привет, форумчане!
Давно хотели написать свой плагин? У меня есть для вас решение! Вы уже сегодня сможете написать свой плагин майнкрафт с небольшим функционалом.


Здесь я показываю как сделать свой первый плагин, если вы хотите пойти дальше, вам нужно изучить Java, а также внимательно изучить  SpigotAPI

Поехали!


1 Этап. Скачивание софта.

Лично я рекомендую использовать IntelliJ IDEA - ССЫЛКА

Очень удобный IDE для разработки на Java.
Скачивайте Community версию, она бесплатная!

Запускаем программу. Кликаем на кнопку Plugins
image.png.89e00f54eefb796a0d8bb9c3f9d4f882.png

В поисковике пишем Minecraft Development
image.png.8899c117ce9340837704f3d8c85592cd.png

Устанавливаем, перезапускаем программу.

2 Этап. Подготовка проекта.

После запуска программы вас встречает окно выбора проектов, если у вас это первый проект, то никаких других  не будет.
Справа сверху находим кнопку New Project , кликаем
image.thumb.png.e3b55f92bc1351f9cc14eaacab5c0bfa.png
 

После клика мы видим окно с выбором шаблона проекта. Выбираем Minecraft, далее Spigot Plugin.
Project SDK - это версия Java которую вы хотите выбрать для своего проекта, если это плагин ниже 1.12.2, то выбирайте 1.8, если это плагин выше, то выбирайте 11, в моём случае это 1.8 (Java 8).
image.png.b6d2b1a68b44743d24bd7a12840a7e1c.png

Next
image.png.1873f83b70c909bbf5df51c681f802c9.png

Далее видим, что нам предлагает вписать GroupId, ArtifactId и Version

GroupId - путь ко всем вашим класс файлам плагина.

ArtifactId - название плагина, лучше писать латинскими буквами (желательно без пробелов)

Version - версия плагина

Пример:

image.thumb.png.b9393d687d58683925a72fe5e2a3d354.png

Next

Очень много разных значений, обьясню по порядку.


Plugin Name - название плагина

Main Class Name - путь к класс файлу плагина ( Лучше оставить как есть)

Minecraft Version - версия майнкрафта

Description - описание плагина (Можно оставить пустым)

Authors - разработчики плагина (Можно оставить пустым)

WebSite - сайт плагина (Можно оставить пустым)

Log Prefix - префикс логгирования плагина в консоль (Можно оставить пустым, по умолчанию используется название плагина в качестве префикса)

Load Before - загружать плагин после определённых плагинов (Лучше оставить пустым)

Depend - зависимости плагина (Какие плагины обязательно требуются для работы нашего плагина, например Vault. Лучше оставить пустым, если вы не используете API других плагинов)

Soft Depend - не обязательные зависимости плагина (Какие плагины необязательно требуются для работы нашего плагина)


image.thumb.png.a1ff4460cd2b0a9124b573f06551faf8.png

Next

Project name - название проекта (можно оставить как есть)

Project location - путь к проекту


image.thumb.png.1c7457aec253d7981210d057c88d328b.png

Finish

3 Этап. Написание плагина.

Теперь мы перешли к написанию нашего плагина. Я напишу команду /grant для выдачи доната другому игроку.
Открываю главный класс
 

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public final class TestPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        // Регистрируем команду /grant
        getCommand("grant").setExecutor((sender, command, label, args) -> {
            // Если у отправителя нету прав test.plugin.grant выводим сообщение с ошибкой
            if (!sender.hasPermission("testplugin.grant")) {
                sender.sendMessage("§7[§c§l!§7] §cУ вас недостаточно прав!");
                // Завершаем выполнение
                return true;
            }
            if (args.length == 0 || args.length == 1) {
                // При вводе /grant отправляем сообщение
                // также с /grant (ник) ,так как не все аргументы учтены
                sender.sendMessage("§7[§c§l!§7] §c/grant (ник) (группа)");
                return true;
            }
            // Аргумент 0 отвечает за строку игрока (ник)
            String player = args[0];
            // Player (переменная) = Bukkit.getPlayer(player) - получаем переменную с игроков доступным на сервере
            Player target = Bukkit.getPlayer(player);
            String groupname = "Неизвестно";
            String group = "";
            // Если аргумент 1 (аргумент с группой) = premium, то
            if (args[1].equalsIgnoreCase("premium")) {
                // Перменная group = premium
                group = "premium";
                // Переменная groupname = §3Premium
                groupname = "§3Premium";
            }
            if (args[1].equalsIgnoreCase("vip")) {
                group = "vip";
                groupname = "§6Vip";
            }
            // Если игрок оффлайн, выводим сообщение и пытаемся выдать донат
            if (target == null) {
                sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cДанный игрок не онлайн!");
                sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cПопытка выдачи привилегии...");
                Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + player + " parent add " + group);
                return true;
            }
            // Если аргумент 0 (ник игрока) совпадает с ником отправителя команды, выводим сообщение
            if (target.getName().equals(sender.getName())) {
                sender.sendMessage("§7[§c§l!§7] §cВы не можете выдать привилегию самому себе!");
                return true;
            }
            // Если количество аргументов равняется 2 и аргумент с группой равняется vip или равняется premium и игрок не оффлайн,
            // то выполняем команду через консоль (lp user (ник) parent add (группа)
            if (args.length == 2 && args[1].equalsIgnoreCase("vip") || args[1].equalsIgnoreCase("premium") && target != null) {
                Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + target.getName() + " parent add " + group);
                sender.sendMessage("§7[§c§l!§7] §aВы успешно выдали игроку §c" + target.getName() + " §aпривилегию " + groupname);
                target.sendMessage("§7[§c§l!§7] §aАдминистратор §d" + sender.getName() + " §aвыдал вам привилегию " + groupname);
                return true;
            }
            return true;
        });

    }

    @Override
    public void onDisable() {
    }
}



image.png.59fffc8b3ae0a6ff3853f54967ba3a84.png

Далее открываю plugin.yml и в конце файла пишу

commands:
  grant: {}



После всех манипуляций я могу спокойно скомпилировать свой плагин, для этого мне нужно справа сверху кликнуть на кнопку Maven

image.thumb.png.f58b0c7892e1f069a5ec447de536dc16.png


И кликнуть на package

image.png.f949936b4031977f255b8d84daa3c477.png

И вуаля, мой плагин успешно скомпилировался. Теперь заходим в папку с проектом и видим папку target
image.png.18b141aa1b72d9a5540182175484e96a.png

В ней и лежит мой готовый плагин

image.png.ad2a18403a058addc661bdd0f12c5188.png



На этом всё, спасибо за внимание!

image.png

Код это конечно отдельное произведение искусства… А вдруг школьники захотят на его основе что то написать?

Ссылка на комментарий
Поделиться на другие сайты

Код тот ещё мусор. Рекомендация использовать InteliJ - высосана из пальца, для ваших детских задач вполне хватит того же Eclipse.

К тому же, раз ты делаешь гайд, зная то, что человек не знает Java на должном уровне, ты бы хотя бы постарался не использовать лямбды. Вынес бы свою команду в отдельный класс. Так же, зачем тебе пустой Override для onDisable() ? Удали его.

 

Цитата

GroupId - путь ко всем вашим класс файлам плагина.

ArtifactId - название плагина, лучше писать латинскими буквами (желательно без пробелов)

Version - версия плагина

Раз уж ты взялся за туториал, объясняй нормально.

GroupID - это название пакета (пространства имён).

Java package — механизм, позволяющий организовать Java классы в пространстве имен аналогично модулям в языке программирования Модула. Java пакеты могут содержаться в сжатом виде в JAR файлах. Обычно в пакеты объединяют классы одной и той же категории, либо предоставляющие сходную функциональность.

ArtifactID - Это вид "имени", который разыменовывается менеджером репозитория в артефакт менеджера репозитория.

Version - версия, но автор, держу в курсе, раз ты сделал туториал, соблюдай хотя бы базовые соглашения. Правильнее было бы версию сделать: 1.0.0

 

Цитата

Main Class Name - путь к класс файлу плагина ( Лучше оставить как есть)

- полный бред. Это название главного класса, который будет загружен.

В 19.07.2022 в 12:35, Jodex сказал:

Minecraft Version - версия майнкрафта

Minecraft Version - это не версия майнкрафт, это версия SpigotAPI, под стандарты которой будет генерироваться проект.

 

p.s: Даже мои попытки сделать видео-уроки были менее провальны. Они несут в себе больше смысла, хоть и звук плохой.

Оставлю пожалуй здесь ссылочку! :>

Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
В 31.07.2022 в 15:57, ulynaxe сказал:

Код тот ещё мусор. Рекомендация использовать InteliJ - высосана из пальца, для ваших детских задач вполне хватит того же Eclipse.

К тому же, раз ты делаешь гайд, зная то, что человек не знает Java на должном уровне, ты бы хотя бы постарался не использовать лямбды. Вынес бы свою команду в отдельный класс. Так же, зачем тебе пустой Override для onDisable() ? Удали его.

 

Раз уж ты взялся за туториал, объясняй нормально.

GroupID - это название пакета (пространства имён).

Java package — механизм, позволяющий организовать Java классы в пространстве имен аналогично модулям в языке программирования Модула. Java пакеты могут содержаться в сжатом виде в JAR файлах. Обычно в пакеты объединяют классы одной и той же категории, либо предоставляющие сходную функциональность.

ArtifactID - Это вид "имени", который разыменовывается менеджером репозитория в артефакт менеджера репозитория.

Version - версия, но автор, держу в курсе, раз ты сделал туториал, соблюдай хотя бы базовые соглашения. Правильнее было бы версию сделать: 1.0.0

 

- полный бред. Это название главного класса, который будет загружен.

Minecraft Version - это не версия майнкрафт, это версия SpigotAPI, под стандарты которой будет генерироваться проект.

 

p.s: Даже мои попытки сделать видео-уроки были менее провальны. Они несут в себе больше смысла, хоть и звук плохой.

Оставлю пожалуй здесь ссылочку! :>

Этот гайд написан для школьников, даже если что-то не понятно, можно спросить здесь. По поводу значений по типу Minecraft Version, как школьник будет понимать, что это версия SpigotAPI? Здесь тебе не форум баккита, это инсайд. Пустой Override я просто забыл удалить, это не повод говорить, что код [Слово удалено системой].

Только что, Jodex сказал:

Этот гайд написан для школьников, даже если что-то не понятно, можно спросить здесь. По поводу значений по типу Minecraft Version, как школьник будет понимать, что это версия SpigotAPI? Здесь тебе не форум баккита, это инсайд. Пустой Override я просто забыл удалить, это не повод говорить, что код [Слово удалено системой].

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

Ссылка на комментарий
Поделиться на другие сайты

  • 4 месяца спустя...

Можешь помочь написать плагин?

Надо чтобы когда игрок нажал на предмет любой главное айди предмета скажи мне потом

Так вот он нажал у не забрался  предмет на 1 отнялся

и выдался ифект а какой ифект я выберу сам

и надо чтобы таких штук было много и на разных предметах

Поможешь?

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Твой гайд это тоже самое что прочитать код который это исполняет. Я уже молчу про Синтаксис и типизации мог бы хотяб о их что нибудь сказать. 

В 19.07.2022 в 14:35, Jodex сказал:

if (target == null) { sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cДанный игрок не онлайн!"); sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cПопытка выдачи привилегии..."); Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + player + " parent add " + group); return true; }

Не легче было использовать else?.

 

 

В 09.08.2022 в 12:04, _MandarinkaTV_ сказал:

А для них есть что то лёгкое?

SkriptLang(Если они не смогут на нём писать скрипты это уже будет беда)

Ссылка на комментарий
Поделиться на другие сайты

  • 4 недели спустя...
В 03.02.2023 в 18:12, келси ожил сказал:

Они на русском писать не могут, какой им skript или denizen

О denizen впервые слышу спс за инфу. А насчёт того что они нормально писать не  могут, ты про меня чтоли? :D

Ссылка на комментарий
Поделиться на другие сайты

  • 10 месяцев спустя...
  • 1 месяц спустя...
  • 9 месяцев спустя...
В 19.07.2022 в 16:35, Jodex сказал:

Привет, форумчане!
Давно хотели написать свой плагин? У меня есть для вас решение! Вы уже сегодня сможете написать свой плагин майнкрафт с небольшим функционалом.


Здесь я показываю как сделать свой первый плагин, если вы хотите пойти дальше, вам нужно изучить Java, а также внимательно изучить  SpigotAPI

Поехали!


1 Этап. Скачивание софта.

Лично я рекомендую использовать IntelliJ IDEA - ССЫЛКА

Очень удобный IDE для разработки на Java.
Скачивайте Community версию, она бесплатная!

Запускаем программу. Кликаем на кнопку Plugins
image.png.89e00f54eefb796a0d8bb9c3f9d4f882.png

В поисковике пишем Minecraft Development
image.png.8899c117ce9340837704f3d8c85592cd.png

Устанавливаем, перезапускаем программу.

2 Этап. Подготовка проекта.

После запуска программы вас встречает окно выбора проектов, если у вас это первый проект, то никаких других  не будет.
Справа сверху находим кнопку New Project , кликаем
image.thumb.png.e3b55f92bc1351f9cc14eaacab5c0bfa.png
 

После клика мы видим окно с выбором шаблона проекта. Выбираем Minecraft, далее Spigot Plugin.
Project SDK - это версия Java которую вы хотите выбрать для своего проекта, если это плагин ниже 1.12.2, то выбирайте 1.8, если это плагин выше, то выбирайте 11, в моём случае это 1.8 (Java 8).
image.png.b6d2b1a68b44743d24bd7a12840a7e1c.png

Next
image.png.1873f83b70c909bbf5df51c681f802c9.png

Далее видим, что нам предлагает вписать GroupId, ArtifactId и Version

GroupId - путь ко всем вашим класс файлам плагина.

ArtifactId - название плагина, лучше писать латинскими буквами (желательно без пробелов)

Version - версия плагина

Пример:

image.thumb.png.b9393d687d58683925a72fe5e2a3d354.png

Next

Очень много разных значений, обьясню по порядку.


Plugin Name - название плагина

Main Class Name - путь к класс файлу плагина ( Лучше оставить как есть)

Minecraft Version - версия майнкрафта

Description - описание плагина (Можно оставить пустым)

Authors - разработчики плагина (Можно оставить пустым)

WebSite - сайт плагина (Можно оставить пустым)

Log Prefix - префикс логгирования плагина в консоль (Можно оставить пустым, по умолчанию используется название плагина в качестве префикса)

Load Before - загружать плагин после определённых плагинов (Лучше оставить пустым)

Depend - зависимости плагина (Какие плагины обязательно требуются для работы нашего плагина, например Vault. Лучше оставить пустым, если вы не используете API других плагинов)

Soft Depend - не обязательные зависимости плагина (Какие плагины необязательно требуются для работы нашего плагина)


image.thumb.png.a1ff4460cd2b0a9124b573f06551faf8.png

Next

Project name - название проекта (можно оставить как есть)

Project location - путь к проекту


image.thumb.png.1c7457aec253d7981210d057c88d328b.png

Finish

3 Этап. Написание плагина.

Теперь мы перешли к написанию нашего плагина. Я напишу команду /grant для выдачи доната другому игроку.
Открываю главный класс
 

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public final class TestPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        // Регистрируем команду /grant
        getCommand("grant").setExecutor((sender, command, label, args) -> {
            // Если у отправителя нету прав test.plugin.grant выводим сообщение с ошибкой
            if (!sender.hasPermission("testplugin.grant")) {
                sender.sendMessage("§7[§c§l!§7] §cУ вас недостаточно прав!");
                // Завершаем выполнение
                return true;
            }
            if (args.length == 0 || args.length == 1) {
                // При вводе /grant отправляем сообщение
                // также с /grant (ник) ,так как не все аргументы учтены
                sender.sendMessage("§7[§c§l!§7] §c/grant (ник) (группа)");
                return true;
            }
            // Аргумент 0 отвечает за строку игрока (ник)
            String player = args[0];
            // Player (переменная) = Bukkit.getPlayer(player) - получаем переменную с игроков доступным на сервере
            Player target = Bukkit.getPlayer(player);
            String groupname = "Неизвестно";
            String group = "";
            // Если аргумент 1 (аргумент с группой) = premium, то
            if (args[1].equalsIgnoreCase("premium")) {
                // Перменная group = premium
                group = "premium";
                // Переменная groupname = §3Premium
                groupname = "§3Premium";
            }
            if (args[1].equalsIgnoreCase("vip")) {
                group = "vip";
                groupname = "§6Vip";
            }
            // Если игрок оффлайн, выводим сообщение и пытаемся выдать донат
            if (target == null) {
                sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cДанный игрок не онлайн!");
                sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cПопытка выдачи привилегии...");
                Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + player + " parent add " + group);
                return true;
            }
            // Если аргумент 0 (ник игрока) совпадает с ником отправителя команды, выводим сообщение
            if (target.getName().equals(sender.getName())) {
                sender.sendMessage("§7[§c§l!§7] §cВы не можете выдать привилегию самому себе!");
                return true;
            }
            // Если количество аргументов равняется 2 и аргумент с группой равняется vip или равняется premium и игрок не оффлайн,
            // то выполняем команду через консоль (lp user (ник) parent add (группа)
            if (args.length == 2 && args[1].equalsIgnoreCase("vip") || args[1].equalsIgnoreCase("premium") && target != null) {
                Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + target.getName() + " parent add " + group);
                sender.sendMessage("§7[§c§l!§7] §aВы успешно выдали игроку §c" + target.getName() + " §aпривилегию " + groupname);
                target.sendMessage("§7[§c§l!§7] §aАдминистратор §d" + sender.getName() + " §aвыдал вам привилегию " + groupname);
                return true;
            }
            return true;
        });

    }

    @Override
    public void onDisable() {
    }
}



image.png.59fffc8b3ae0a6ff3853f54967ba3a84.png

Далее открываю plugin.yml и в конце файла пишу

commands:
  grant: {}



После всех манипуляций я могу спокойно скомпилировать свой плагин, для этого мне нужно справа сверху кликнуть на кнопку Maven

image.thumb.png.f58b0c7892e1f069a5ec447de536dc16.png


И кликнуть на package

image.png.f949936b4031977f255b8d84daa3c477.png

И вуаля, мой плагин успешно скомпилировался. Теперь заходим в папку с проектом и видим папку target
image.png.18b141aa1b72d9a5540182175484e96a.png

В ней и лежит мой готовый плагин

image.png.ad2a18403a058addc661bdd0f12c5188.png



На этом всё, спасибо за внимание!

image.png

Мля, JetBrain запретило на РФ скачивание, я еле как через VPN качнул саму прогу,а Minecraft Developer я не могу т.к. он тгогже пишет что вы из Раши дурик мы вам не продадим это, помогите пж, VPN как прогу найти не могу на пк.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...

Что делать если пишет "Plugin "Minecraft Development" was not installed: We are sorry, but we are currently unable to provide our products or services to you due to export control regulations.", когда я устанавливаю плагин Minecraft Development?

Ссылка на комментарий
Поделиться на другие сайты

22 минуты назад, MrPalel сказал:

Что делать если пишет "Plugin "Minecraft Development" was not installed: We are sorry, but we are currently unable to provide our products or services to you due to export control regulations.", когда я устанавливаю плагин Minecraft Development?

переехать в другую страну (если ты понимаешь о чем я)

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...
В 04.03.2025 в 20:11, MrPalel сказал:

Что делать если пишет "Plugin "Minecraft Development" was not installed: We are sorry, but we are currently unable to provide our products or services to you due to export control regulations.", когда я устанавливаю плагин Minecraft Development?

Зайди на официальную страницу этого плагина и скачай его себе на комп, а потом в самом приложении установи этот плагин вручную по поиску в директориях пк.

Ссылка на комментарий
Поделиться на другие сайты

17 часов назад, _MandarinkaTV_ сказал:

Зайди на официальную страницу этого плагина и скачай его себе на комп, а потом в самом приложении установи этот плагин вручную по поиску в директориях пк.

тебе код 451 возвращает с той же надписью

Ссылка на комментарий
Поделиться на другие сайты

20 часов назад, Shomen сказал:

тебе код 451 возвращает с той же надписью

В таком случае используй впн в виде расширения для браузера, не буду писать какой конкретно, ибо реклама :(

Ссылка на комментарий
Поделиться на другие сайты

В 19.07.2022 в 12:35, Jodex сказал:

Привет, форумчане!
Давно хотели написать свой плагин? У меня есть для вас решение! Вы уже сегодня сможете написать свой плагин майнкрафт с небольшим функционалом.


Здесь я показываю как сделать свой первый плагин, если вы хотите пойти дальше, вам нужно изучить Java, а также внимательно изучить  SpigotAPI

Поехали!


1 Этап. Скачивание софта.

Лично я рекомендую использовать IntelliJ IDEA - ССЫЛКА

Очень удобный IDE для разработки на Java.
Скачивайте Community версию, она бесплатная!

Запускаем программу. Кликаем на кнопку Plugins
image.png.89e00f54eefb796a0d8bb9c3f9d4f882.png

В поисковике пишем Minecraft Development
image.png.8899c117ce9340837704f3d8c85592cd.png

Устанавливаем, перезапускаем программу.

2 Этап. Подготовка проекта.

После запуска программы вас встречает окно выбора проектов, если у вас это первый проект, то никаких других  не будет.
Справа сверху находим кнопку New Project , кликаем
image.thumb.png.e3b55f92bc1351f9cc14eaacab5c0bfa.png
 

После клика мы видим окно с выбором шаблона проекта. Выбираем Minecraft, далее Spigot Plugin.
Project SDK - это версия Java которую вы хотите выбрать для своего проекта, если это плагин ниже 1.12.2, то выбирайте 1.8, если это плагин выше, то выбирайте 11, в моём случае это 1.8 (Java 8).
image.png.b6d2b1a68b44743d24bd7a12840a7e1c.png

Next
image.png.1873f83b70c909bbf5df51c681f802c9.png

Далее видим, что нам предлагает вписать GroupId, ArtifactId и Version

GroupId - путь ко всем вашим класс файлам плагина.

ArtifactId - название плагина, лучше писать латинскими буквами (желательно без пробелов)

Version - версия плагина

Пример:

image.thumb.png.b9393d687d58683925a72fe5e2a3d354.png

Next

Очень много разных значений, обьясню по порядку.


Plugin Name - название плагина

Main Class Name - путь к класс файлу плагина ( Лучше оставить как есть)

Minecraft Version - версия майнкрафта

Description - описание плагина (Можно оставить пустым)

Authors - разработчики плагина (Можно оставить пустым)

WebSite - сайт плагина (Можно оставить пустым)

Log Prefix - префикс логгирования плагина в консоль (Можно оставить пустым, по умолчанию используется название плагина в качестве префикса)

Load Before - загружать плагин после определённых плагинов (Лучше оставить пустым)

Depend - зависимости плагина (Какие плагины обязательно требуются для работы нашего плагина, например Vault. Лучше оставить пустым, если вы не используете API других плагинов)

Soft Depend - не обязательные зависимости плагина (Какие плагины необязательно требуются для работы нашего плагина)


image.thumb.png.a1ff4460cd2b0a9124b573f06551faf8.png

Next

Project name - название проекта (можно оставить как есть)

Project location - путь к проекту


image.thumb.png.1c7457aec253d7981210d057c88d328b.png

Finish

3 Этап. Написание плагина.

Теперь мы перешли к написанию нашего плагина. Я напишу команду /grant для выдачи доната другому игроку.
Открываю главный класс
 

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public final class TestPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        // Регистрируем команду /grant
        getCommand("grant").setExecutor((sender, command, label, args) -> {
            // Если у отправителя нету прав test.plugin.grant выводим сообщение с ошибкой
            if (!sender.hasPermission("testplugin.grant")) {
                sender.sendMessage("§7[§c§l!§7] §cУ вас недостаточно прав!");
                // Завершаем выполнение
                return true;
            }
            if (args.length == 0 || args.length == 1) {
                // При вводе /grant отправляем сообщение
                // также с /grant (ник) ,так как не все аргументы учтены
                sender.sendMessage("§7[§c§l!§7] §c/grant (ник) (группа)");
                return true;
            }
            // Аргумент 0 отвечает за строку игрока (ник)
            String player = args[0];
            // Player (переменная) = Bukkit.getPlayer(player) - получаем переменную с игроков доступным на сервере
            Player target = Bukkit.getPlayer(player);
            String groupname = "Неизвестно";
            String group = "";
            // Если аргумент 1 (аргумент с группой) = premium, то
            if (args[1].equalsIgnoreCase("premium")) {
                // Перменная group = premium
                group = "premium";
                // Переменная groupname = §3Premium
                groupname = "§3Premium";
            }
            if (args[1].equalsIgnoreCase("vip")) {
                group = "vip";
                groupname = "§6Vip";
            }
            // Если игрок оффлайн, выводим сообщение и пытаемся выдать донат
            if (target == null) {
                sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cДанный игрок не онлайн!");
                sender.sendMessage(ChatColor.RED + "§7[§c§l!§7] §cПопытка выдачи привилегии...");
                Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + player + " parent add " + group);
                return true;
            }
            // Если аргумент 0 (ник игрока) совпадает с ником отправителя команды, выводим сообщение
            if (target.getName().equals(sender.getName())) {
                sender.sendMessage("§7[§c§l!§7] §cВы не можете выдать привилегию самому себе!");
                return true;
            }
            // Если количество аргументов равняется 2 и аргумент с группой равняется vip или равняется premium и игрок не оффлайн,
            // то выполняем команду через консоль (lp user (ник) parent add (группа)
            if (args.length == 2 && args[1].equalsIgnoreCase("vip") || args[1].equalsIgnoreCase("premium") && target != null) {
                Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "lp user " + target.getName() + " parent add " + group);
                sender.sendMessage("§7[§c§l!§7] §aВы успешно выдали игроку §c" + target.getName() + " §aпривилегию " + groupname);
                target.sendMessage("§7[§c§l!§7] §aАдминистратор §d" + sender.getName() + " §aвыдал вам привилегию " + groupname);
                return true;
            }
            return true;
        });

    }

    @Override
    public void onDisable() {
    }
}



image.png.59fffc8b3ae0a6ff3853f54967ba3a84.png

Далее открываю plugin.yml и в конце файла пишу

commands:
  grant: {}



После всех манипуляций я могу спокойно скомпилировать свой плагин, для этого мне нужно справа сверху кликнуть на кнопку Maven

image.thumb.png.f58b0c7892e1f069a5ec447de536dc16.png


И кликнуть на package

image.png.f949936b4031977f255b8d84daa3c477.png

И вуаля, мой плагин успешно скомпилировался. Теперь заходим в папку с проектом и видим папку target
image.png.18b141aa1b72d9a5540182175484e96a.png

В ней и лежит мой готовый плагин

image.png.ad2a18403a058addc661bdd0f12c5188.png



На этом всё, спасибо за внимание!

image.png

На каком языке программирования написан код? Хочу выучить

 

Ссылка на комментарий
Поделиться на другие сайты

я пишу в поиск и скачиваю майн но пишет "Plugin "Minecraft Development" was not installed: We are sorry, but we are currently unable to provide our products or services to you due to export control regulations."

я хз что делать,помогите,у меня вообще не чего не скачивается в вкладке Plugins

и в других вкладках

 

Ссылка на комментарий
Поделиться на другие сайты

12 часов назад, nuzyak сказал:

я пишу в поиск и скачиваю майн но пишет "Plugin "Minecraft Development" was not installed: We are sorry, but we are currently unable to provide our products or services to you due to export control regulations."

я хз что делать,помогите,у меня вообще не чего не скачивается в вкладке Plugins

и в других вкладках

 

"переехать" из россии

Ссылка на комментарий
Поделиться на другие сайты

  • 10 месяцев спустя...
В 12.01.2023 в 06:34, oldiBerezko сказал:

Не легче было использовать else?.

Читаемость ухудшает :>

В 27.03.2025 в 21:11, the7epouH сказал:

На каком языке программирования написан код? Хочу выучить

 

Java

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...