mirror of
https://github.com/SpigotMC/BungeeCord.git
synced 2024-11-30 14:13:47 +01:00
Fix config, up next, reconnect handler.
This commit is contained in:
parent
bf1e7f09a9
commit
355afba6da
@ -27,7 +27,7 @@ public abstract class ProxyServer
|
||||
public static void setInstance(ProxyServer instance)
|
||||
{
|
||||
Preconditions.checkNotNull(instance, "instance");
|
||||
Preconditions.checkArgument(instance == null, "Instance already set");
|
||||
Preconditions.checkArgument(ProxyServer.instance == null, "Instance already set");
|
||||
ProxyServer.instance = instance;
|
||||
}
|
||||
|
||||
|
@ -25,10 +25,6 @@ public class ServerInfo
|
||||
* Connectable address of this server.
|
||||
*/
|
||||
private final InetSocketAddress address;
|
||||
/**
|
||||
* Permission node required to access this server.
|
||||
*/
|
||||
private String permission;
|
||||
/**
|
||||
* Players connected to a server defined by these properties.
|
||||
*/
|
||||
|
@ -2,16 +2,20 @@ package net.md_5.bungee.config;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.InetSocketAddress;
|
||||
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.Map;
|
||||
import java.util.logging.Level;
|
||||
import net.md_5.bungee.Util;
|
||||
import net.md_5.bungee.api.ProxyServer;
|
||||
import net.md_5.bungee.api.config.ConfigurationAdapter;
|
||||
import net.md_5.bungee.api.config.ListenerInfo;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
@ -24,12 +28,12 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
private boolean loaded;
|
||||
private Yaml yaml;
|
||||
private Map config;
|
||||
File file = new File("config.yml");
|
||||
|
||||
public void load()
|
||||
{
|
||||
try
|
||||
{
|
||||
File file = new File("config.yml");
|
||||
file.createNewFile();
|
||||
DumperOptions options = new DumperOptions();
|
||||
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
||||
@ -54,9 +58,14 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
|
||||
private <T> T get(String path, T def)
|
||||
{
|
||||
if (!loaded)
|
||||
{
|
||||
load();
|
||||
}
|
||||
return get(path, def, config);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private <T> T get(String path, T def, Map submap)
|
||||
{
|
||||
if (!loaded)
|
||||
@ -68,7 +77,13 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
if (index == -1)
|
||||
{
|
||||
Object val = submap.get(path);
|
||||
return (val != null) ? (T) val : def;
|
||||
if (val == null)
|
||||
{
|
||||
val = def;
|
||||
submap.put(path, def);
|
||||
save();
|
||||
}
|
||||
return (T) val;
|
||||
} else
|
||||
{
|
||||
String first = path.substring(0, index);
|
||||
@ -78,6 +93,20 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInt(String path, int def)
|
||||
{
|
||||
@ -94,17 +123,16 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
@SuppressWarnings("unchecked")
|
||||
public Map<String, ServerInfo> getServers()
|
||||
{
|
||||
Map<String, Map<String, Object>> base = get("servers", Collections.EMPTY_MAP);
|
||||
Map<String, Map<String, Object>> base = get("servers", (Map) Collections.singletonMap("lobby", new HashMap<>()));
|
||||
Map<String, ServerInfo> ret = new HashMap<>();
|
||||
|
||||
for (Map.Entry<String, Map<String, Object>> entry : base.entrySet())
|
||||
{
|
||||
Map<String, Object> val = entry.getValue();
|
||||
String name = get("name", null, val);
|
||||
String permission = get("permission", null, val);
|
||||
String addr = get("address", null, val);
|
||||
String name = entry.getKey();
|
||||
String addr = get("address", "localhost:25565", val);
|
||||
InetSocketAddress address = Util.getAddr(addr);
|
||||
ServerInfo info = new ServerInfo(name, address, permission);
|
||||
ServerInfo info = new ServerInfo(name, address);
|
||||
ret.put(name, info);
|
||||
}
|
||||
|
||||
@ -115,17 +143,19 @@ public class YamlConfig implements ConfigurationAdapter
|
||||
@SuppressWarnings("unchecked")
|
||||
public Collection<ListenerInfo> getListeners()
|
||||
{
|
||||
Map<String, Map<String, Object>> base = get("listeners", Collections.EMPTY_MAP);
|
||||
Collection<Map<String, Object>> base = get("listeners", (Collection) Arrays.asList(new Map[]
|
||||
{
|
||||
new HashMap()
|
||||
}));
|
||||
Collection<ListenerInfo> ret = new HashSet<>();
|
||||
|
||||
for (Map.Entry<String, Map<String, Object>> entry : base.entrySet())
|
||||
for (Map<String, Object> val : base)
|
||||
{
|
||||
Map<String, Object> val = entry.getValue();
|
||||
String motd = get("motd", null, val);
|
||||
int maxPlayers = get("motd", null, val);
|
||||
String defaultServer = get("default", null, val);
|
||||
boolean forceDefault = get("force_default", null, val);
|
||||
String host = get("host", null, val);
|
||||
String motd = get("motd", "Another Bungee server", val);
|
||||
int maxPlayers = get("max_players", 1, val);
|
||||
String defaultServer = get("default_server", "lobby", val);
|
||||
boolean forceDefault = get("force_default_server", false, val);
|
||||
String host = get("host", "0.0.0.0:25577", val);
|
||||
InetSocketAddress address = Util.getAddr(host);
|
||||
ListenerInfo info = new ListenerInfo(address, motd, maxPlayers, defaultServer, forceDefault);
|
||||
ret.add(info);
|
||||
|
Loading…
Reference in New Issue
Block a user