Недавно делал подобное, только прятал игрока полностью:
ProtocolLib + PacketWrapper (WrapperPlayServerPlayerInfo.java):
PHP:
Player player; //Твой игрок.
WrapperPlayServerPlayerInfo wrappingPacket = new WrapperPlayServerPlayerInfo(); //9999 - уровень пинга.
List<PlayerInfoData> playerData = Arrays.asList(new PlayerInfoData(WrappedGameProfile.fromPlayer(player), 9999,
NativeGameMode.fromBukkit(player.getGameMode()),
WrappedChatComponent.fromText(player.getDisplayName())));
wrappingPacket.setData(data);
wrappingPacket.setAction(PlayerInfoAction.UPDATE_LATENCY);
wrappingPacket.broadcastPacket();
Это пример для одного игрока. В твоем случае лучше обьявить List<PlayerInfoData>, в цикле перебрать всех игроков и засовывать туда по игроку, создавая экземпляры PlayerInfoData (пример выше). Загружаешь потом готовый лист в wrappingPacket через метод setData(...), устанавливаешь экшн wrappingPacket.setAction(PlayerInfoAction.UPDATE_LATENCY) и броадкастишь пакет.