From cf4846baa98d4871e4c1f04146e994a67a2838a7 Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 24 Mar 2013 16:29:45 +1100 Subject: [PATCH] Add issue #221 - permission check event --- .../api/event/PermissionCheckEvent.java | 36 +++++++++++++++++++ .../java/net/md_5/bungee/UserConnection.java | 3 +- 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 api/src/main/java/net/md_5/bungee/api/event/PermissionCheckEvent.java diff --git a/api/src/main/java/net/md_5/bungee/api/event/PermissionCheckEvent.java b/api/src/main/java/net/md_5/bungee/api/event/PermissionCheckEvent.java new file mode 100644 index 00000000..9c383078 --- /dev/null +++ b/api/src/main/java/net/md_5/bungee/api/event/PermissionCheckEvent.java @@ -0,0 +1,36 @@ +package net.md_5.bungee.api.event; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.ToString; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.plugin.Event; + +/** + * Called when the permission of a CommandSender is checked. + */ +@Data +@AllArgsConstructor +@ToString(callSuper = false) +@EqualsAndHashCode(callSuper = false) +public class PermissionCheckEvent extends Event +{ + + /** + * The command sender being checked for a permission. + */ + private final CommandSender sender; + /** + * The outcome of this permission check. + */ + @Getter(AccessLevel.NONE) + private boolean hasPermission; + + public boolean hasPermission() + { + return hasPermission; + } +} diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index dd11d967..7cbd91bd 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -23,6 +23,7 @@ import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.connection.PendingConnection; import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.event.PermissionCheckEvent; import net.md_5.bungee.api.event.ServerConnectEvent; import net.md_5.bungee.api.scoreboard.Scoreboard; import net.md_5.bungee.netty.HandlerBoss; @@ -249,7 +250,7 @@ public final class UserConnection implements ProxiedPlayer @Synchronized("permMutex") public boolean hasPermission(String permission) { - return permissions.contains( permission ); + return bungee.getPluginManager().callEvent( new PermissionCheckEvent( this, permissions.contains( permission ) ) ).hasPermission(); } @Override