diff options
Diffstat (limited to 'Essentials/src')
8 files changed, 189 insertions, 35 deletions
diff --git a/Essentials/src/com/earth2me/essentials/ConfigPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/ConfigPermissionsHandler.java new file mode 100644 index 000000000..9e3b24b0d --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/ConfigPermissionsHandler.java @@ -0,0 +1,45 @@ +package com.earth2me.essentials; + +import org.bukkit.entity.Player; + + +public class ConfigPermissionsHandler implements IPermissionsHandler +{ + private final transient IEssentials ess; + + public ConfigPermissionsHandler(final IEssentials ess) + { + this.ess = ess; + } + + public String getGroup(final Player base) + { + return "default"; + } + + public boolean canBuild(final Player base, final String group) + { + return true; + } + + public boolean inGroup(final Player base, final String group) + { + return false; + } + + public boolean hasPermission(final Player base, final String node) + { + final String[] cmds = node.split("\\.", 2); + return !ess.getSettings().isCommandRestricted(cmds[cmds.length - 1]); + } + + public String getPrefix(final Player base) + { + return ""; + } + + public String getSuffix(final Player base) + { + return ""; + } +} diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 2dfb09344..2b30c5b02 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -62,6 +62,7 @@ public class Essentials extends JavaPlugin implements IEssentials private final Methods paymentMethod = new Methods(); private final static boolean enableErrorLogging = false; private final EssentialsErrorHandler errorHandler = new EssentialsErrorHandler(); + private IPermissionsHandler permissionsHandler; public static IEssentials getStatic() { @@ -139,6 +140,20 @@ public class Essentials extends JavaPlugin implements IEssentials logger.log(Level.INFO, Util.i18n("bukkitFormatChanged")); } + Plugin permissionsPlugin = pm.getPlugin("Permissions"); + + if (permissionsPlugin != null) + { + if (permissionsPlugin.getDescription().getVersion().charAt(0) == '3') { + this.permissionsHandler = new Permissions3Handler(permissionsPlugin); + } else { + this.permissionsHandler = new Permissions2Handler(permissionsPlugin); + } + } + else + { + this.permissionsHandler = new ConfigPermissionsHandler(this); + } final ServerListener serverListener = new EssentialsPluginListener(paymentMethod); pm.registerEvent(Type.PLUGIN_ENABLE, serverListener, Priority.Low, this); @@ -753,10 +768,14 @@ public class Essentials extends JavaPlugin implements IEssentials { return tntListener; } - + public EssentialsDependancyChecker getDependancyChecker() { return essDep; } + public IPermissionsHandler getPermissionsHandler() + { + return permissionsHandler; + } } diff --git a/Essentials/src/com/earth2me/essentials/IEssentials.java b/Essentials/src/com/earth2me/essentials/IEssentials.java index 10d3f16de..824de99a9 100644 --- a/Essentials/src/com/earth2me/essentials/IEssentials.java +++ b/Essentials/src/com/earth2me/essentials/IEssentials.java @@ -71,4 +71,6 @@ public interface IEssentials TNTExplodeListener getTNTListener(); EssentialsDependancyChecker getDependancyChecker(); + + IPermissionsHandler getPermissionsHandler(); } diff --git a/Essentials/src/com/earth2me/essentials/IPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/IPermissionsHandler.java new file mode 100644 index 000000000..a7bcc80b7 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/IPermissionsHandler.java @@ -0,0 +1,21 @@ +package com.earth2me.essentials; + +import org.bukkit.entity.Player; + + +public interface IPermissionsHandler +{ + + String getGroup(Player base); + + boolean canBuild(Player base, String group); + + boolean inGroup(Player base, String group); + + boolean hasPermission(Player base, String node); + + String getPrefix(Player base); + + String getSuffix(Player base); + +} diff --git a/Essentials/src/com/earth2me/essentials/Permissions2Handler.java b/Essentials/src/com/earth2me/essentials/Permissions2Handler.java new file mode 100644 index 000000000..c588bb5fa --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/Permissions2Handler.java @@ -0,0 +1,48 @@ +package com.earth2me.essentials; + +import com.nijiko.permissions.PermissionHandler; +import com.nijikokun.bukkit.Permissions.Permissions; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + + +public class Permissions2Handler implements IPermissionsHandler +{ + private final transient PermissionHandler permissionHandler; + + Permissions2Handler(final Plugin permissionsPlugin) + { + permissionHandler = ((Permissions)permissionsPlugin).getHandler(); + } + + public String getGroup(final Player base) + { + return permissionHandler.getGroup(base.getWorld().getName(), base.getName()); + } + + public boolean canBuild(final Player base, final String group) + { + return permissionHandler.canGroupBuild(base.getWorld().getName(), getGroup(base)); + } + + public boolean inGroup(final Player base, final String group) + { + return permissionHandler.inGroup(base.getWorld().getName(), base.getName(), group); + } + + public boolean hasPermission(final Player base, final String node) + { + return permissionHandler.permission(base, node); + } + + public String getPrefix(final Player base) + { + return permissionHandler.getGroupPrefix(base.getWorld().getName(), getGroup(base)); + } + + public String getSuffix(final Player base) + { + return permissionHandler.getGroupSuffix(base.getWorld().getName(), getGroup(base)); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/Permissions3Handler.java b/Essentials/src/com/earth2me/essentials/Permissions3Handler.java new file mode 100644 index 000000000..99c95da0a --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/Permissions3Handler.java @@ -0,0 +1,48 @@ +package com.earth2me.essentials; + +import com.nijiko.permissions.PermissionHandler; +import com.nijikokun.bukkit.Permissions.Permissions; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + + +public class Permissions3Handler implements IPermissionsHandler +{ + private final transient PermissionHandler permissionHandler; + + Permissions3Handler(final Plugin permissionsPlugin) + { + permissionHandler = ((Permissions)permissionsPlugin).getHandler(); + } + + public String getGroup(final Player base) + { + return permissionHandler.getPrimaryGroup(base.getWorld().getName(), base.getName()); + } + + public boolean canBuild(final Player base, final String group) + { + return permissionHandler.canUserBuild(base.getWorld().getName(), base.getName()); + } + + public boolean inGroup(final Player base, final String group) + { + return permissionHandler.inGroup(base.getWorld().getName(), base.getName(), group); + } + + public boolean hasPermission(final Player base, final String node) + { + return permissionHandler.has(base, node); + } + + public String getPrefix(final Player base) + { + return permissionHandler.getUserPrefix(base.getWorld().getName(), base.getName()); + } + + public String getSuffix(final Player base) + { + return permissionHandler.getUserSuffix(base.getWorld().getName(), base.getName()); + } + +} diff --git a/Essentials/src/com/earth2me/essentials/PlayerExtension.java b/Essentials/src/com/earth2me/essentials/PlayerExtension.java index 901edd345..c090dff2f 100644 --- a/Essentials/src/com/earth2me/essentials/PlayerExtension.java +++ b/Essentials/src/com/earth2me/essentials/PlayerExtension.java @@ -53,38 +53,17 @@ public class PlayerExtension extends PlayerWrapper public String getGroup() { - try - { - return com.nijikokun.bukkit.Permissions.Permissions.Security.getGroup(getWorld().getName(), getName()); - } - catch (Throwable ex) - { - return "default"; - } + return ess.getPermissionsHandler().getGroup(base); } public boolean inGroup(String group) { - try - { - return com.nijikokun.bukkit.Permissions.Permissions.Security.inGroup(getWorld().getName(), getName(), group); - } - catch (Throwable ex) - { - return false; - } + return ess.getPermissionsHandler().inGroup(base, group); } public boolean canBuild() { - try - { - return isOp() || com.nijikokun.bukkit.Permissions.Permissions.Security.canGroupBuild(getWorld().getName(), getGroup()); - } - catch (Throwable ex) - { - return true; - } + return ess.getPermissionsHandler().canBuild(base, getGroup()); } public EntityPlayer getHandle() diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 8365aabe3..befbf111f 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -48,16 +48,8 @@ public class User extends UserData implements Comparable<User>, IReplyTo, IUser { return false; } - - try - { - return com.nijikokun.bukkit.Permissions.Permissions.Security.permission(base, node); - } - catch (Throwable ex) - { - String[] cmds = node.split("\\.", 2); - return !ess.getSettings().isCommandRestricted(cmds[cmds.length - 1]); - } + + return ess.getPermissionsHandler().hasPermission(this, node); } public void healCooldown() throws Exception |