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

Помогите Как изменить текст сверху игрока

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

Статус темы:
Закрыта.
  1. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Здравствуйте! У меня возник вопрос, как изменить текст сверху игрока? (Где его ник)
    Нужно этот текст снизу изменить.
    upload_2021-8-8_18-41-1.png
     
  2. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Через подмену поля в GameProfile игрока, и обновления пакетами

    Код:
        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()));
            }
        }
     
  3. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Спасибо огромное!) Но можно узнать, как получить ник игрока? С которого игрок зашёл изначально.
     
  4. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Player.getName()
     
  5. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Оно возвращает измененный ник.
     
  6. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Ну правильно ты же его изменил.
     
  7. NoooobKa

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

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Храни в мапе первоначальный ник
     
  8. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    После перезагрузки мапе кердык не придёт разве?
     
  9. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Храни мапу в файле/конфиге/бд.
     
Статус темы:
Закрыта.

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