Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Проблема с изменением ника в Tab

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

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

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Присоединяю игроку в табе префикс, но если задать более 1 цвета, то вылетает ошибка. Префикс с кодами цветов читается из конфига. Бывало ли такое у кого-то?
     
  2. Хостинг MineCraft
    <
  3. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Ошибка
    Код:
    [22:22:09] [Server thread/ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'tag' in plugin Tag v1.0
       at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:175) ~[spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:706) ~[spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:984) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:829) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:65) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:147) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.ServerConnection.c(ServerConnection.java:77) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:700) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:273) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:562) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:469) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
    Caused by: java.lang.IllegalArgumentException: Player list names can only be a maximum of 16 characters long
       at org.bukkit.craftbukkit.v1_7_R1.entity.CraftPlayer.setPlayerListName(CraftPlayer.java:180) ~[spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       at me.konfyciu.Tag.Tag.onCommand(Guilds.java:83) ~[?:?]
       at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot.jar:git-Spigot-1.7.2-R0.3-122-gb58e277]
       ... 13 more
    
    [DOUBLEPOST=1397416455,1397415905][/DOUBLEPOST]Кажется, что это вызвано тем, что префикс с ником превышают лимит в 16 символов
    Caused by: java.lang.IllegalArgumentException: Player list names can only be a maximum of 16 characters long
    Но, ведь есть плагины, которые преодолевают этот порог! ColoredTags этому пример.
     
    HoShiMin нравится это.
  4. Andrew Panassiouk

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

    Баллы:
    68
    Skype:
    deathwalker3314
    Имя в Minecraft:
    _TrueLecter_
    Код:
      public static void updateTab(Player player)
      {
        if (Configuration.changeTabNames)
        {
          player.setPlayerListName(null);
        }
        else
        {
          String playerName = player.getName();
          if (player.getPlayerListName().equals(playerName)) {
            player.setPlayerListName("§f" + (playerName.length() > 14 ? playerName.substring(0, 14) : playerName));
          }
        }
      }
    Тут как бы идет контроль за длиной строки. Это кусок ColoredTags, да.
     
  5. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Похоже на это, но я не понимаю, как обойти 16-ти символьный лимит?
     
  6. Andrew Panassiouk

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

    Баллы:
    68
    Skype:
    deathwalker3314
    Имя в Minecraft:
    _TrueLecter_
    Никак. Если в клиенте строка с именем игрока объявляется на размер 16 символов, то больше ее не сделать. Только копатся в клиенте.
     
  7. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Эмммм, у меня на сервере 1.6.4 с помощью ColoredTags (префикс + ник) > 16 символов
     
  8. Andrew Panassiouk

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

    Баллы:
    68
    Skype:
    deathwalker3314
    Имя в Minecraft:
    _TrueLecter_
    И как это в табе выглядит? Ибо для версии 1.6.4 идет такая-же проверка. Или же очень похоже, что реализируется это через Scoreboard'овские фичи (из версии 1.6.4 код):
    Код:
    private static void setPrefix(Player player, String prefix, String suffix)
      {
        if (prefix == null) {
          prefix = "";
        }
        if (suffix == null) {
          suffix = "";
        }
        prefix = AsciiSymbols.placeholdersToSymbols(prefix);
        suffix = AsciiSymbols.placeholdersToSymbols(suffix);
        if (prefix.length() > 16) {
          prefix = prefix.substring(0, 16);
        }
        if (suffix.length() > 16) {
          suffix = suffix.substring(0, 16);
        }
        String teamName = getTeamName(prefix, suffix);
        if (teamName.length() > 16) {
          teamName = teamName.substring(0, 16);
        }
        Team t = sb.getTeam(teamName);
        if (t == null)
        {
          t = sb.registerNewTeam(teamName);
          t.setPrefix(prefix);
          t.setSuffix(suffix);
          t.setCanSeeFriendlyInvisibles(false);
        }
        t.addPlayer(player);
      }
      private static String getTeamName(String prefix, String suffix)
      {
        StringBuilder sb = new StringBuilder("CT");
       
        prefix = AsciiSymbols.toAscii(prefix);
        suffix = AsciiSymbols.toAscii(suffix);
        if (prefix.length() > 7) {
          sb.append(prefix.substring(0, 7));
        } else {
          sb.append(prefix);
        }
        if (suffix.length() > 7) {
          sb.append(suffix.substring(0, 7));
        } else {
          sb.append(suffix);
        }
        return sb.toString();
      }
    
     
    ПриветОтЛайки нравится это.
  9. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    1)В табе обычный ник, ибо строка изменения ника в табе выдает ошибку и не выполняется.
    2)Как Scoreboard влияет на Tab? До меня это вообще никаким боком не доходит!
     
  10. Andrew Panassiouk

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

    Баллы:
    68
    Skype:
    deathwalker3314
    Имя в Minecraft:
    _TrueLecter_
    Можно скрин этого чуда? Того, которое работает?
     
  11. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Ты имеешь ввиду код?
     
  12. Andrew Panassiouk

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

    Баллы:
    68
    Skype:
    deathwalker3314
    Имя в Minecraft:
    _TrueLecter_
    Не код, а то, когда "на сервере 1.6.4 с помощью ColoredTags (префикс + ник) > 16 символов"
     
  13. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    секунду[DOUBLEPOST=1397424515,1397424192][/DOUBLEPOST]Вот-с Безымянный.PNG [DOUBLEPOST=1397424596][/DOUBLEPOST]И если рядом стоит ник другого игрока, то этот ник "налезает" на него.
     
  14. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Если бы ты знал, что Scoreboard может ставить префиксы и суффиксы игрокам, которые состоят в командах...
     
  15. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Можно немного подробнее или ссылку?
     
  16. Andrew Panassiouk

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

    Баллы:
    68
    Skype:
    deathwalker3314
    Имя в Minecraft:
    _TrueLecter_
    konfyciu98,
    Код:
    Team t = sb.getTeam(teamName);
        if (t == null)
        {
          t = sb.registerNewTeam(teamName);
          t.setPrefix(prefix);
          t.setSuffix(suffix);
          t.setCanSeeFriendlyInvisibles(false);
        }
        t.addPlayer(player);
     
  17. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Тааак, не робит :( Tab такой же :( Где я накосячил?
    Код:
      @EventHandler
       public void onJoin(PlayerJoinEvent e) {
         Player p = e.getPlayer();
        ScoreboardManager manager = Bukkit.getScoreboardManager();
        Scoreboard sb = manager.getNewScoreboard();   
        Team t = sb.getTeam("Gas");
        if (t == null)
        {
        t = sb.registerNewTeam("Gas");
        t.setPrefix("[Ololo]");
        t.setSuffix("Ah");
        t.setCanSeeFriendlyInvisibles(true);
        }
        t.addPlayer(p);
    
       }
    
     
  18. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ты для каждого создаёшь отдельную ОчкоДоску
     
  19. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    До меня туго доходит.
    Код:
        ScoreboardManager manager = Bukkit.getScoreboardManager();
        Scoreboard sb = manager.getNewScoreboard();  
        Team t = sb.getTeam("Gas");
    
    Это надо вынести за метод?[DOUBLEPOST=1397488076,1397484971][/DOUBLEPOST]Сейчас создал отдельную пробную команда, вписал туда это
    Код:
                  ScoreboardManager manager = Bukkit.getScoreboardManager();
                   Scoreboard board = manager.getNewScoreboard();
                   Team team = board.registerNewTeam(args[1]);
                   team.setAllowFriendlyFire(false);
                   team.setCanSeeFriendlyInvisibles(false);
                   team.setPrefix(complete);
                   team.addPlayer(player);
    
    Нигде префикса нет! Ни в табе, ни в чате(хотя в EssentialsChat добавил {TEAMNAME} и {TEAMPREFIX}), ни над головой!
     
  20. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Извините за глупый ответ, но я тоже ничего не видел :\ (мда уж кодеры пошли)
     
    ПриветОтЛайки нравится это.
  21. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Я понимаю, что я не айс, но что делаю не так?
     

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