Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

DackZz2

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
deni9078
Даров, мне нужно, чтобы создался плейсхолдер %rank% и туда вписывалось значение "значение", все это с помощью PlaceholderAPI. Да, я не умею читать документации, помощь мне нужна тут, добрые люди
 
Я не собираюсь плагины писать, просто делаю сервер и нужно было переписать плагин под себя, очень нужна помощь!
Документации более чем достаточно. Никто плагин за тебя писать\переписывать не будет. Можно сделать всё самому, было бы желание.
 
Документации более чем достаточно. Никто плагин за тебя писать\переписывать не будет. Можно сделать всё самому, было бы желание.
Да я и не прошу плагин за меня писать, я прошу помочь с фрагментом кода для создания плейсхолдера
 
Я только что попробовал из этого сделать то что мне нужно. И ничего не работает
 
Код:
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 зареган в эвенте и я не могу это всё как-то решить.
 
Код:
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 зареган в эвенте и я не могу это всё как-то решить.
Здраствуйте.
Мда... Это похоже на случай, когда написал метод и не понимаешь почему он не работает, когда нигде не вызывается...
 
Нужно читать документацию полностью, либо уметь фильтровать информацию и отбрасывать не нужное. Так же не помешало бы иметь понимание кода...

Итак, твой вариант не работает, так как:
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();
        }
    }
}

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

Итак, твой вариант не работает, так как:
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();
        }
    }
}

Так же в документации указано множество примеров для различных случаев, так что советую хотя бы пробежаться и прочитать заголовки в документации(перевести в переводчике, если не можешь сам)
далее просто дополняешь класс, как тебе нужно, на этом всё
 
Нужно читать документацию полностью, либо уметь фильтровать информацию и отбрасывать не нужное. Так же не помешало бы иметь понимание кода...

Итак, твой вариант не работает, так как:
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();
        }
    }
}

Так же в документации указано множество примеров для различных случаев, так что советую хотя бы пробежаться и прочитать заголовки в документации(перевести в переводчике, если не можешь сам)
Сделал примерно так же. Плейсхолдер всё равно не работает.
Код:
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;
    }
}
 
Сделал примерно так же. Плейсхолдер всё равно не работает.
Код:
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;
    }
}
В основном классе всё прописал?

Код:
if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
              new PHExpansion().register();
        }
 

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

Назад
Верх