public static BungeeCord getInstance() { return (BungeeCord) ProxyServer.getInstance(); }
@Override public void sendMessage(String message) { ProxyServer.getInstance().getLogger().info( message ); }
private void save() { try { try ( FileWriter wr = new FileWriter( file ) ) { yaml.dump( config, wr ); } } catch ( IOException ex ) { ProxyServer.getInstance().getLogger().log( Level.WARNING, "Could not save config", ex ); } }
public void loadPlugins() { Map<PluginDescription, Boolean> pluginStatuses = new HashMap<>(); for ( Map.Entry<String, PluginDescription> entry : toLoad.entrySet() ) { PluginDescription plugin = entry.getValue(); if ( !enablePlugin( pluginStatuses, new Stack<PluginDescription>(), plugin ) ) { ProxyServer.getInstance().getLogger().log( Level.WARNING, "Failed to enable {0}", entry.getKey() ); } } toLoad.clear(); toLoad = null; }
@Override public void save() { Map<String, String> copy = new HashMap<>(); lock.readLock().lock(); try { copy.putAll( data ); } finally { lock.readLock().unlock(); } try ( FileWriter wr = new FileWriter( file ) ) { yaml.dump( copy, wr ); } catch ( IOException ex ) { ProxyServer.getInstance().getLogger().log( Level.WARNING, "Could not save reconnect locations", ex ); } }
@Override protected ServerInfo getStoredServer(ProxiedPlayer player) { ServerInfo server = null; lock.readLock().lock(); try { server = ProxyServer.getInstance().getServerInfo( data.get( key( player ) ) ); } finally { lock.readLock().unlock(); } return server; }
@SuppressFBWarnings("REC_CATCH_EXCEPTION") private ModuleVersion getVersion(File file) { try ( JarFile jar = new JarFile( file ) ) { JarEntry pdf = jar.getJarEntry( "plugin.yml" ); Preconditions.checkNotNull( pdf, "Plugin must have a plugin.yml" ); try ( InputStream in = jar.getInputStream( pdf ) ) { PluginDescription desc = new Yaml().loadAs( in, PluginDescription.class ); return ModuleVersion.parse( desc.getVersion() ); } } catch ( Exception ex ) { ProxyServer.getInstance().getLogger().log( Level.WARNING, "Could not check module from file " + file, ex ); } return null; } }
@Override public void ping(final Callback<ServerPing> callback) { ping( callback, ProxyServer.getInstance().getProtocolVersion() ); }
@Override public void execute(CommandSender sender, String[] args) { sender.sendMessage( ChatColor.BLUE + "This server is running BungeeCord version " + ProxyServer.getInstance().getVersion() + " by md_5" ); } }
@Override public void channelActive(ChannelHandlerContext ctx) throws Exception { if ( handler != null ) { channel = new ChannelWrapper( ctx ); handler.connected( channel ); if ( !( handler instanceof InitialHandler || handler instanceof PingHandler ) ) { ProxyServer.getInstance().getLogger().log( Level.INFO, "{0} has connected", handler ); } } }
@Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { if ( handler != null ) { channel.markClosed(); handler.disconnected( channel ); if ( !( handler instanceof InitialHandler || handler instanceof PingHandler ) ) { ProxyServer.getInstance().getLogger().log( Level.INFO, "{0} has disconnected", handler ); } } }
public ServerInfo updateAndGetNextServer(ServerInfo currentTarget) { if ( serverJoinQueue == null ) { serverJoinQueue = new LinkedList<>( getPendingConnection().getListener().getServerPriority() ); } ServerInfo next = null; while ( !serverJoinQueue.isEmpty() ) { ServerInfo candidate = ProxyServer.getInstance().getServerInfo( serverJoinQueue.remove() ); if ( !Objects.equals( currentTarget, candidate ) ) { next = candidate; break; } } return next; }
/** * Checks whether this message is run on this proxy server. * * @return if this command runs on the proxy * @see PluginManager#isExecutableCommand(java.lang.String, net.md_5.bungee.api.CommandSender) */ public boolean isProxyCommand() { if ( !isCommand() ) { return false; } int index = message.indexOf( " " ); String commandName = ( index == -1 ) ? message.substring( 1 ) : message.substring( 1, index ); CommandSender sender = ( getSender() instanceof CommandSender ) ? (CommandSender) getSender() : null; return ProxyServer.getInstance().getPluginManager().isExecutableCommand( commandName, sender ); } }
public void enablePlugins() { for ( Plugin plugin : plugins.values() ) { try { plugin.onEnable(); ProxyServer.getInstance().getLogger().log( Level.INFO, "Enabled plugin {0} version {1} by {2}", new Object[] { plugin.getDescription().getName(), plugin.getDescription().getVersion(), plugin.getDescription().getAuthor() } ); } catch ( Throwable t ) { ProxyServer.getInstance().getLogger().log( Level.WARNING, "Exception encountered when loading plugin: " + plugin.getDescription().getName(), t ); } } }
@Override public void execute(CommandSender sender, String[] args) { Set<String> permissions = new HashSet<>(); for ( String group : sender.getGroups() ) { permissions.addAll( ProxyServer.getInstance().getConfigurationAdapter().getPermissions( group ) ); } sender.sendMessage( ChatColor.GOLD + "You have the following groups: " + Util.csv( sender.getGroups() ) ); for ( String permission : permissions ) { sender.sendMessage( ChatColor.BLUE + "- " + permission ); } } }
public static ServerInfo getForcedHost(PendingConnection con) { if ( con.getVirtualHost() == null ) { return null; } String forced = con.getListener().getForcedHosts().get( con.getVirtualHost().getHostString() ); if ( forced == null && con.getListener().isForceDefault() ) { forced = con.getListener().getDefaultServer(); } return ProxyServer.getInstance().getServerInfo( forced ); }
@Override public void connected(ChannelWrapper channel) throws Exception { this.channel = channel; MinecraftEncoder encoder = new MinecraftEncoder( Protocol.HANDSHAKE, false, protocol ); channel.getHandle().pipeline().addAfter( PipelineUtils.FRAME_DECODER, PipelineUtils.PACKET_DECODER, new MinecraftDecoder( Protocol.STATUS, false, ProxyServer.getInstance().getProtocolVersion() ) ); channel.getHandle().pipeline().addAfter( PipelineUtils.FRAME_PREPENDER, PipelineUtils.PACKET_ENCODER, encoder ); channel.write( new Handshake( protocol, target.getAddress().getHostString(), target.getAddress().getPort(), 1 ) ); encoder.setProtocol( Protocol.STATUS ); channel.write( new StatusRequest() ); }
@Override public ServerInfo getServer(ProxiedPlayer player) { ServerInfo server = getForcedHost( player.getPendingConnection() ); if ( server == null ) { server = getStoredServer( player ); if ( server == null ) { server = ProxyServer.getInstance().getServerInfo( player.getPendingConnection().getListener().getDefaultServer() ); } Preconditions.checkState( server != null, "Default server not defined" ); } return server; }
@Override public void execute(CommandSender sender, String[] args) { if ( args.length < 1 ) { sender.sendMessage( ChatColor.RED + "Please follow this command by a user name" ); return; } ProxiedPlayer user = ProxyServer.getInstance().getPlayer( args[0] ); if ( user == null ) { sender.sendMessage( ChatColor.RED + "That user is not online" ); } else { sender.sendMessage( ChatColor.BLUE + "IP of " + args[0] + " is " + user.getAddress() ); } } }
@Override public void execute(CommandSender sender, String[] args) { if ( args.length != 1 ) { sender.sendMessage( new ComponentBuilder( "Please follow this command by a user name" ).color( ChatColor.RED ).create() ); } else { ProxiedPlayer player = ProxyServer.getInstance().getPlayer( args[0] ); if ( player == null || player.getServer() == null ) { sender.sendMessage( new ComponentBuilder( "That user is not online" ).color( ChatColor.RED ).create() ); } else { sender.sendMessage( new ComponentBuilder( args[0] ).color( ChatColor.GREEN ).append( " is online at " ).append( player.getServer().getInfo().getName() ).create() ); } } } }