Скачать ТУТОРИАЛ Добавляем свои Placeholders в ваш плагин. | McLeak.ru
Добавляем свои Placeholders в ваш плагин.

ТУТОРИАЛ Добавляем свои Placeholders в ваш плагин.


Поддерживаемые версии
  1. 1.8.9
  2. 1.9.2
  3. 1.10.1
  4. 1.11.2
  5. 1.12.2
  6. 1.13.1
  7. 1.14.4
  8. 1.15.2
  9. 1.16.5
  10. 1.17.1
  11. 1.18.2
  12. 1.19.0
Всех приветствую в этом гайде и туторе, по добавлению поддержки плейсхолдеров в ваш плагин.

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


Шаг первый: Добавление PlaceholderAPI в проект.

Скачиваем оригинальный образ PlaceholderAPI, это нам надо чтобы добавить его библиотеки в плагин.
После, нам надо IDE указать путь до jar файла.

Eclipse:
1. Нажмите правой кнопкой мыши на вашем проекте и выберите пункт Properties
2. В открывшемся окне слева есть меню, выберите в нем пункт Java Build Path
3. Выберите вкладку Libraries
4. Нажмите на кнопку Add External JARs…
5. В открывшемся окне выберите файл c вашей библиотекой и нажмите OK
6. После нажмите кнопку OK ещё раз.

IDEA:
1. В открытом проекте, нажимаем File и выбираем Project Structure
2. Открываем вкладку Libraries
3. Нажимаем + -> Java
4. Указываем путь к jar файлу.
5. Нажимаем OK.
6. Нажимаем Apply, OK.
Шаг закончен, вы добавили библиотеки PlaceholderAPI в ваш проект, пошли дальше.


Шаг второй: Создание класса плейсхолдеров.

Есть множество вариантов "тяп ляп сделал" плейсхолдера, но для новичков и остальных я советую делать отдельный класс для удобства.

Java:
package io.slobod.tutorial;

import me.clip.placeholderapi.expansion.PlaceholderExpansion;

public class Placeholders extends PlaceholderExpansion {
 

 
}
Класс наследуется от PlaceholderExpansion.

Дальше, вам требуется добавить в него несколько методов:
Java:
package io.slobod.tutorial;

import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.entity.Player;

public class Placeholders extends PlaceholderExpansion {

    @Override
    // "префикс" вашего плейсхолдера, общепринято писать название плагина %tutorial_(params)%
    // Более научно, это строчка между первого % до _.
    public String getIdentifier() {
        return "tutorial";
    }

    @Override
    // Тут указываем автора (вы)
    public String getAuthor() {
        return "Slobodyan";
    }

    @Override
    // Тут версию, но чаще всего она бесполезна для ваших целей. Тут уже это для eCloud.
    public String getVersion() {
        return "1.0";
    }

    @Override
    public boolean persist() {
        return true;
    }

    @Override
    // Тут можно проверять наличие плагинов и т.п., в нашем случаи ставим просто на true;
    public boolean canRegister() {
        return true;
    }
 
    @Override
    // Тут мы и будет работать дальше.
    public String onPlaceholderRequest(final Player player, final String params) {
        return null;
    }

    //Можно использовать так же onRequest(OfflinePlayer player, String params)
 
}

Как раз таки, все плейсхолдеры мы будет "указывать" в методе onPlaceholderRequest.

А сейчас ШоЗа параметры мы передаем ему.
player: Игрок, от которого мы берем данные.
params: Ключ, от которого мы будем понимать, какую строчку с информацией нам надо вернуть.

Первым делом, делаем простую проверку от NullPointerException. Так как мы тут используем Player, и метод может передать нам null.
Java:
public String onPlaceholderRequest(final Player player, final String params) {
        if (player == null) {
            return null;
        }
}

Дальше, мы будем проверяем наш ключик params, кем он является, и возвращаем строчку (String).
Java:
public String onPlaceholderRequest(final Player player, final String params) {
        if (player == null) {
            return null;
        }
        // Сравниваем ключик на %{ind}_isOp%
        if (params.equals("isOp")) {
            return player.isOp() + "";
        }
        if (params.equals("isOnline")) {
            return player.isOnline() + "";
        }
}

Проверку params можно записать через switch.
Java:
public String onPlaceholderRequest(final Player player, final String params) {
        if (player == null) {
            return null;
        }
        switch (params) {
            case "isOp": return player.isOp() + "";
            case "isOnline": return player.isOnline() + "";
        }
}

Молодцы, вы сделали 90% всего дела. Осталось зарегистрировать плейсхолдеры при запуске плагина.

Шаг третий: Регистрация нашего класса.
Java:
@Override
public void onEnable() {
    // Проверяем, запущен ли на сервере PlaceholderAPI
    if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) {
        // Регистрируем наш класс.
        new Placeholders().register();
    }
}

Так-же, я советую прописать ещё unregister в onDisable(), особенно в связке PlugManX
Java:
@Override
public void onDisable() {
    new Placeholders().unregister();
}


Шаг четвертый: plugin.yml

Заходим в ваш plugin.yml и добавляем строчки:
Код:
depend:
- PlaceholderAPI


Шаг пятый: Как его использовать.

Достаточно все просто, плейсхолдер плагина выглядит так: %identifier_params%, в нашем случае это %tutorial_isOp% и %tutorial_isOnline%

Эпилог: Данный гайд я написал, ибо много кто хочет добавить плейсхолдеры в свой плагин для вывода их где можно и где нельзя, думаю, эта "статья" для вас была полезной, если вы тот самый пользователь-новичок, который искал данный гайд.
  • Мне нравиться
Реакции: DreamMySorrow и x666-666
Автор
rootkit
Просмотры
1 130
Первый выпуск
Обновление
Оценка
0,00 звёзд 0 оценок

Другие ресурсы пользователя rootkit