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

Помогите Установка префикса пакетами

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

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

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

    Баллы:
    66
    Как установить префикс над игроком пакетами?
     
  2. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
  3. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Если тебе надо вытаскивать префиксы из плагина с пермишенами(PermissionsEx или LuckPerms) и ставить их над головами игроков (по типу как в NameTagEdit), то как-то так
    PHP:
        public final ArrayList<Stringsent = new ArrayList<>();

        private 
    void createScoreboard(Player p) {
            
    Scoreboard scoreboard = new Scoreboard();
            
    HashMap<StringHashMap<StringString>> pl = new HashMap<>();
            for (
    Player pOnline Bukkit.getOnlinePlayers()) {
                
    String prefix getChat().getPlayerPrefix(pOnline).replace("&""§");
                
    String suffix getChat().getPlayerSuffix(pOnline).replace("&""§");
                if (
    prefix.length() > 16) {
                    
    prefix prefix.substring(016);
                }
                if (
    suffix.length() > 16) {
                    
    suffix suffix.substring(016);
                }
                if (
    suffix.length() == 0)
                    
    suffix "";
                else if (
    suffix.toCharArray()[suffix.length() - 1] != ' ') {
                    
    String nSuffix suffix suffix.substring(suffix.length()) + " ";
                    if (
    nSuffix.length() > 16)
                        
    nSuffix nSuffix.substring(016);
                    
    suffix nSuffix;
                }
                
    HashMap<StringStringmap = new HashMap<>();
                
    map.put("prefix"prefix);
                
    map.put("suffix"suffix);
                
    pl.put(pOnline.getName(), map);
            }
            for (
    String s pl.keySet()) {
                
    String teamName "_prefix";
                
    ScoreboardTeam team scoreboard.getTeam(teamName);
                if (
    team == null) {
                    
    team scoreboard.createTeam(teamName);
                    
    team.setPrefix(pl.get(s).get("prefix"));
                    
    team.setSuffix(pl.get(s).get("suffix"));
                }
                
    PacketPlayOutScoreboardTeam removeTeam = new PacketPlayOutScoreboardTeam(team1);
                
    PacketPlayOutScoreboardTeam createTeam = new PacketPlayOutScoreboardTeam(team0);
                
    PacketPlayOutScoreboardTeam addPlayer = new PacketPlayOutScoreboardTeam(teamCollections.singleton(s), 3);
                
    PacketPlayOutScoreboardTeam updateTeam = new PacketPlayOutScoreboardTeam(team2);
                if (!
    sent.contains(teamName)) {
                    
    sendPacket(pcreateTeam);
                    
    sendPacket(paddPlayer);
                    
    sendPacket(pupdateTeam);
                    
    sent.add(teamName);
                }
                
    sendPacket(premoveTeam);
                
    sendPacket(pcreateTeam);
                
    sendPacket(paddPlayer);
                
    sendPacket(pupdateTeam);
            }
        }
    PHP:
        private void sendPacket(Player p, Packet<?packet) {
            ((
    CraftPlayerp).getHandle().playerConnection.sendPacket(packet);
        }
    Префиксы можешь получать из Vault API
    PHP:
        public Chat getChat() {
            
    RegisteredServiceProvider<Chatrsp getServer().getServicesManager().getRegistration(Chat.class);
            return 
    rsp != null rsp.getProvider() : null;
        }
    Писал на 1.12.2. На других версиях может быть все по другому
    Я привел тебе пример с пакетами, используя NMS, а @alexandrage привел пример с использованием Bukkit API. Какой способ использовать - решать тебе
     
    Последнее редактирование: 18 окт 2020

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