Привет, форумчане!
Давно хотели написать свой плагин? У меня есть для вас решение! Вы уже сегодня сможете написать свой плагин майнкрафт с небольшим функционалом. Здесь я показываю как сделать свой первый плагин, если вы хотите пойти дальше, вам нужно изучить Java, а также внимательно изучить SpigotAPI
Поехали! 1 Этап. Скачивание софта.
Лично я рекомендую использовать IntelliJ IDEA - ССЫЛКА
Очень удобный IDE для разработки на Java. Скачивайте Community версию, она бесплатная!
Запускаем программу. Кликаем на кнопку Plugins
В поисковике пишем Minecraft Development
Устанавливаем, перезапускаем программу. 2 Этап. Подготовка проекта.
После запуска программы вас встречает окно выбора проектов, если у вас это первый проект, то никаких других не будет.
Справа сверху находим кнопку New Project , кликаем
После клика мы видим окно с выбором шаблона проекта. Выбираем Minecraft, далее Spigot Plugin. Project SDK - это версия Java которую вы хотите выбрать для своего проекта, если это плагин ниже 1.12.2, то выбирайте 1.8, если это плагин выше, то выбирайте 11, в моём случае это 1.8 (Java 8).
Next
Далее видим, что нам предлагает вписать GroupId, ArtifactId и Version GroupId - путь ко всем вашим класс файлам плагина. ArtifactId - название плагина, лучше писать латинскими буквами (желательно без пробелов) Version - версия плагина
Пример: Next
Очень много разных значений, обьясню по порядку. Plugin Name - название плагина
Main Class Name - путь к класс файлу плагина ( Лучше оставить как есть)
Minecraft Version - версия майнкрафта
Description - описание плагина (Можно оставить пустым)
Authors - разработчики плагина (Можно оставить пустым)
WebSite - сайт плагина (Можно оставить пустым)
Log Prefix - префикс логгирования плагина в консоль (Можно оставить пустым, по умолчанию используется название плагина в качестве префикса)
Load Before - загружать плагин после определённых плагинов (Лучше оставить пустым)
Depend - зависимости плагина (Какие плагины обязательно требуются для работы нашего плагина, например Vault. Лучше оставить пустым, если вы не используете API других плагинов)
Soft Depend - не обязательные зависимости плагина (Какие плагины необязательно требуются для работы нашего плагина) Next Project name - название проекта (можно оставить как есть)
Project location - путь к проекту 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() {
}
}
Далее открываю plugin.yml и в конце файла пишу
commands:
grant: {}
После всех манипуляций я могу спокойно скомпилировать свой плагин, для этого мне нужно справа сверху кликнуть на кнопку Maven
И кликнуть на package
И вуаля, мой плагин успешно скомпилировался. Теперь заходим в папку с проектом и видим папку target
В ней и лежит мой готовый плагин На этом всё, спасибо за внимание!