[РЕШЕНО] Изменение списка /list (Bukkit.getOnlinePlayers())

  • Автор темы Автор темы Cororo
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Cororo

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
TheSirCororo
Можно ли как-то изменить список /list или же тот, что получается через Bukkit.getOnlinePlayers()?
Я протокол либой смог добиться изменения списка в табе и в списке серверов (включая количество), но никак не могу изменить список /list. Можно ли это как-либо сделать? Мне надо чтобы отображался в /list и при TabComplete
 
Просто копируй и фильтруй список.
 
Нет конечно. List<Player> players = new ArrayList<>(Bukkit.getOnlinePlayers())
Далее удаляешь через итератор или players.removeIf(player -> условие)
Мне надо от туда не удалять а добавлять туда, я же писал. И ещё надо чтобы этот игрок был именно в Bukkit.getOnlinePlayers(). чтобы его видели плагины и при TabComplete
 
Либо же создаёшь новый список пустым, и лишь при каком-то условии добавляешь из Bukki.getOnlinePlayets(). Размер кода возрастёт, но повысится производительность.. на несколько миллисекунд.
 
Либо же создаёшь новый список пустым, и лишь при каком-то условии добавляешь из Bukki.getOnlinePlayets(). Размер кода возрастёт, но повысится производительность.. на несколько миллисекунд.
Ему нужно создать нового плеера и добавить в лист, как я понял...
 
Либо же создаёшь новый список пустым, и лишь при каком-то условии добавляешь из Bukki.getOnlinePlayets(). Размер кода возрастёт, но повысится производительность.. на несколько миллисекунд.
Зачем мне новый список, если плагины будут брать Bukkit.getOnlinePlayers(), а значит мне надо каким-то образом добавить туда игрока своего
 
Мне надо от туда не удалять а добавлять туда, я же писал. И ещё надо чтобы этот игрок был именно в Bukkit.getOnlinePlayers(). чтобы его видели плагины и при TabComplete
В таком случае всё плохо. Нужно "вторгаться" в ядро и подменять метод. Но это сломает большую часть плагинов, которые так или иначе работают с этим методом. Будет лучше отключить показ игроков при нажатии таба в принципе, и вместо этого, если при нажатии таба ничего не отвечает, отправлять собственный список игроков с добавлением от себя. В таком случае нужно ловить пакет игрока через ProticolLib. В Paper ещё есть ивент при нажатии таба игроком, но для Spigot/Bukkit, очевидно, не подойдёт.
 
В таком случае всё плохо. Нужно "вторгаться" в ядро и подменять метод. Но это сломает большую часть плагинов, которые так или иначе работают с этим методом. Будет лучше отключить показ игроков при нажатии таба в принципе, и вместо этого, если при нажатии таба ничего не отвечает, отправлять собственный список игроков с добавлением от себя. В таком случае нужно ловить пакет игрока через ProticolLib. В Paper ещё есть ивент при нажатии таба игроком, но для Spigot/Bukkit, очевидно, не подойдёт.
Мне всё никак не понять, какой пакет надо ловить от игрока
 
Просто сделай коллекцию с типом String, потом делай итерацию по getOnlinePlayers(), получай ник и вставляй в коллекцию String, а там уже еще добавить какие нибудь строки
И что мне эта коллекция даст? Я же Bukkit.getOnlinePlayers() не меняю, а значит плагинам будет по-барабану на фейковых игроков
 
Ничего не сделать, кроме, опять же, вмешательства в ядро. Если плагин не публичный, можешь закостылить и переписать команду в своем плагине.
В том же FakePlayers игроки фейковые и в /list отображаются без вмешательств в ядро и без изменения самой команды
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх