diff --git a/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java b/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java index 7b7c987f..19773843 100644 --- a/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java +++ b/api/src/main/java/net/md_5/bungee/api/config/ServerInfo.java @@ -43,6 +43,22 @@ public interface ServerInfo */ String getMotd(); + /** + * Whether this server is restricted and therefore only players with the + * given permission can access it. + * + * @return if restricted + */ + boolean isRestricted(); + + /** + * Get the permission required to access this server. Only enforced when the + * server is restricted. + * + * @return access permission + */ + String getPermission(); + /** * Whether the player can access this server. It will only return false when * the player has no permission and this server is restricted. diff --git a/api/src/test/java/net/md_5/bungee/api/ServerConnectRequestTest.java b/api/src/test/java/net/md_5/bungee/api/ServerConnectRequestTest.java index 4a028379..0d1f801a 100644 --- a/api/src/test/java/net/md_5/bungee/api/ServerConnectRequestTest.java +++ b/api/src/test/java/net/md_5/bungee/api/ServerConnectRequestTest.java @@ -38,11 +38,23 @@ public class ServerConnectRequestTest } @Override - public boolean canAccess(CommandSender sender) + public boolean isRestricted() { return false; } + @Override + public String getPermission() + { + return null; + } + + @Override + public boolean canAccess(CommandSender sender) + { + return true; + } + @Override public void sendData(String channel, byte[] data) { diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java index c0703afa..3ff3446b 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeServerInfo.java @@ -69,11 +69,17 @@ public class BungeeServerInfo implements ServerInfo return Collections.unmodifiableCollection( new HashSet<>( players ) ); } + @Override + public String getPermission() + { + return "bungeecord.server." + name; + } + @Override public boolean canAccess(CommandSender player) { Preconditions.checkNotNull( player, "player" ); - return !restricted || player.hasPermission( "bungeecord.server." + name ); + return !restricted || player.hasPermission( getPermission() ); } @Override