Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Через подмену поля в GameProfile игрока, и обновления пакетамиЗдравствуйте! У меня возник вопрос, как изменить текст сверху игрока? (Где его ник)
Нужно этот текст снизу изменить.
Посмотреть вложение 60107
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 игрока, и обновления пакетами
Код: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())); } }
Player.getName()Спасибо огромное!) Но можно узнать, как получить ник игрока? С которого игрок зашёл изначально.
Оно возвращает измененный ник.Player.getName()
Ну правильно ты же его изменил.Оно возвращает измененный ник.
Храни в мапе первоначальный никОно возвращает измененный ник.
После перезагрузки мапе кердык не придёт разве?Храни в мапе первоначальный ник
Храни мапу в файле/конфиге/бд.После перезагрузки мапе кердык не придёт разве?