2016-04-19 3 views
1

Я бы хотел, чтобы количество игроков и максимальное количество игроков было чем-то вроде виртуального, поэтому оно не должно быть правильным числом. I Thing, чтобы установить виртуальный номер для максимального количества игроков, я могу использовать метод setMaxPlayers(int mxPlayers) from the ServerListPing Event. Но как насчет онлайн-игроков? И это также работает, если я попытаюсь получить игроков через запрос в плагине?Количество виртуальных игроков и максимальное количество игроков

Спасибо за вашу помощь и извините за мой плохой английский;)

ответ

1

Существует не прямой путь, чтобы установить количество игроков через ServerListPingEvent. Я не уверен почему они решили реализовать его таким образом.

Из док:

Отображаемые игроки могут быть проверены и удалены итерация этого события.

Так гипотетически, вы можете менять игроков, которые есть путем редактирования этого списка (и это будет обновлять счетчик). Поэтому, если вы этого захотите, вы можете уменьшить количество (но я не уверен, что это будет полезно, поскольку вы можете только уменьшить число).

int wantedCount = 5; 

Iterator<Player> itr = event.iterator(); 
while (event.getNumPlayers() > wantedCount) { 
    itr.next(); 
    itr.remove(); 
} 

Тем не менее, лучшим выбором будет использовать ProtocolLib и редактировать server list ping packet использовать его вместо того, чтобы использовать это событие.


И это также будет работать, если я стараюсь, чтобы получить игрок с помощью запроса в виде плагина?

Я не совсем уверен, что вы имеете в виду, но если вы имеете в виду, используя Bukkit.getPlayers(), который не использует ServerListPingEvent поэтому изменения в случае не будет влиять на это.

+0

Спасибо, но как я могу его решить, если я хочу, чтобы больше игроков отображалось, чем онлайн-игроков? И с запросом я имею в виду, что, например, я думаю, что TeleportSigns использует запрос, чтобы получить счетчик игроков и отобразить его на знаке ... – Nightfighter001

+0

@ Nightfighter001 Я напишу протокол ProtocolLib. Я предполагаю, что вы используете BungeeCord на этом сервере? В этом случае, возможно, плагин, вероятно, будет использовать ping сервера list. Таким образом, TeleportSigns, вероятно, будет использоваться вместе с ним. Однако [TeleportSigns - с открытым исходным кодом] (https://github.com/zh32/TeleportSigns), поэтому вы можете вместо этого редактировать плагин в зависимости от того, что вам нужно делать. – Pokechu22

+0

Да я использую BungeeCord :) И спасибо Я думаю, на мой вопрос ответили :) – Nightfighter001