Помогите Смена имени игрока и внедрения туда префикса и суффикса на головой.

Статус
Закрыто для дальнейших ответов.

Limon-mine

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Limon_MineDel
Мне надо сменить имя игрока над головой для внедрения туда префикса и суффикса. Я знаю как получить префикс суффикс, но как установить над головой нет Как сделать
 
Мне надо сменить имя игрока над головой для внедрения туда префикса и суффикса. Я знаю как получить префикс суффикс, но как установить над головой нет Как сделать
player.setDisplayName("nick")
 
ну подсмотри в NTE, сложно шоль
 
Нте не позволяет изменять ники над головой, выбрасывай
 
setDisplayName и SetCustomName не работают
 
Если тебя интересует именно смена имени
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()));
        }
    }
 
Если тебя интересует именно смена имени
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()));
        }
    }
Мне надо не как сменить имя ну например при команды тп /tp ник. А только над головой
 
Мне надо не как сменить имя ну например при команды тп /tp ник. А только над головой
Да там вроде ник игрока зависит от имени в GameProfile. Можешь попробовать посмотреть как реализовано в различных плагинах
 
Да там вроде ник игрока зависит от имени в GameProfile. Можешь попробовать посмотреть как реализовано в различных плагинах
Да я уж не знаю где посмотреть. В NTE идёт через team, в других вообще без отображения его где то
 
Вопрос всё ещё не решён!
 
Вопрос всё ещё не решён!
Создай свои плейсхолдеры и используй сторонние плагины для добавления их в ник. Самый простой способ. А если хочешь Через Vault то там есть Chat.setPrefix и тд. Это уже по дефолту отображается в ваулт плейсхолдерах.
 
Создай свои плейсхолдеры и используй сторонние плагины для добавления их в ник. Самый простой способ. А если хочешь Через Vault то там есть Chat.setPrefix и тд. Это уже по дефолту отображается в ваулт плейсхолдерах.
да я знаю как установить префикс и т.д, но как отображать мне его через имя над головой? Я в своём плагини пишу часть с префиксами над головой и в табе. С табом разобрался, а с головой нет
 
да я знаю как установить префикс и т.д, но как отображать мне его через имя над головой? Я в своём плагини пишу часть с префиксами над головой и в табе. С табом разобрался, а с головой нет
FakeTeam
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх