- Баллы
- 76
- Имя в Minecraft
- Limon_MineDel
Мне надо сменить имя игрока над головой для внедрения туда префикса и суффикса. Я знаю как получить префикс суффикс, но как установить над головой нет Как сделать
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
player.setDisplayName("nick")Мне надо сменить имя игрока над головой для внедрения туда префикса и суффикса. Я знаю как получить префикс суффикс, но как установить над головой нет Как сделать
Это не работает. Нечего не делаетplayer.setDisplayName("nick")
я там посмотрел и оно там сделано через FakeTeam. Но я использую Vaultну подсмотри в NTE, сложно шоль
public static void setPlayerName(Player p, String name) {
GameProfile gp = ((CraftPlayer)p).getProfile();
try {
Field nameField = GameProfile.class.getDeclaredField("name");
nameField.setAccessible(true);
nameField.set(gp, name);
nameField.setAccessible(false);
} catch (IllegalAccessException | NoSuchFieldException ex) {
throw new IllegalStateException(ex);
}
for (Player pl : Bukkit.getOnlinePlayers()) {
if (pl == p) continue;
((CraftPlayer)pl).getHandle().playerConnection.sendPacket(new PacketPlayOutEntityDestroy(p.getEntityId()));
((CraftPlayer)pl).getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, ((CraftPlayer)p).getHandle()));
((CraftPlayer)pl).getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, ((CraftPlayer)p).getHandle()));
((CraftPlayer)pl).getHandle().playerConnection.sendPacket(new PacketPlayOutNamedEntitySpawn(((CraftPlayer)p).getHandle()));
}
}
Мне надо не как сменить имя ну например при команды тп /tp ник. А только над головойЕсли тебя интересует именно смена имени
1. Нужен GameProfile игрока.
2. В этот GameProfile установить нужное имя
3. Удалить и заново создать игрока через пакеты
Шматок кода который у меня завалялся, вроде бы под 1.12.2
Код:public static void setPlayerName(Player p, String name) { GameProfile gp = ((CraftPlayer)p).getProfile(); try { Field nameField = GameProfile.class.getDeclaredField("name"); nameField.setAccessible(true); nameField.set(gp, name); nameField.setAccessible(false); } catch (IllegalAccessException | NoSuchFieldException ex) { throw new IllegalStateException(ex); } for (Player pl : Bukkit.getOnlinePlayers()) { if (pl == p) continue; ((CraftPlayer)pl).getHandle().playerConnection.sendPacket(new PacketPlayOutEntityDestroy(p.getEntityId())); ((CraftPlayer)pl).getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.REMOVE_PLAYER, ((CraftPlayer)p).getHandle())); ((CraftPlayer)pl).getHandle().playerConnection.sendPacket(new PacketPlayOutPlayerInfo(PacketPlayOutPlayerInfo.EnumPlayerInfoAction.ADD_PLAYER, ((CraftPlayer)p).getHandle())); ((CraftPlayer)pl).getHandle().playerConnection.sendPacket(new PacketPlayOutNamedEntitySpawn(((CraftPlayer)p).getHandle())); } }
Да там вроде ник игрока зависит от имени в GameProfile. Можешь попробовать посмотреть как реализовано в различных плагинахМне надо не как сменить имя ну например при команды тп /tp ник. А только над головой
Да я уж не знаю где посмотреть. В NTE идёт через team, в других вообще без отображения его где тоДа там вроде ник игрока зависит от имени в GameProfile. Можешь попробовать посмотреть как реализовано в различных плагинах
Создай свои плейсхолдеры и используй сторонние плагины для добавления их в ник. Самый простой способ. А если хочешь Через Vault то там есть Chat.setPrefix и тд. Это уже по дефолту отображается в ваулт плейсхолдерах.Вопрос всё ещё не решён!
да я знаю как установить префикс и т.д, но как отображать мне его через имя над головой? Я в своём плагини пишу часть с префиксами над головой и в табе. С табом разобрался, а с головой нетСоздай свои плейсхолдеры и используй сторонние плагины для добавления их в ник. Самый простой способ. А если хочешь Через Vault то там есть Chat.setPrefix и тд. Это уже по дефолту отображается в ваулт плейсхолдерах.
FakeTeamда я знаю как установить префикс и т.д, но как отображать мне его через имя над головой? Я в своём плагини пишу часть с префиксами над головой и в табе. С табом разобрался, а с головой нет
Спасибо. Если кому надо по этому делал https://www.spigotmc.org/threads/change-players-name-tag.191025/FakeTeam