Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Убрать игроков в Vanish из счетчика игроков в списке серверов

Тема в разделе "Разработка плагинов для новичков", создана пользователем LaoTheLizard, 19 дек 2015.

  1. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    [​IMG]
    Написано, что игроков трое, когда один из игроков в Vanish- так можно узнать, есть ли на сервере скрытые игроки. Как (плагином) убрать из этого числа невидимого игрока? Отследить какой-то эвент запроса и подменить количество?

    Нашел эвент вроде. Получилось так:
    Код:
        @EventHandler
        public void onPacketsReceive(ServerListPingEvent event){
            Collection <? extends Player> players = Bukkit.getServer().getOnlinePlayers();
            int i = 0;
            for(Player p:players){
                if(!p.isOp()){i++;}
            }
            event.getNumPlayers();
            // event.setNumPlayers(i); ?????
        }
    
    Вопрос остается открытым, так как всё ещё непонятно, как число подменить. Там, где я поставил знаки вопроса, несуществующий метод. Как решить проблему?
     
    Последнее редактирование: 19 дек 2015
  2. Хостинг MineCraft
    <
  3. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    ProtocolLib
     
  4. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    Спасибо, посмотрю.

    Еще вопрос: Каким эвентом отслеживать активацию ТНТ? Допустим, когда я ее зажигалкой поджигаю. Или стрелой огненной. BlockIgniteEvent - не то, это поджигание блока. А нужна именно активация ТНТ.
     
  5. Shockwave

    Shockwave Старожил Пользователь

    Баллы:
    103
    EntityExplodeEvent или EntityPrimeEvent. Точно не помню, какой то из них.
     
  6. Автор темы
    LaoTheLizard

    LaoTheLizard Старожил Пользователь

    Баллы:
    103
    Skype:
    sgp_the_controller
    ProtocolLib я не осилил. Но нашел кое-что другое, попроще в обращении, как мне показалось:
    https://www.spigotmc.org/resources/pingapi.3829/

    Написал такой код:
    Код:
    public void onEnable() {
            PingAPI.registerListener(new PingListener() {
                public void onPing(PingEvent event) {
                    Collection <? extends Player> players = Bukkit.getServer().getOnlinePlayers();
                    int i = 0;
                    for(Player p:players){
                        if(!p.isOp()){i++;}
                    }
                    event.getReply().setOnlinePlayers(i);
                }
            });
           
        }
    
    Eclipse ошибок не выдал. А сам pingAPI нифига не заработал с моим Cauldron 1.7.10...
     

Поделиться этой страницей