Replace default/fallback servers with a server priority list.
This commit is contained in:
parent
7d2c2ab074
commit
219819b738
@ -1,8 +1,11 @@
|
||||
package net.md_5.bungee.api.config;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* Class representing the configuration of a server listener. Used for allowing
|
||||
@ -29,14 +32,10 @@ public class ListenerInfo
|
||||
*/
|
||||
private final int tabListSize;
|
||||
/**
|
||||
* Name of the server which users will be taken to by default.
|
||||
* List of servers in order of join attempt. First attempt is the first
|
||||
* element, second attempt is the next element, etc etc.
|
||||
*/
|
||||
private final String defaultServer;
|
||||
/**
|
||||
* Name of the server which users will be taken when current server goes
|
||||
* down.
|
||||
*/
|
||||
private final String fallbackServer;
|
||||
private final List<String> serverPriority;
|
||||
/**
|
||||
* Whether reconnect locations will be used, or else the user is simply
|
||||
* transferred to the default server on connect.
|
||||
@ -68,4 +67,29 @@ public class ListenerInfo
|
||||
* Whether to enable udp query.
|
||||
*/
|
||||
private final boolean queryEnabled;
|
||||
|
||||
/**
|
||||
* Gets the highest priority server to join.
|
||||
*
|
||||
* @return default server
|
||||
* @deprecated replaced by {@link #serverPriority}
|
||||
*/
|
||||
@Deprecated
|
||||
public String getDefaultServer()
|
||||
{
|
||||
return serverPriority.get( 0 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the second highest priority server to join, or else the highest
|
||||
* priority.
|
||||
*
|
||||
* @return fallback server
|
||||
* @deprecated replaced by {@link #serverPriority}
|
||||
*/
|
||||
@Deprecated
|
||||
public String getFallbackServer()
|
||||
{
|
||||
return ( serverPriority.size() > 1 ) ? serverPriority.get( 1 ) : getDefaultServer();
|
||||
}
|
||||
}
|
||||
|
@ -7,12 +7,14 @@ import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.logging.Level;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -126,6 +128,34 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void set(String path, Object val, Map submap)
|
||||
{
|
||||
int index = path.indexOf( '.' );
|
||||
if ( index == -1 )
|
||||
{
|
||||
if ( val == null )
|
||||
{
|
||||
submap.remove( path );
|
||||
} else
|
||||
{
|
||||
submap.put( path, val );
|
||||
}
|
||||
save();
|
||||
} else
|
||||
{
|
||||
String first = path.substring( 0, index );
|
||||
String second = path.substring( index + 1, path.length() );
|
||||
Map sub = (Map) submap.get( first );
|
||||
if ( sub == null )
|
||||
{
|
||||
sub = new LinkedHashMap();
|
||||
submap.put( first, sub );
|
||||
}
|
||||
set( second, val, sub );
|
||||
}
|
||||
}
|
||||
|
||||
private void save()
|
||||
{
|
||||
try
|
||||
@ -200,8 +230,6 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
motd = ChatColor.translateAlternateColorCodes( '&', motd );
|
||||
|
||||
int maxPlayers = get( "max_players", 1, val );
|
||||
String defaultServer = get( "default_server", "lobby", val );
|
||||
String fallbackServer = get( "fallback_server", defaultServer, val );
|
||||
boolean forceDefault = get( "force_default_server", false, val );
|
||||
String host = get( "host", "0.0.0.0:25577", val );
|
||||
int tabListSize = get( "tab_size", 60, val );
|
||||
@ -219,7 +247,31 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
boolean query = get( "query_enabled", false, val );
|
||||
int queryPort = get( "query_port", 25577, val );
|
||||
|
||||
ListenerInfo info = new ListenerInfo( address, motd, maxPlayers, tabListSize, defaultServer, fallbackServer, forceDefault, forced, value.toString(), setLocalAddress, pingPassthrough, queryPort, query );
|
||||
List<String> serverPriority = new ArrayList<>( get( "priorities", Collections.EMPTY_LIST, val ) );
|
||||
|
||||
// Default server list migration
|
||||
// TODO: Remove from submap
|
||||
String defaultServer = get( "default_server", null, val );
|
||||
String fallbackServer = get( "fallback_server", null, val );
|
||||
if ( defaultServer != null )
|
||||
{
|
||||
serverPriority.add( defaultServer );
|
||||
set( "default_server", null, val );
|
||||
}
|
||||
if ( fallbackServer != null )
|
||||
{
|
||||
serverPriority.add( fallbackServer );
|
||||
set( "fallback_server", null, val );
|
||||
}
|
||||
|
||||
// Add defaults if required
|
||||
if ( serverPriority.isEmpty() )
|
||||
{
|
||||
serverPriority.add( "lobby" );
|
||||
}
|
||||
set( "priorities", serverPriority, val );
|
||||
|
||||
ListenerInfo info = new ListenerInfo( address, motd, maxPlayers, tabListSize, serverPriority, forceDefault, forced, value.toString(), setLocalAddress, pingPassthrough, queryPort, query );
|
||||
ret.add( info );
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user