Войти или зарегистрироваться

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

  • Автор темы Автор темы _Rufu5_
  • Дата начала Дата начала

_Rufu5_

Активный участник
Пользователь
Баллы
78
Имя в Minecraft
_Rufu5_
Здравствуйте, я хотел попросить помощь по тому как поменять у игрока имя, которое над головой, прошу предложения в виде кода или советами.
 
Если с удобствами - то есть TagAPI, на деве есть документация
 
Спасибо, но хотелось кодом.

Не то.
как раз-таки это то. Эта команда меняет отображаемое имя, во всяком случае это было так. TagApi - берёшь и открываешь страничку плагина, там будет примеры кодом.
 
как раз-таки это то. Эта команда меняет отображаемое имя, во всяком случае это было так. TagApi - берёшь и открываешь страничку плагина, там будет примеры кодом.
Это меняет только в списке игроков и по-моему в чате, а мне надо так, чтобы над головой менялось.
И TagAPI не подходит, потому что мне нужно это релизовать в моем плагине без зависимостей(Без пакетов не обойтесь).
 
Это меняет только в списке игроков и по-моему в чате, а мне надо так, чтобы над головой менялось.
И TagAPI не подходит, потому что мне нужно это релизовать в моем плагине без зависимостей(Без пакетов не обойтесь).

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

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

Станадртными средствами вполне можно обойтись, чтобы везде заменить имя игрока, если тебе нужна экзотика, то открывай исходники TagApi.
 
Код:
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;
Нашёл это ↑ в комментах к одному видео.
 
Код:
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;
Нашёл это ↑ в комментах к одному видео.
Спасибо!
 
Код:
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;
Нашёл это ↑ в комментах к одному видео.
в новых версиях всё так плохо?
 
13464023818357.png
в новых версиях всё так плохо?
Почему же, наоборот. Появился GameProfile, который всё устроил по полочкам. На мой взгляд теперь стало лучше.
 
13464023818357.png

Почему же, наоборот. Появился GameProfile, который всё устроил по полочкам. На мой взгляд теперь стало лучше.
Т.е. ты считаешь, что теперь мешать NMS и рефлексии стало нормой?
 
Почему "теперь"? Раньше тоже так было.
Ничего подобного. Нормальные разработчики использовали либо рефлексию для поддержки разных версий, либо NMS, но никак не вместе(при использовании первого надобность во втором пропадает)
 
Назад
Верх