diff --git a/BungeeCord-Patches/0037-Add-dynamic-server-addition-removal-api.patch b/BungeeCord-Patches/0037-Add-dynamic-server-addition-removal-api.patch index ccc2ee1..d025e7f 100644 --- a/BungeeCord-Patches/0037-Add-dynamic-server-addition-removal-api.patch +++ b/BungeeCord-Patches/0037-Add-dynamic-server-addition-removal-api.patch @@ -1,6 +1,6 @@ -From f003385fe169b5be68b0acdf41a82a55f4140fb8 Mon Sep 17 00:00:00 2001 +From d7d5585dd6576c5ee2d50c88f5b020ab96726138 Mon Sep 17 00:00:00 2001 From: Troy Frew -Date: Tue, 28 Jun 2016 21:29:25 -0500 +Date: Wed, 29 Jun 2016 04:29:25 +0200 Subject: [PATCH] Add dynamic server addition/removal api. The provided methods will not move a player if a server is removed or the server ip/port is changed, however the methods return the old ServerInfo object for you to handle that yourself if needed. @@ -168,7 +168,7 @@ index fc5ca3a..92ea9b5 100644 @Override diff --git a/proxy/src/main/java/net/md_5/bungee/conf/Configuration.java b/proxy/src/main/java/net/md_5/bungee/conf/Configuration.java -index db9ebbd..112420a 100644 +index db9ebbd..4d16fa3 100644 --- a/proxy/src/main/java/net/md_5/bungee/conf/Configuration.java +++ b/proxy/src/main/java/net/md_5/bungee/conf/Configuration.java @@ -1,6 +1,7 @@ @@ -187,15 +187,23 @@ index db9ebbd..112420a 100644 import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.Favicon; -@@ -61,6 +63,7 @@ public abstract class Configuration implements ProxyConfig +@@ -42,6 +44,7 @@ public abstract class Configuration implements ProxyConfig + * Set of all listeners. + */ + private Collection listeners; ++ private final Object serversLock = new Object(); // Waterfall + /** + * Set of all servers. + */ +@@ -61,6 +64,7 @@ public abstract class Configuration implements ProxyConfig private Favicon favicon; private int compressionThreshold = 256; -+ @Synchronized("servers") // Waterfall ++ @Synchronized("serversLock") // Waterfall public void load() { ConfigurationAdapter adapter = ProxyServer.getInstance().getConfigurationAdapter(); -@@ -100,7 +103,7 @@ public abstract class Configuration implements ProxyConfig +@@ -100,7 +104,7 @@ public abstract class Configuration implements ProxyConfig servers = new CaseInsensitiveMap<>( newServers ); } else { @@ -204,34 +212,34 @@ index db9ebbd..112420a 100644 this.servers = new CaseInsensitiveMap<>(newServers); for ( ServerInfo oldServer : oldServers.values() ) -@@ -158,4 +161,71 @@ public abstract class Configuration implements ProxyConfig +@@ -158,4 +162,71 @@ public abstract class Configuration implements ProxyConfig { return favicon; } + + // Waterfall start + @Override -+ @Synchronized("servers") ++ @Synchronized("serversLock") + public Map getServersCopy() { + return ImmutableMap.copyOf( servers ); + } + + @Override -+ @Synchronized("servers") ++ @Synchronized("serversLock") + public ServerInfo getServerInfo(String name) + { + return this.servers.get( name ); + } + + @Override -+ @Synchronized("servers") ++ @Synchronized("serversLock") + public ServerInfo addServer(ServerInfo server) + { + return this.servers.put( server.getName(), server ); + } + + @Override -+ @Synchronized("servers") ++ @Synchronized("serversLock") + public boolean addServers(Collection servers) + { + boolean changed = false; @@ -243,28 +251,28 @@ index db9ebbd..112420a 100644 + } + + @Override -+ @Synchronized("servers") ++ @Synchronized("serversLock") + public ServerInfo removeServerNamed(String name) + { + return this.servers.remove( name ); + } + + @Override -+ @Synchronized("servers") ++ @Synchronized("serversLock") + public ServerInfo removeServer(ServerInfo server) + { + return this.servers.remove( server.getName() ); + } + + @Override -+ @Synchronized("servers") ++ @Synchronized("serversLock") + public boolean removeServersNamed(Collection names) + { + return this.servers.keySet().removeAll( names ); + } + + @Override -+ @Synchronized("servers") ++ @Synchronized("serversLock") + public boolean removeServers(Collection servers) + { + boolean changed = false; @@ -277,5 +285,5 @@ index db9ebbd..112420a 100644 + // Waterfall end } -- -2.7.4 (Apple Git-66) +2.9.0.windows.1