1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Создание плейсхолдера и установка значения к нему в PlaceholderApi

Тема в разделе "Разработка плагинов для новичков", создана пользователем DackZz2, 31 мар 2024.

  1. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
    Даров, мне нужно, чтобы создался плейсхолдер %rank% и туда вписывалось значение "значение", все это с помощью PlaceholderAPI. Да, я не умею читать документации, помощь мне нужна тут, добрые люди
     
  2. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
  3. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
  4. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    трудновато тебе придется с таким настроем
     
  5. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
    Я не собираюсь плагины писать, просто делаю сервер и нужно было переписать плагин под себя, очень нужна помощь!
     
  6. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Документации более чем достаточно. Никто плагин за тебя писать\переписывать не будет. Можно сделать всё самому, было бы желание.
     
  7. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
    Да я и не прошу плагин за меня писать, я прошу помочь с фрагментом кода для создания плейсхолдера
     
  8. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
  9. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
    Я только что попробовал из этого сделать то что мне нужно. И ничего не работает
     
  10. OJIEKCAHDP

    OJIEKCAHDP Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Показывай код.
     
  11. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
    Код:
    public class EventListener implements Listener {
        String prefix = Main.getInstance().getConfig().getString("ranks." + m + ".prefix");
    
        @EventHandler
        public void onPlayerKill(PlayerDeathEvent event) {
            Player player = event.getEntity();
            Player killer = player.getKiller();
            for (String m : Main.getInstance().getConfig().getConfigurationSection("ranks").getKeys(false)) {
                if (killer.getStatistic(Statistic.PLAYER_KILLS) == Main.getInstance().getConfig().getInt("ranks." + m + ".kills")) {
                    killer.sendMessage(ChatColor.translateAlternateColorCodes('&', Main.getInstance().getConfig().getString("messages.up")));
                    Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), Main.getInstance().getConfig().getString("ranks." + m + ".reward"));
                }
            }
        }
        public String onRequest(OfflinePlayer player, String params) {
            if (params.equalsIgnoreCase("rank")) {
                return prefix;
            }
            return null;
        }
    }
    Смотри, вот сделал как там написано, возвращает prefix, он равен строке "ranks." + m + ".prefix", но дело в том что m зареган в эвенте и я не могу это всё как-то решить.
     
  12. Fizer228

    Fizer228 Участник Пользователь

    Баллы:
    36
    Здраствуйте.
    Мда... Это похоже на случай, когда написал метод и не понимаешь почему он не работает, когда нигде не вызывается...
     
  13. Fizer228

    Fizer228 Участник Пользователь

    Баллы:
    36
    Нужно читать документацию полностью, либо уметь фильтровать информацию и отбрасывать не нужное. Так же не помешало бы иметь понимание кода...

    Итак, твой вариант не работает, так как:
    1. нужно обязательно создать класс с наследованием PlaceholderExpansion, в документации всё расписано от и до
    Код:
    package at.helpch.placeholderapi.example.expansions;
    
    import org.bukkit.OfflinePlayer;
    import me.clip.placeholderapi.expansion.PlaceholderExpansion;
    
    public class SomeExpansion extends PlaceholderExpansion {
    
        @Override
        public String getAuthor() {
            return "someauthor";
        }
     
        @Override
        public String getIdentifier() {
            return "example";
        }
    
        @Override
        public String getVersion() {
            return "1.0.0";
        }
    }
    2. нужно зарегистрировать класс плесхолдера в плагине
    Код:
    package at.helpch.placeholderapi.example
    
    import org.bukkit.Bukkit;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class SomePlugin extends JavaPlugin {
     
        @Override
        public void onEnable() {
            // Small check to make sure that PlaceholderAPI is installed
            if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
                  new SomeExpansion(this).register();
            }
        }
    }
    Так же в документации указано множество примеров для различных случаев, так что советую хотя бы пробежаться и прочитать заголовки в документации(перевести в переводчике, если не можешь сам)
     
  14. Fizer228

    Fizer228 Участник Пользователь

    Баллы:
    36
    далее просто дополняешь класс, как тебе нужно, на этом всё
     
  15. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
    Сделал примерно так же. Плейсхолдер всё равно не работает.
    Код:
    public class PHExpansion extends PlaceholderExpansion {
        public String getIdentifier() {
            return "ranks";
        }
    
        public String getAuthor() {
            return "Author";
        }
    
        public String getVersion() {
            return "v1.0";
        }
    
        public String onRequest(Player p, String identifier) {
            if (p == null)
                return "";
            if (rank == null)
                return "Нет ранга";
            if (identifier.equals("rank"))
                return rank;
            return null;
        }
    }
     
  16. Fizer228

    Fizer228 Участник Пользователь

    Баллы:
    36
    В основном классе всё прописал?

    Код:
    if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
                  new PHExpansion().register();
            }
     
  17. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
    да, все равно не работает
     
  18. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    на всякий упомяну, что плейсхолдеры вводятся в таком формате: %identifier_params%
    пример: %ranks_rank%
     
  19. Автор темы
    DackZz2

    DackZz2 Активный участник Пользователь

    Баллы:
    61
    Имя в Minecraft:
    deni9078
    А просто %rank% нельзя как-то сделать?
     
  20. mirrerror

    mirrerror Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    mirrerror
    нет
     

Поделиться этой страницей