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

Помогите Смена имени у игрока

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

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

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    Здравствуйте, я хотел попросить помощь по тому как поменять у игрока имя, которое над головой, прошу предложения в виде кода или советами.
     
  2. Хостинг MineCraft
    <
  3. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Если с удобствами - то есть TagAPI, на деве есть документация
     
  4. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    setDisplayName?
     
  5. Автор темы
    _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    Спасибо, но хотелось кодом.[DOUBLEPOST=1403367936,1403367890][/DOUBLEPOST]
    Не то.
     
  6. ptnk

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

    Баллы:
    173
    как раз-таки это то. Эта команда меняет отображаемое имя, во всяком случае это было так. TagApi - берёшь и открываешь страничку плагина, там будет примеры кодом.
     
  7. aceJKE

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

    Баллы:
    123
  8. Автор темы
    _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    Это меняет только в списке игроков и по-моему в чате, а мне надо так, чтобы над головой менялось.
    И TagAPI не подходит, потому что мне нужно это релизовать в моем плагине без зависимостей(Без пакетов не обойтесь).
     
  9. ptnk

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

    Баллы:
    173
    Что значит "по-моему"? Почему просто не взять и не проверить это на деле? Там есть несколько методов, которые меняют имя - один над головой, второй в табе (если ничего не путаю) и везде будет выглядеть так, как и задумывалось.

    Ну хочется тебе реализовать без зависимостей - открой исходники TagApi, погляди как там реализовано и возьми концепцию от туда, сделано всё очень просто и легко, нужно просто потратить время на разборы.
    Ну или в крайнем случае - скопируй код tagApi в свой плагин и сделай небольшие махинации, но за это на любом нормально ресурсе должны наказывать.

    Станадртными средствами вполне можно обойтись, чтобы везде заменить имя игрока, если тебе нужна экзотика, то открывай исходники TagApi.
     
  10. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    Код:
    String realName = p.getName();
    EntityPlayer ep = ((CraftPlayer) p).getHandle();
    ep.displayName = args[0];
    PacketPlayOutNamedEntitySpawn packet = new PacketPlayOutNamedEntitySpawn(ep);
    try{
    Field field = packet.getClass().getDeclaredField("b");
    field.setAccessible(true);
    Object gameProfile = field.get(packet);
    Field name = gameProfile.getClass().getDeclaredField("name");
    name.setAccessible(true);
    name.set(gameProfile, args[0]);
    }catch(Exception ex){
    ex.printStackTrace();
    }
    for(Player p2 : Bukkit.getOnlinePlayers()){
    if(p2 != p){
    ((CraftPlayer)p2).getHandle().playerConnection.sendPacket(packet);
    }
    }
    ep.displayName = realName;
    Нашёл это ↑ в комментах к одному видео.
     
  11. Автор темы
    _Rufu5_

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

    Баллы:
    48
    Имя в Minecraft:
    _Rufu5_
    Спасибо!
     
  12. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    в новых версиях всё так плохо?
     
  13. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    [​IMG]
    Почему же, наоборот. Появился GameProfile, который всё устроил по полочкам. На мой взгляд теперь стало лучше.
     
  14. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Т.е. ты считаешь, что теперь мешать NMS и рефлексии стало нормой?
     
  15. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    Почему "теперь"? Раньше тоже так было.
     
  16. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ничего подобного. Нормальные разработчики использовали либо рефлексию для поддержки разных версий, либо NMS, но никак не вместе(при использовании первого надобность во втором пропадает)
     

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