@EventHandler(priority = EventPriority.HIGHEST)
    public void onPing(ProxyPingEvent e) {
        PendingConnection connection = e.getConnection();
        if (connection == null || connection.getVirtualHost() == null || connection.getVirtualHost().getHostName() == null) {
            return;
        }
        
        ServerPing response = e.getResponse();
        
        if (plugin.maintenanceEnabled) {
            response.setDescription(plugin.messages.get(EnumMessage.MOTDMAINTENANCE));
            response.getPlayers().setMax(0);
            response.getPlayers().setOnline(0);
            response.getPlayers().setSample(plugin.serverHoverPlayerListMaintenance);
            response.setVersion(new Protocol(ChatColor.YELLOW + "Maintenance Mode", 99));
        } else {
            response.getPlayers().setSample(plugin.serverHoverPlayerListDefault);
            String ip = this.plugin.clearifyIP(connection.getAddress().toString());
            if (this.knownClientIPS.containsKey(ip)) {
                response.setDescription(plugin.messages.get(EnumMessage.MOTDKNOWNPLAYER).replace("[player]", this.knownClientIPS.get(ip)));
            } else {
                response.setDescription(plugin.messages.get(EnumMessage.MOTDUNKNOWNPLAYER));
            }
        }
        
        e.setResponse(response);

        int online = response.getPlayers().getOnline();
        plugin.currentMaxPlayers = response.getPlayers().getMax();
        plugin.currentOnlinePlayers = online;
        if (online > plugin.peakPlayers) {
            plugin.peakPlayers = online;
        }
    }