@EventHandler(priority = EventPriority.LOWEST) public void onPing(final ProxyPingEvent event) { if (exemptAddresses.contains(event.getConnection().getAddress().getAddress())) { return; } ServerInfo forced = AbstractReconnectHandler.getForcedHost(event.getConnection()); if (forced != null && event.getConnection().getListener().isPingPassthrough()) { return; } event.getResponse().getPlayers().setOnline(plugin.getCount()); }
@Override public void done(ServerPing result, Throwable error) { if ( error != null ) { result = new ServerPing(); result.setDescription( bungee.getTranslation( "ping_cannot_connect" ) ); bungee.getLogger().log( Level.WARNING, "Error pinging remote server", error ); } Callback<ProxyPingEvent> callback = new Callback<ProxyPingEvent>() { @Override public void done(ProxyPingEvent pingResult, Throwable error) { Gson gson = BungeeCord.getInstance().gson; unsafe.sendPacket( new StatusResponse( gson.toJson( pingResult.getResponse() ) ) ); if ( bungee.getConnectionThrottle() != null ) { bungee.getConnectionThrottle().unthrottle( getAddress().getAddress() ); } } }; bungee.getPluginManager().callEvent( new ProxyPingEvent( InitialHandler.this, result, callback ) ); } };
@Override public void done(ProxyPingEvent result, Throwable error) { if ( ch.isClosed() ) { return; } ServerPing legacy = result.getResponse(); String kickMessage; if ( v1_5 ) { kickMessage = ChatColor.DARK_BLUE + "\00" + 127 + '\00' + legacy.getVersion().getName() + '\00' + getFirstLine( legacy.getDescription() ) + '\00' + legacy.getPlayers().getOnline() + '\00' + legacy.getPlayers().getMax(); } else { // Clients <= 1.3 don't support colored motds because the color char is used as delimiter kickMessage = ChatColor.stripColor( getFirstLine( legacy.getDescription() ) ) + '\u00a7' + legacy.getPlayers().getOnline() + '\u00a7' + legacy.getPlayers().getMax(); } ch.close( kickMessage ); } };
@EventHandler(priority = EventPriority.HIGHEST) public void handleProxyPing(ProxyPingEvent event) { ProxyGroup proxyGroup = CloudAPI.getInstance().getProxyGroupData(CloudAPI.getInstance().getGroup()); if (proxyGroup != null && proxyGroup.getProxyConfig().isEnabled()) { ProxyConfig proxyConfig = proxyGroup.getProxyConfig(); ServerPing serverPing = event.getResponse(); if (!proxyConfig.isMaintenance()) { Motd motd = proxyConfig.getMotdsLayouts().get(NetworkUtils.RANDOM.nextInt(proxyConfig.getMotdsLayouts().size())); serverPing.setDescription(ChatColor.translateAlternateColorCodes('&', motd.getFirstLine() + "\n" + motd.getSecondLine()).replace("%proxy%", CloudAPI.getInstance().getServerId()).replace("%version%", CloudProxy.class.getPackage().getImplementationVersion())); } else { serverPing.setDescription(ChatColor.translateAlternateColorCodes('&', proxyConfig.getMaintenanceMotdLayout().getFirstLine() + "\n" + proxyConfig.getMaintenanceMotdLayout().getSecondLine()).replace("%proxy%", CloudAPI.getInstance().getServerId()).replace("%version%", CloudProxy.class.getPackage().getImplementationVersion())); } int onlineCount = CloudAPI.getInstance().getOnlineCount(); int max = (proxyConfig.getAutoSlot().isEnabled() ? onlineCount + proxyConfig.getAutoSlot().getDynamicSlotSize() : proxyConfig.getMaxPlayers()); ServerPing.PlayerInfo[] playerInfos = new ServerPing.PlayerInfo[proxyConfig.getPlayerInfo().length]; for (short i = 0; i < playerInfos.length; i++) { playerInfos[i] = new ServerPing.PlayerInfo(ChatColor.translateAlternateColorCodes('&', proxyConfig.getPlayerInfo()[i]), UUID.randomUUID()); } serverPing.setPlayers(new ServerPing.Players(max, onlineCount, playerInfos)); if (proxyConfig.isMaintenance()) serverPing.setVersion(new ServerPing.Protocol(proxyConfig.getMaintenaceProtocol(), 1)); event.setResponse(serverPing); } }
@EventHandler (priority = -128) public void onProxyPingEvent(ProxyPingEvent event) { injectConnection(event.getConnection()); }
@EventHandler public void onProxyPingEvent(ProxyPingEvent event) { ProxyObject proxyObject = TimoCloudAPI.getBungeeAPI().getThisProxy(); ServerPing serverPing = event.getResponse(); serverPing.setPlayers(new ServerPing.Players( proxyObject.getGroup().getMaxPlayerCount(), proxyObject.getGroup().getOnlinePlayerCount(), serverPing.getPlayers().getSample() )); serverPing.setDescriptionComponent(new TextComponent(ChatColor.translateAlternateColorCodes('&', proxyObject.getGroup().getMotd()))); } }
@Override public void done(ProxyPingEvent result, Throwable error) { if ( ch.isClosed() ) { return; } ServerPing legacy = result.getResponse(); String kickMessage; if ( v1_5 ) { kickMessage = ChatColor.DARK_BLUE + "\00" + 127 + '\00' + legacy.getVersion().getName() + '\00' + getFirstLine( legacy.getDescription() ) + '\00' + legacy.getPlayers().getOnline() + '\00' + legacy.getPlayers().getMax(); } else { // Clients <= 1.3 don't support colored motds because the color char is used as delimiter kickMessage = ChatColor.stripColor( getFirstLine( legacy.getDescription() ) ) + '\u00a7' + legacy.getPlayers().getOnline() + '\u00a7' + legacy.getPlayers().getMax(); } ch.close( kickMessage ); } };
bungee.getPluginManager().callEvent( new ProxyPingEvent( InitialHandler.this, result, callback ) );
bungee.getPluginManager().callEvent( new ProxyPingEvent( this, legacy, callback ) );
bungee.getPluginManager().callEvent( new ProxyPingEvent( InitialHandler.this, result, callback ) );
bungee.getPluginManager().callEvent( new ProxyPingEvent( InitialHandler.this, result, callback ) );
bungee.getPluginManager().callEvent( new ProxyPingEvent( this, legacy, callback ) );