- Баллы
- 123
- Имя в Minecraft
- konfyciu
Присоединяю игроку в табе префикс, но если задать более 1 цвета, то вылетает ошибка. Префикс с кодами цветов читается из конфига. Бывало ли такое у кого-то?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
[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
ColoredTags этому пример.
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));
}
}
}
Похоже на это, но я не понимаю, как обойти 16-ти символьный лимит?Код: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, да.
Никак. Если в клиенте строка с именем игрока объявляется на размер 16 символов, то больше ее не сделать. Только копатся в клиенте.Похоже на это, но я не понимаю, как обойти 16-ти символьный лимит?
Эмммм, у меня на сервере 1.6.4 с помощью ColoredTags (префикс + ник) > 16 символовНикак. Если в клиенте строка с именем игрока объявляется на размер 16 символов, то больше ее никак не сделать. Только копатся в клиенте.
И как это в табе выглядит? Ибо для версии 1.6.4 идет такая-же проверка. Или же очень похоже, что реализируется это через Scoreboard'овские фичи (из версии 1.6.4 код):Эмммм, у меня на сервере 1.6.4 с помощью ColoredTags (префикс + ник) > 16 символов
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();
}
1)В табе обычный ник, ибо строка изменения ника в табе выдает ошибку и не выполняется.И как это в табе выглядит? Ибо для версии 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(); }
Можно скрин этого чуда? Того, которое работает?1)В табе обычный ник, ибо строка изменения ника в табе выдает ошибку и не выполняется.
2)Как Scoreboard влияет на Tab? До меня это вообще никаким боком не доходит!
Ты имеешь ввиду код?Можно скрин этого чуда? Того, которое работает?
Не код, а то, когда "на сервере 1.6.4 с помощью ColoredTags (префикс + ник) > 16 символов"Ты имеешь ввиду код?
Если бы ты знал, что Scoreboard может ставить префиксы и суффиксы игрокам, которые состоят в командах...2)Как Scoreboard влияет на Tab? До меня это вообще никаким боком не доходит!
Можно немного подробнее или ссылку?Если бы ты знал, что Scoreboard может ставить префиксы и суффиксы игрокам, которые состоят в командах...
Можно немного подробнее или ссылку?
Team t = sb.getTeam(teamName);
if (t == null)
{
t = sb.registerNewTeam(teamName);
t.setPrefix(prefix);
t.setSuffix(suffix);
t.setCanSeeFriendlyInvisibles(false);
}
t.addPlayer(player);
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);
}
Ты для каждого создаёшь отдельную ОчкоДоскуТааак, не робит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); }
До меня туго доходит.Ты для каждого создаёшь отдельную ОчкоДоску
ScoreboardManager manager = Bukkit.getScoreboardManager();
Scoreboard sb = manager.getNewScoreboard();
Team t = sb.getTeam("Gas");
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);
Извините за глупый ответ, но я тоже ничего не видел :\ (мда уж кодеры пошли)До меня туго доходит.
Это надо вынести за метод?Код:ScoreboardManager manager = Bukkit.getScoreboardManager(); Scoreboard sb = manager.getNewScoreboard(); Team t = sb.getTeam("Gas");
Сейчас создал отдельную пробную команда, вписал туда это
Нигде префикса нет! Ни в табе, ни в чате(хотя в EssentialsChat добавил {TEAMNAME} и {TEAMPREFIX}), ни над головой!Код: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);
Я понимаю, что я не айс, но что делаю не так?Извините за глупый ответ, но я тоже ничего не видел :\ (мда уж кодеры пошли)