From 057c9cb3f5e53535d8124326a4bb783dd24700a2 Mon Sep 17 00:00:00 2001 From: snowleo Date: Tue, 30 Aug 2011 23:26:23 +0200 Subject: [PATCH 1/7] Minor rewrite of Permissions package, all the stuff is now in one place. --- .../com/earth2me/essentials/Essentials.java | 14 +- .../essentials/EssentialsPluginListener.java | 93 +-------- .../com/earth2me/essentials/IEssentials.java | 6 +- .../essentials/perm/BPermissionsHandler.java | 21 +- .../perm/ConfigPermissionsHandler.java | 18 +- .../essentials/perm/IPermissionsHandler.java | 5 +- .../perm/NullPermissionsHandler.java | 51 +++++ .../essentials/perm/Permissions2Handler.java | 17 +- .../essentials/perm/Permissions3Handler.java | 11 +- .../perm/PermissionsBukkitHandler.java | 39 +++- .../essentials/perm/PermissionsExHandler.java | 19 +- .../essentials/perm/PermissionsHandler.java | 179 ++++++++++++++++++ .../essentials/perm/SuperpermsHandler.java | 21 +- 13 files changed, 349 insertions(+), 145 deletions(-) create mode 100644 Essentials/src/com/earth2me/essentials/perm/NullPermissionsHandler.java create mode 100644 Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index 3ea10f64a..d88edbdae 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -30,6 +30,7 @@ import org.bukkit.command.CommandSender; import com.earth2me.essentials.commands.IEssentialsCommand; import com.earth2me.essentials.commands.NoChargeException; import com.earth2me.essentials.commands.NotEnoughArgumentsException; +import com.earth2me.essentials.perm.PermissionsHandler; import com.earth2me.essentials.register.payment.Methods; import com.earth2me.essentials.signs.SignBlockListener; import com.earth2me.essentials.signs.SignEntityListener; @@ -65,7 +66,7 @@ public class Essentials extends JavaPlugin implements IEssentials private transient final Methods paymentMethod = new Methods(); private transient final static boolean enableErrorLogging = false; private transient final EssentialsErrorHandler errorHandler = new EssentialsErrorHandler(); - private transient IPermissionsHandler permissionsHandler; + private transient PermissionsHandler permissionsHandler; private transient UserMap userMap; @Override @@ -90,7 +91,7 @@ public class Essentials extends JavaPlugin implements IEssentials this.initialize(null, server, new PluginDescriptionFile(new FileReader(new File("src" + File.separator + "plugin.yml"))), dataFolder, null, null); settings = new Settings(this); userMap = new UserMap(this); - permissionsHandler = new ConfigPermissionsHandler(this); + permissionsHandler = new PermissionsHandler(this, false); Economy.setEss(this); } @@ -151,6 +152,7 @@ public class Essentials extends JavaPlugin implements IEssentials LOGGER.log(Level.INFO, Util.i18n("bukkitFormatChanged")); } + permissionsHandler = new PermissionsHandler(this, settings.useBukkitPermissions()); final EssentialsPluginListener serverListener = new EssentialsPluginListener(this); pm.registerEvent(Type.PLUGIN_ENABLE, serverListener, Priority.Low, this); pm.registerEvent(Type.PLUGIN_DISABLE, serverListener, Priority.Low, this); @@ -665,17 +667,11 @@ public class Essentials extends JavaPlugin implements IEssentials } @Override - public IPermissionsHandler getPermissionsHandler() + public PermissionsHandler getPermissionsHandler() { return permissionsHandler; } - @Override - public void setPermissionsHandler(final IPermissionsHandler handler) - { - this.permissionsHandler = handler; - } - @Override public BanWorkaround getBans() { diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java index cd969a10c..e64496171 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPluginListener.java @@ -1,19 +1,10 @@ package com.earth2me.essentials; -import com.earth2me.essentials.perm.BPermissionsHandler; -import com.earth2me.essentials.perm.ConfigPermissionsHandler; -import com.earth2me.essentials.perm.Permissions3Handler; -import com.earth2me.essentials.perm.Permissions2Handler; -import com.earth2me.essentials.perm.PermissionsBukkitHandler; -import com.earth2me.essentials.perm.PermissionsExHandler; -import com.earth2me.essentials.perm.SuperpermsHandler; import java.util.logging.Level; import java.util.logging.Logger; import org.bukkit.event.server.PluginDisableEvent; import org.bukkit.event.server.PluginEnableEvent; import org.bukkit.event.server.ServerListener; -import org.bukkit.plugin.Plugin; -import org.bukkit.plugin.PluginManager; public class EssentialsPluginListener extends ServerListener implements IConf @@ -29,7 +20,7 @@ public class EssentialsPluginListener extends ServerListener implements IConf @Override public void onPluginEnable(final PluginEnableEvent event) { - checkPermissions(); + ess.getPermissionsHandler().checkPermissions(); if (!ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().setMethod(event.getPlugin())) { LOGGER.log(Level.INFO, "[Essentials] Payment method found (" + ess.getPaymentMethod().getMethod().getName() + " version: " + ess.getPaymentMethod().getMethod().getVersion() + ")"); @@ -38,9 +29,9 @@ public class EssentialsPluginListener extends ServerListener implements IConf } @Override - public void onPluginDisable(PluginDisableEvent event) + public void onPluginDisable(final PluginDisableEvent event) { - checkPermissions(); + ess.getPermissionsHandler().checkPermissions(); // Check to see if the plugin thats being disabled is the one we are using if (ess.getPaymentMethod() != null && ess.getPaymentMethod().hasMethod() && ess.getPaymentMethod().checkDisabled(event.getPlugin())) { @@ -48,84 +39,10 @@ public class EssentialsPluginListener extends ServerListener implements IConf } } - private void checkPermissions() - { - final PluginManager pm = ess.getServer().getPluginManager(); - final Plugin permissionsExPlugin = pm.getPlugin("PermissionsEx"); - - if (permissionsExPlugin == null || !permissionsExPlugin.isEnabled()) - { - final Plugin permissionsPlugin = pm.getPlugin("Permissions"); - if (permissionsPlugin == null || !permissionsPlugin.isEnabled()) - { - final Plugin permissionsBukkitPlugin = pm.getPlugin("PermissionsBukkit"); - final Plugin bPermissionsPlugin = pm.getPlugin("bPermissions"); - if (permissionsBukkitPlugin != null && permissionsBukkitPlugin.isEnabled()) - { - if (!(ess.getPermissionsHandler() instanceof PermissionsBukkitHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using PermissionsBukkit based permissions."); - ess.setPermissionsHandler(new PermissionsBukkitHandler(permissionsBukkitPlugin)); - } - } - else if (bPermissionsPlugin != null && bPermissionsPlugin.isEnabled()) - { - if (!(ess.getPermissionsHandler() instanceof BPermissionsHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions."); - ess.setPermissionsHandler(new BPermissionsHandler()); - } - } - else if (ess.getSettings().useBukkitPermissions()) - { - if (!(ess.getPermissionsHandler() instanceof SuperpermsHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using superperms based permissions."); - ess.setPermissionsHandler(new SuperpermsHandler()); - } - } - else - { - if (!(ess.getPermissionsHandler() instanceof ConfigPermissionsHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using config based permissions. Enable superperms in config."); - ess.setPermissionsHandler(new ConfigPermissionsHandler(ess)); - } - } - } - else - { - if (permissionsPlugin.getDescription().getVersion().charAt(0) == '3') - { - if (!(ess.getPermissionsHandler() instanceof Permissions3Handler)) - { - LOGGER.log(Level.INFO, "Essentials: Using Permissions 3 based permissions."); - ess.setPermissionsHandler(new Permissions3Handler(permissionsPlugin)); - } - } - else - { - if (!(ess.getPermissionsHandler() instanceof Permissions2Handler)) - { - LOGGER.log(Level.INFO, "Essentials: Using Permissions 2 based permissions."); - ess.setPermissionsHandler(new Permissions2Handler(permissionsPlugin)); - } - } - } - } - else - { - if (!(ess.getPermissionsHandler() instanceof PermissionsExHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using PermissionsEx based permissions."); - ess.setPermissionsHandler(new PermissionsExHandler()); - } - } - } - @Override public void reloadConfig() { - checkPermissions(); + ess.getPermissionsHandler().setUseSuperperms(ess.getSettings().useBukkitPermissions()); + ess.getPermissionsHandler().checkPermissions(); } } diff --git a/Essentials/src/com/earth2me/essentials/IEssentials.java b/Essentials/src/com/earth2me/essentials/IEssentials.java index 0512b629e..b47ebd5ab 100644 --- a/Essentials/src/com/earth2me/essentials/IEssentials.java +++ b/Essentials/src/com/earth2me/essentials/IEssentials.java @@ -1,6 +1,6 @@ package com.earth2me.essentials; -import com.earth2me.essentials.perm.IPermissionsHandler; +import com.earth2me.essentials.perm.PermissionsHandler; import com.earth2me.essentials.register.payment.Methods; import org.bukkit.World; import org.bukkit.command.Command; @@ -57,9 +57,7 @@ public interface IEssentials extends Plugin TNTExplodeListener getTNTListener(); - IPermissionsHandler getPermissionsHandler(); - - void setPermissionsHandler(IPermissionsHandler handler); + PermissionsHandler getPermissionsHandler(); void showError(final CommandSender sender, final Throwable exception, final String commandLabel); diff --git a/Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java index 82f793ee0..90b905113 100644 --- a/Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/BPermissionsHandler.java @@ -19,28 +19,29 @@ public class BPermissionsHandler extends SuperpermsHandler @Override public String getGroup(final Player base) { - final PermissionSet pset = wpm.getPermissionSet(base.getWorld()); - if (pset == null) - { - return "default"; - } - final List groups = pset.getGroups(base); + final List groups = getGroups(base); if (groups == null || groups.isEmpty()) { - return "default"; + return null; } return groups.get(0); } @Override - public boolean inGroup(final Player base, final String group) + public List getGroups(final Player base) { final PermissionSet pset = wpm.getPermissionSet(base.getWorld()); if (pset == null) { - return false; + return null; } - final List groups = pset.getGroups(base); + return pset.getGroups(base); + } + + @Override + public boolean inGroup(final Player base, final String group) + { + final List groups = getGroups(base); if (groups == null || groups.isEmpty()) { return false; diff --git a/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java index 82d285b1f..fad479444 100644 --- a/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/ConfigPermissionsHandler.java @@ -1,22 +1,30 @@ package com.earth2me.essentials.perm; import com.earth2me.essentials.IEssentials; +import java.util.List; import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; public class ConfigPermissionsHandler implements IPermissionsHandler { private final transient IEssentials ess; - public ConfigPermissionsHandler(final IEssentials ess) + public ConfigPermissionsHandler(final Plugin ess) { - this.ess = ess; + this.ess = (IEssentials)ess; } @Override public String getGroup(final Player base) { - return "default"; + return null; + } + + @Override + public List getGroups(final Player base) + { + return null; } @Override @@ -42,12 +50,12 @@ public class ConfigPermissionsHandler implements IPermissionsHandler @Override public String getPrefix(final Player base) { - return ""; + return null; } @Override public String getSuffix(final Player base) { - return ""; + return null; } } diff --git a/Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java index c7fddb6c8..27af48e8c 100644 --- a/Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/IPermissionsHandler.java @@ -1,13 +1,15 @@ package com.earth2me.essentials.perm; +import java.util.List; import org.bukkit.entity.Player; public interface IPermissionsHandler { - String getGroup(Player base); + List getGroups(Player base); + boolean canBuild(Player base, String group); boolean inGroup(Player base, String group); @@ -17,5 +19,4 @@ public interface IPermissionsHandler String getPrefix(Player base); String getSuffix(Player base); - } diff --git a/Essentials/src/com/earth2me/essentials/perm/NullPermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/NullPermissionsHandler.java new file mode 100644 index 000000000..b51aeb055 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/perm/NullPermissionsHandler.java @@ -0,0 +1,51 @@ +package com.earth2me.essentials.perm; + +import java.util.Collections; +import java.util.List; +import org.bukkit.entity.Player; + + +public class NullPermissionsHandler implements IPermissionsHandler +{ + @Override + public String getGroup(final Player base) + { + return null; + } + + @Override + public List getGroups(final Player base) + { + return Collections.emptyList(); + } + + @Override + public boolean canBuild(final Player base, final String group) + { + return false; + } + + @Override + public boolean inGroup(final Player base, final String group) + { + return false; + } + + @Override + public boolean hasPermission(final Player base, final String node) + { + return false; + } + + @Override + public String getPrefix(final Player base) + { + return null; + } + + @Override + public String getSuffix(final Player base) + { + return null; + } +} diff --git a/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java b/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java index 0d7b45cb7..6b5ff5b73 100644 --- a/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java +++ b/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java @@ -2,6 +2,8 @@ package com.earth2me.essentials.perm; import com.nijiko.permissions.PermissionHandler; import com.nijikokun.bukkit.Permissions.Permissions; +import java.util.Arrays; +import java.util.List; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -18,8 +20,13 @@ public class Permissions2Handler implements IPermissionsHandler @Override public String getGroup(final Player base) { - final String group = permissionHandler.getGroup(base.getWorld().getName(), base.getName()); - return group == null ? "default" : group; + return permissionHandler.getGroup(base.getWorld().getName(), base.getName()); + } + + @Override + public List getGroups(final Player base) + { + return Arrays.asList(permissionHandler.getGroups(base.getWorld().getName(), base.getName())); } @Override @@ -43,14 +50,12 @@ public class Permissions2Handler implements IPermissionsHandler @Override public String getPrefix(final Player base) { - final String prefix = permissionHandler.getGroupPrefix(base.getWorld().getName(), getGroup(base)); - return prefix == null ? "" : prefix; + return permissionHandler.getGroupPrefix(base.getWorld().getName(), getGroup(base)); } @Override public String getSuffix(final Player base) { - final String suffix = permissionHandler.getGroupSuffix(base.getWorld().getName(), getGroup(base)); - return suffix == null ? "" : suffix; + return permissionHandler.getGroupSuffix(base.getWorld().getName(), getGroup(base)); } } diff --git a/Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java b/Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java index c0ac249a8..190d5b8c5 100644 --- a/Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java +++ b/Essentials/src/com/earth2me/essentials/perm/Permissions3Handler.java @@ -2,6 +2,8 @@ package com.earth2me.essentials.perm; import com.nijiko.permissions.PermissionHandler; import com.nijikokun.bukkit.Permissions.Permissions; +import java.util.Arrays; +import java.util.List; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -9,7 +11,7 @@ import org.bukkit.plugin.Plugin; public class Permissions3Handler implements IPermissionsHandler { private final transient PermissionHandler permissionHandler; - + public Permissions3Handler(final Plugin permissionsPlugin) { permissionHandler = ((Permissions)permissionsPlugin).getHandler(); @@ -21,6 +23,12 @@ public class Permissions3Handler implements IPermissionsHandler return permissionHandler.getPrimaryGroup(base.getWorld().getName(), base.getName()); } + @Override + public List getGroups(final Player base) + { + return Arrays.asList(permissionHandler.getGroups(base.getWorld().getName(), base.getName())); + } + @Override public boolean canBuild(final Player base, final String group) { @@ -50,5 +58,4 @@ public class Permissions3Handler implements IPermissionsHandler { return permissionHandler.getUserSuffix(base.getWorld().getName(), base.getName()); } - } diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java index 9fd87905e..d47c3c8a4 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsBukkitHandler.java @@ -3,6 +3,8 @@ package com.earth2me.essentials.perm; import com.platymuus.bukkit.permissions.Group; import com.platymuus.bukkit.permissions.PermissionInfo; import com.platymuus.bukkit.permissions.PermissionsPlugin; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; @@ -20,32 +22,49 @@ public class PermissionsBukkitHandler extends SuperpermsHandler @Override public String getGroup(final Player base) { - final PermissionInfo info = plugin.getPlayerInfo(base.getName()); - if (info == null) - { - return "default"; - } - final List groups = info.getGroups(); + final List groups = getPBGroups(base); if (groups == null || groups.isEmpty()) { - return "default"; + return null; } return groups.get(0).getName(); } @Override - public boolean inGroup(final Player base, final String group) + public List getGroups(final Player base) + { + final List groups = getPBGroups(base); + if (groups.size() == 1) + { + return Collections.singletonList(groups.get(0).getName()); + } + final List groupNames = new ArrayList(groups.size()); + for (Group group : groups) + { + groupNames.add(group.getName()); + } + return groupNames; + } + + private List getPBGroups(final Player base) { final PermissionInfo info = plugin.getPlayerInfo(base.getName()); if (info == null) { - return false; + return Collections.emptyList(); } final List groups = info.getGroups(); if (groups == null || groups.isEmpty()) { - return false; + return Collections.emptyList(); } + return groups; + } + + @Override + public boolean inGroup(final Player base, final String group) + { + final List groups = getPBGroups(base); for (Group group1 : groups) { if (group1.getName().equalsIgnoreCase(group)) diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java index 28b056c0a..5b7bb7b81 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsExHandler.java @@ -1,5 +1,7 @@ package com.earth2me.essentials.perm; +import java.util.Arrays; +import java.util.List; import org.bukkit.entity.Player; import ru.tehkode.permissions.PermissionManager; import ru.tehkode.permissions.PermissionUser; @@ -21,11 +23,22 @@ public class PermissionsExHandler implements IPermissionsHandler final PermissionUser user = manager.getUser(base.getName()); if (user == null) { - return "default"; + return null; } return user.getGroupsNames()[0]; } + @Override + public List getGroups(final Player base) + { + final PermissionUser user = manager.getUser(base.getName()); + if (user == null) + { + return null; + } + return Arrays.asList(user.getGroupsNames()); + } + @Override public boolean canBuild(final Player base, final String group) { @@ -62,7 +75,7 @@ public class PermissionsExHandler implements IPermissionsHandler final PermissionUser user = manager.getUser(base.getName()); if (user == null) { - return ""; + return null; } return user.getPrefix(); } @@ -73,7 +86,7 @@ public class PermissionsExHandler implements IPermissionsHandler final PermissionUser user = manager.getUser(base.getName()); if (user == null) { - return ""; + return null; } return user.getSuffix(); } diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java new file mode 100644 index 000000000..2843b5d92 --- /dev/null +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -0,0 +1,179 @@ +package com.earth2me.essentials.perm; + +import java.util.Collections; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.PluginManager; + + +public class PermissionsHandler implements IPermissionsHandler +{ + private transient IPermissionsHandler handler = new NullPermissionsHandler(); + private transient String defaultGroup = "default"; + private final transient Plugin plugin; + private final static Logger LOGGER = Logger.getLogger("Minecraft"); + private transient boolean useSuperperms = false; + + public PermissionsHandler(final Plugin plugin) + { + this.plugin = plugin; + } + + public PermissionsHandler(final Plugin plugin, final boolean useSuperperms) + { + this.plugin = plugin; + this.useSuperperms = useSuperperms; + } + + public PermissionsHandler(final Plugin plugin, final String defaultGroup) + { + this.plugin = plugin; + this.defaultGroup = defaultGroup; + } + + @Override + public String getGroup(final Player base) + { + String group = handler.getGroup(base); + if (group == null) + { + group = defaultGroup; + } + return group; + } + + @Override + public List getGroups(final Player base) + { + List groups = handler.getGroups(base); + if (groups == null || groups.isEmpty()) + { + groups = Collections.singletonList(defaultGroup); + } + return Collections.unmodifiableList(groups); + } + + @Override + public boolean canBuild(final Player base, final String group) + { + return handler.canBuild(base, group); + } + + @Override + public boolean inGroup(final Player base, final String group) + { + return handler.inGroup(base, group); + } + + @Override + public boolean hasPermission(final Player base, final String node) + { + return handler.inGroup(base, node); + } + + @Override + public String getPrefix(final Player base) + { + String prefix = handler.getPrefix(base); + if (prefix == null) + { + prefix = ""; + } + return prefix; + } + + @Override + public String getSuffix(final Player base) + { + String suffix = handler.getSuffix(base); + if (suffix == null) + { + suffix = ""; + } + return suffix; + } + + public void checkPermissions() + { + final PluginManager pluginManager = plugin.getServer().getPluginManager(); + final Plugin permExPlugin = pluginManager.getPlugin("PermissionsEx"); + + if (permExPlugin == null || !permExPlugin.isEnabled()) + { + final Plugin permBukkitPlugin = pluginManager.getPlugin("PermissionsBukkit"); + final Plugin bPermPlugin = pluginManager.getPlugin("bPermissions"); + final Plugin permPlugin = pluginManager.getPlugin("Permissions"); + + if (permBukkitPlugin != null && permBukkitPlugin.isEnabled()) + { + if (!(handler instanceof PermissionsBukkitHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using PermissionsBukkit based permissions."); + handler = new PermissionsBukkitHandler(permBukkitPlugin); + } + } + else if (bPermPlugin != null && bPermPlugin.isEnabled()) + { + if (!(handler instanceof BPermissionsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions."); + handler = new BPermissionsHandler(); + } + } + else if (permPlugin == null || !permPlugin.isEnabled()) + { + if (useSuperperms) + { + if (!(handler instanceof SuperpermsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using superperms based permissions."); + handler = new SuperpermsHandler(); + } + } + else + { + if (!(handler instanceof ConfigPermissionsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using config based permissions. Enable superperms in config."); + handler = new ConfigPermissionsHandler(plugin); + } + } + } + else + { + if (permPlugin.getDescription().getVersion().charAt(0) == '3') + { + if (!(handler instanceof Permissions3Handler)) + { + LOGGER.log(Level.INFO, "Essentials: Using Permissions 3 based permissions."); + handler = new Permissions3Handler(permPlugin); + } + } + else + { + if (!(handler instanceof Permissions2Handler)) + { + LOGGER.log(Level.INFO, "Essentials: Using Permissions 2 based permissions."); + handler = new Permissions2Handler(permPlugin); + } + } + } + } + else + { + if (!(handler instanceof PermissionsExHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using PermissionsEx based permissions."); + handler = new PermissionsExHandler(); + } + } + } + + public void setUseSuperperms(final boolean useSuperperms) + { + this.useSuperperms = useSuperperms; + } +} diff --git a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java index 60b1c5a3d..70a118bcf 100644 --- a/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/SuperpermsHandler.java @@ -1,5 +1,6 @@ package com.earth2me.essentials.perm; +import java.util.List; import org.bukkit.entity.Player; @@ -8,7 +9,13 @@ public class SuperpermsHandler implements IPermissionsHandler @Override public String getGroup(final Player base) { - return "default"; + return null; + } + + @Override + public List getGroups(final Player base) + { + return null; } @Override @@ -31,14 +38,16 @@ public class SuperpermsHandler implements IPermissionsHandler return false; } final String[] parts = node.split("\\."); - final StringBuilder sb = new StringBuilder(); + final StringBuilder builder = new StringBuilder(node.length()); for (String part : parts) { - if (base.hasPermission(sb.toString() + "*")) + builder.append('*'); + if (base.hasPermission(builder.toString())) { return true; } - sb.append(part).append("."); + builder.deleteCharAt(builder.length() - 1); + builder.append(part).append('.'); } return base.hasPermission(node); } @@ -46,12 +55,12 @@ public class SuperpermsHandler implements IPermissionsHandler @Override public String getPrefix(final Player base) { - return ""; + return null; } @Override public String getSuffix(final Player base) { - return ""; + return null; } } From d3dd4980a40f3fb378dc4e5b7525cdb25b780b50 Mon Sep 17 00:00:00 2001 From: snowleo Date: Wed, 31 Aug 2011 12:51:59 +0200 Subject: [PATCH 2/7] Using base instead of our wrapped player for permission check. --- .../src/com/earth2me/essentials/User.java | 21 ++++++++++++------- .../essentials/perm/Permissions2Handler.java | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index 918f0f128..fa5c7bd2d 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -17,7 +17,7 @@ public class User extends UserData implements Comparable, IReplyTo, IUser private transient User teleportRequester; private transient boolean teleportRequestHere; private transient final Teleport teleport; - private transient long lastOnlineActivity ; + private transient long lastOnlineActivity; private transient long lastActivity = System.currentTimeMillis(); private boolean hidden = false; private transient boolean godStateBeforeAfk; @@ -50,6 +50,11 @@ public class User extends UserData implements Comparable, IReplyTo, IUser @Override public boolean isAuthorized(final String node) { + if (base instanceof OfflinePlayer) + { + return false; + } + if (isOp()) { return true; @@ -60,7 +65,7 @@ public class User extends UserData implements Comparable, IReplyTo, IUser return false; } - return ess.getPermissionsHandler().hasPermission(this, node); + return ess.getPermissionsHandler().hasPermission(base, node); } public void healCooldown() throws Exception @@ -264,8 +269,8 @@ public class User extends UserData implements Comparable, IReplyTo, IUser if (ess.getSettings().addPrefixSuffix()) { - final String prefix = ess.getPermissionsHandler().getPrefix(this).replace('&', '§').replace("{WORLDNAME}", this.getWorld().getName()); - final String suffix = ess.getPermissionsHandler().getSuffix(this).replace('&', '§').replace("{WORLDNAME}", this.getWorld().getName()); + final String prefix = ess.getPermissionsHandler().getPrefix(base).replace('&', '§').replace("{WORLDNAME}", this.getWorld().getName()); + final String suffix = ess.getPermissionsHandler().getSuffix(base).replace('&', '§').replace("{WORLDNAME}", this.getWorld().getName()); nickname.insert(0, prefix); nickname.append(suffix); @@ -341,11 +346,13 @@ public class User extends UserData implements Comparable, IReplyTo, IUser public void setAfk(final boolean set) { this.setSleepingIgnored(this.isAuthorized("essentials.sleepingignored") ? true : set); - if (set && !isAfk() && ess.getSettings().getFreezeAfkPlayers()) { + if (set && !isAfk() && ess.getSettings().getFreezeAfkPlayers()) + { godStateBeforeAfk = isGodModeEnabled(); setGodModeEnabled(true); } - if (!set && isAfk() && ess.getSettings().getFreezeAfkPlayers()) { + if (!set && isAfk() && ess.getSettings().getFreezeAfkPlayers()) + { setGodModeEnabled(godStateBeforeAfk); } super.setAfk(set); @@ -423,7 +430,7 @@ public class User extends UserData implements Comparable, IReplyTo, IUser if (autoafkkick > 0 && lastActivity + autoafkkick * 1000 < System.currentTimeMillis() && !isAuthorized("essentials.kick.exempt") && !isAuthorized("essentials.afk.kickexempt")) { - final String kickReason = Util.format("autoAfkKickReason", autoafkkick/60.0); + final String kickReason = Util.format("autoAfkKickReason", autoafkkick / 60.0); kickPlayer(kickReason); diff --git a/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java b/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java index 6b5ff5b73..c501369d0 100644 --- a/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java +++ b/Essentials/src/com/earth2me/essentials/perm/Permissions2Handler.java @@ -44,7 +44,7 @@ public class Permissions2Handler implements IPermissionsHandler @Override public boolean hasPermission(final Player base, final String node) { - return permissionHandler.permission(base, node); + return permissionHandler.permission(base.getWorld().getName(), base.getName(), node); } @Override From c8f6ea7f8e802ec063a9674d300fe520042696d0 Mon Sep 17 00:00:00 2001 From: snowleo Date: Wed, 31 Aug 2011 13:02:21 +0200 Subject: [PATCH 3/7] Cleaner checkPermissions() --- .../essentials/perm/PermissionsHandler.java | 125 +++++++++--------- 1 file changed, 63 insertions(+), 62 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index 2843b5d92..9fbf83f94 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -101,74 +101,75 @@ public class PermissionsHandler implements IPermissionsHandler final PluginManager pluginManager = plugin.getServer().getPluginManager(); final Plugin permExPlugin = pluginManager.getPlugin("PermissionsEx"); - if (permExPlugin == null || !permExPlugin.isEnabled()) - { - final Plugin permBukkitPlugin = pluginManager.getPlugin("PermissionsBukkit"); - final Plugin bPermPlugin = pluginManager.getPlugin("bPermissions"); - final Plugin permPlugin = pluginManager.getPlugin("Permissions"); - - if (permBukkitPlugin != null && permBukkitPlugin.isEnabled()) - { - if (!(handler instanceof PermissionsBukkitHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using PermissionsBukkit based permissions."); - handler = new PermissionsBukkitHandler(permBukkitPlugin); - } - } - else if (bPermPlugin != null && bPermPlugin.isEnabled()) - { - if (!(handler instanceof BPermissionsHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions."); - handler = new BPermissionsHandler(); - } - } - else if (permPlugin == null || !permPlugin.isEnabled()) - { - if (useSuperperms) - { - if (!(handler instanceof SuperpermsHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using superperms based permissions."); - handler = new SuperpermsHandler(); - } - } - else - { - if (!(handler instanceof ConfigPermissionsHandler)) - { - LOGGER.log(Level.INFO, "Essentials: Using config based permissions. Enable superperms in config."); - handler = new ConfigPermissionsHandler(plugin); - } - } - } - else - { - if (permPlugin.getDescription().getVersion().charAt(0) == '3') - { - if (!(handler instanceof Permissions3Handler)) - { - LOGGER.log(Level.INFO, "Essentials: Using Permissions 3 based permissions."); - handler = new Permissions3Handler(permPlugin); - } - } - else - { - if (!(handler instanceof Permissions2Handler)) - { - LOGGER.log(Level.INFO, "Essentials: Using Permissions 2 based permissions."); - handler = new Permissions2Handler(permPlugin); - } - } - } - } - else + if (permExPlugin != null && permExPlugin.isEnabled()) { if (!(handler instanceof PermissionsExHandler)) { LOGGER.log(Level.INFO, "Essentials: Using PermissionsEx based permissions."); handler = new PermissionsExHandler(); } + return; + } + + final Plugin permBukkitPlugin = pluginManager.getPlugin("PermissionsBukkit"); + if (permBukkitPlugin != null && permBukkitPlugin.isEnabled()) + { + if (!(handler instanceof PermissionsBukkitHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using PermissionsBukkit based permissions."); + handler = new PermissionsBukkitHandler(permBukkitPlugin); + } + return; + } + + final Plugin bPermPlugin = pluginManager.getPlugin("bPermissions"); + if (bPermPlugin != null && bPermPlugin.isEnabled()) + { + if (!(handler instanceof BPermissionsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using bPermissions based permissions."); + handler = new BPermissionsHandler(); + } + return; + } + + final Plugin permPlugin = pluginManager.getPlugin("Permissions"); + if (permPlugin != null && permPlugin.isEnabled()) + { + if (permPlugin.getDescription().getVersion().charAt(0) == '3') + { + if (!(handler instanceof Permissions3Handler)) + { + LOGGER.log(Level.INFO, "Essentials: Using Permissions 3 based permissions."); + handler = new Permissions3Handler(permPlugin); + } + } + else + { + if (!(handler instanceof Permissions2Handler)) + { + LOGGER.log(Level.INFO, "Essentials: Using Permissions 2 based permissions."); + handler = new Permissions2Handler(permPlugin); + } + } + return; + } + + if (useSuperperms) + { + if (!(handler instanceof SuperpermsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using superperms based permissions."); + handler = new SuperpermsHandler(); + } + } + else + { + if (!(handler instanceof ConfigPermissionsHandler)) + { + LOGGER.log(Level.INFO, "Essentials: Using config based permissions. Enable superperms in config."); + handler = new ConfigPermissionsHandler(plugin); + } } } From d7af6792433f3db61c22d33d312609ae4b511b6b Mon Sep 17 00:00:00 2001 From: snowleo Date: Wed, 31 Aug 2011 13:03:01 +0200 Subject: [PATCH 4/7] Cleanup --- .../src/com/earth2me/essentials/perm/PermissionsHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index 9fbf83f94..5c976103a 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -99,8 +99,8 @@ public class PermissionsHandler implements IPermissionsHandler public void checkPermissions() { final PluginManager pluginManager = plugin.getServer().getPluginManager(); + final Plugin permExPlugin = pluginManager.getPlugin("PermissionsEx"); - if (permExPlugin != null && permExPlugin.isEnabled()) { if (!(handler instanceof PermissionsExHandler)) From bb1cad1bc1b2ad742c1b8a9f6852fbb575646f99 Mon Sep 17 00:00:00 2001 From: snowleo Date: Thu, 1 Sep 2011 11:52:52 +0200 Subject: [PATCH 5/7] Copy&Paste Bugs are always stupid --- .../src/com/earth2me/essentials/perm/PermissionsHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java index 5c976103a..8adff346a 100644 --- a/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java +++ b/Essentials/src/com/earth2me/essentials/perm/PermissionsHandler.java @@ -71,7 +71,7 @@ public class PermissionsHandler implements IPermissionsHandler @Override public boolean hasPermission(final Player base, final String node) { - return handler.inGroup(base, node); + return handler.hasPermission(base, node); } @Override From e0d913dbaf477ddfdd409ada66f9f0cd0c421226 Mon Sep 17 00:00:00 2001 From: snowleo Date: Thu, 1 Sep 2011 13:47:49 +0200 Subject: [PATCH 6/7] Sample permissions for PermissionsBukkit, PermissionsEx and bPermissions --- Essentials/src/examples/bpermissions.yml | 120 ++++++++++++++ Essentials/src/examples/permissionsbukkit.yml | 135 ++++++++++++++++ Essentials/src/examples/permissionsex.yml | 150 ++++++++++++++++++ 3 files changed, 405 insertions(+) create mode 100644 Essentials/src/examples/bpermissions.yml create mode 100644 Essentials/src/examples/permissionsbukkit.yml create mode 100644 Essentials/src/examples/permissionsex.yml diff --git a/Essentials/src/examples/bpermissions.yml b/Essentials/src/examples/bpermissions.yml new file mode 100644 index 000000000..9ba493fae --- /dev/null +++ b/Essentials/src/examples/bpermissions.yml @@ -0,0 +1,120 @@ +default: Default +groups: + Default: + - essentials.spawn + - essentials.rules + - essentials.motd + - essentials.list + - essentials.helpop + - essentials.help + Builder: + - essentials.build + - essentials.afk + - essentials.back + - essentials.back.ondeath + - essentials.balance + - essentials.balance.others + - essentials.balancetop + - essentials.chat.color + - essentials.chat.shout + - essentials.chat.question + - essentials.compass + - essentials.depth + - essentials.home + - essentials.ignore + - essentials.kit + - essentials.kit.tools + - essentials.mail + - essentials.mail.send + - essentials.me + - essentials.msg + - essentials.nick + - essentials.pay + - essentials.ping + - essentials.portal + - essentials.powertool + - essentials.protect + - essentials.sethome + - essentials.signs.use.* + - essentials.signs.create.disposal + - essentials.signs.create.mail + - essentials.signs.create.protection + - essentials.signs.create.trade + - essentials.signs.break.disposal + - essentials.signs.break.mail + - essentials.signs.break.protection + - essentials.signs.break.trade + - essentials.suicide + - essentials.time + - essentials.tpa + - essentials.tpaccept + - essentials.tpahere + - essentials.tpdeny + - essentials.warp + - essentials.warp.list + - essentials.worth + Moderator: + - essentials.build + - essentials.ban + - essentials.ban.notify + - essentials.banip + - essentials.broadcast + - essentials.clearinventory + - essentials.delwarp + - essentials.eco.loan + - essentials.ext + - essentials.getpos + - essentials.helpop.recieve + - essentials.home.others + - essentials.invsee + - essentials.jails + - essentials.jump + - essentials.kick + - essentials.kick.notify + - essentials.kill + - essentials.mute + - essentials.nick.others + - essentials.realname + - essentials.setwarp + - essentials.signs.create.* + - essentials.signs.break.* + - essentials.spawner + - essentials.thunder + - essentials.time + - essentials.time.set + - essentials.protect.alerts + - essentials.protect.admin + - essentials.protect.ownerinfo + - essentials.ptime + - essentials.ptime.others + - essentials.togglejail + - essentials.top + - essentials.tp + - essentials.tphere + - essentials.tppos + - essentials.tptoggle + - essentials.unban + - essentials.unbanip + - essentials.weather + - essentials.whois + - essentials.world + Admin: + # Since we use essentials.* permission here, we can still disable commands like this + # This is only available for essentials permissions + - -essentials.backup + - -essentials.essentials + - -essentials.setspawn + - -essentials.reloadall + - essentials.* + Owner: + - essentials.* +players: + notch: + - Default + snowleo: + - Admin + - Moderator + - Builder + - Default + KHobbits: + - Owner diff --git a/Essentials/src/examples/permissionsbukkit.yml b/Essentials/src/examples/permissionsbukkit.yml new file mode 100644 index 000000000..243752232 --- /dev/null +++ b/Essentials/src/examples/permissionsbukkit.yml @@ -0,0 +1,135 @@ +users: + snowleo: + groups: + - Admin +groups: + Default: + permissions: + permissions.build: true + essentials.build: false + essentials.spawn: true + essentials.rules: true + essentials.motd: true + essentials.list: true + essentials.helpop: true + essentials.help: true + Builder: + permissions: + permissions.build: true + essentials.build: true + essentials.afk: true + essentials.back: true + essentials.back.ondeath: true + essentials.balance: true + essentials.balance.others: true + essentials.balancetop: true + essentials.chat.color: true + essentials.chat.shout: true + essentials.chat.question: true + essentials.compass: true + essentials.depth: true + essentials.home: true + essentials.ignore: true + essentials.kit: true + essentials.kit.tools: true + essentials.mail: true + essentials.mail.send: true + essentials.me: true + essentials.msg: true + essentials.nick: true + essentials.pay: true + essentials.ping: true + essentials.portal: true + essentials.powertool: true + essentials.protect: true + essentials.sethome: true + essentials.signs.use.*: true + essentials.signs.create.disposal: true + essentials.signs.create.mail: true + essentials.signs.create.protection: true + essentials.signs.create.trade: true + essentials.signs.break.disposal: true + essentials.signs.break.mail: true + essentials.signs.break.protection: true + essentials.signs.break.trade: true + essentials.suicide: true + essentials.time: true + essentials.tpa: true + essentials.tpaccept: true + essentials.tpahere: true + essentials.tpdeny: true + essentials.warp: true + essentials.warp.list: true + essentials.worth: true + inheritance: + - Default + Moderator: + permissions: + essentials.ban: true + essentials.ban.notify: true + essentials.banip: true + essentials.broadcast: true + essentials.clearinventory: true + essentials.delwarp: true + essentials.eco.loan: true + essentials.ext: true + essentials.getpos: true + essentials.helpop.recieve: true + essentials.home.others: true + essentials.invsee: true + essentials.jails: true + essentials.jump: true + essentials.kick: true + essentials.kick.notify: true + essentials.kill: true + essentials.mute: true + essentials.nick.others: true + essentials.realname: true + essentials.setwarp: true + essentials.signs.create.*: true + essentials.signs.break.*: true + essentials.spawner: true + essentials.thunder: true + essentials.time: true + essentials.time.set: true + essentials.protect.alerts: true + essentials.protect.admin: true + essentials.protect.ownerinfo: true + essentials.ptime: true + essentials.ptime.others: true + essentials.togglejail: true + essentials.top: true + essentials.tp: true + essentials.tphere: true + essentials.tppos: true + essentials.tptoggle: true + essentials.unban: true + essentials.unbanip: true + essentials.weather: true + essentials.whois: true + essentials.world: true + inheritance: + - Builder + Admin: + permissions: + permissions.*: true + # Since we use essentials.* permission here, we can still disable commands like this + # This is only available for essentials permissions + -essentials.backup: true + -essentials.essentials: true + -essentials.setspawn: true + -essentials.reloadall: true + essentials.*: true + inheritance: + - Moderator + Owner: + permissions: + # Double negation + -essentials.backup: false + -essentials.essentials: false + -essentials.setspawn: false + -essentials.reloadall: false + inheritance: + - Admin +messages: + build: '&cYou do not have permission to build here.' diff --git a/Essentials/src/examples/permissionsex.yml b/Essentials/src/examples/permissionsex.yml new file mode 100644 index 000000000..47407cd62 --- /dev/null +++ b/Essentials/src/examples/permissionsex.yml @@ -0,0 +1,150 @@ +groups: + Default: + default: true + permissions: + - essentials.spawn + - essentials.rules + - essentials.motd + - essentials.list + - essentials.helpop + - essentials.help + - modifyworld.* + prefix: '&e' + options: + build: false + rank: '1000' + Builder: + permissions: + - essentials.afk + - essentials.back + - essentials.back.ondeath + - essentials.balance + - essentials.balance.others + - essentials.balancetop + - essentials.chat.color + - essentials.chat.shout + - essentials.chat.question + - essentials.compass + - essentials.depth + - essentials.home + - essentials.ignore + - essentials.kit + - essentials.kit.tools + - essentials.mail + - essentials.mail.send + - essentials.me + - essentials.msg + - essentials.nick + - essentials.pay + - essentials.ping + - essentials.portal + - essentials.powertool + - essentials.protect + - essentials.sethome + - essentials.signs.use.* + - essentials.signs.create.disposal + - essentials.signs.create.mail + - essentials.signs.create.protection + - essentials.signs.create.trade + - essentials.signs.break.disposal + - essentials.signs.break.mail + - essentials.signs.break.protection + - essentials.signs.break.trade + - essentials.suicide + - essentials.time + - essentials.tpa + - essentials.tpaccept + - essentials.tpahere + - essentials.tpdeny + - essentials.warp + - essentials.warp.list + - essentials.worth + inheritance: + - default + prefix: '&2' + options: + build: true + rank: '500' + Moderator: + permissions: + - essentials.ban + - essentials.ban.notify + - essentials.banip + - essentials.broadcast + - essentials.clearinventory + - essentials.delwarp + - essentials.eco.loan + - essentials.ext + - essentials.getpos + - essentials.helpop.recieve + - essentials.home.others + - essentials.invsee + - essentials.jails + - essentials.jump + - essentials.kick + - essentials.kick.notify + - essentials.kill + - essentials.mute + - essentials.nick.others + - essentials.realname + - essentials.setwarp + - essentials.signs.create.* + - essentials.signs.break.* + - essentials.spawner + - essentials.thunder + - essentials.time + - essentials.time.set + - essentials.protect.alerts + - essentials.protect.admin + - essentials.protect.ownerinfo + - essentials.ptime + - essentials.ptime.others + - essentials.togglejail + - essentials.top + - essentials.tp + - essentials.tphere + - essentials.tppos + - essentials.tptoggle + - essentials.unban + - essentials.unbanip + - essentials.weather + - essentials.whois + - essentials.world + - permissions.user.promote.default + - permissions.user.demote.default + - permissions.manage.membership + inheritance: + - builder + prefix: '&5' + options: + build: true + rank: '200' + Admin: + permissions: + - -essentials.backup + - -essentials.essentials + - -essentials.setspawn + - -essentials.reloadall + - essentials.* + - permissions.manage.users + - permissions.manage.users.permissions + - permissions.manage.users.permissions.timed + inheritance: + - moderator + prefix: '&c' + options: + build: true + rank: '100' + Owner: + permissions: + - '*' + inheritance: + - admin + prefix: '&4' + options: + build: true + rank: '0' +users: + snowleo: + group: + - Builder From 382bd2404610eac6342066d65a17792460ade78f Mon Sep 17 00:00:00 2001 From: snowleo Date: Thu, 1 Sep 2011 15:29:45 +0200 Subject: [PATCH 7/7] Prevent afk message after login, also don't show afk message on logout. --- Essentials/src/com/earth2me/essentials/Essentials.java | 5 +---- .../earth2me/essentials/EssentialsPlayerListener.java | 10 +++++----- Essentials/src/com/earth2me/essentials/User.java | 7 +++++-- .../com/earth2me/essentials/commands/Commandafk.java | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Essentials.java b/Essentials/src/com/earth2me/essentials/Essentials.java index d88edbdae..a9f77f401 100644 --- a/Essentials/src/com/earth2me/essentials/Essentials.java +++ b/Essentials/src/com/earth2me/essentials/Essentials.java @@ -17,8 +17,6 @@ */ package com.earth2me.essentials; -import com.earth2me.essentials.perm.IPermissionsHandler; -import com.earth2me.essentials.perm.ConfigPermissionsHandler; import com.earth2me.essentials.api.Economy; import com.earth2me.essentials.commands.EssentialsCommand; import java.io.*; @@ -42,7 +40,6 @@ import org.bukkit.command.PluginCommand; import org.bukkit.entity.Player; import org.bukkit.event.Event.Priority; import org.bukkit.event.Event.Type; -import org.bukkit.event.server.ServerListener; import org.bukkit.plugin.*; import org.bukkit.plugin.java.*; import org.bukkit.scheduler.BukkitScheduler; @@ -213,7 +210,7 @@ public class Essentials extends JavaPlugin implements IEssentials pm.registerEvent(Type.ENTITY_EXPLODE, tntListener, Priority.High, this); final EssentialsTimer timer = new EssentialsTimer(this); - getScheduler().scheduleSyncRepeatingTask(this, timer, 1, 50); + getScheduler().scheduleSyncRepeatingTask(this, timer, 1, 100); Economy.setEss(this); if (getSettings().isUpdateEnabled()) { diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 66de8ef29..c234f35a1 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -73,7 +73,7 @@ public class EssentialsPlayerListener extends PlayerListener it.remove(); } } - user.updateActivity(); + user.updateActivity(true); if (ess.getSettings().changeDisplayName()) { user.setDisplayName(user.getNick()); @@ -107,7 +107,7 @@ public class EssentialsPlayerListener extends PlayerListener return; } - user.updateActivity(); + user.updateActivity(true); if (!ess.getSettings().getNetherPortalsEnabled()) { @@ -226,7 +226,7 @@ public class EssentialsPlayerListener extends PlayerListener user.getInventory().setContents(user.getSavedInventory()); user.setSavedInventory(null); } - user.updateActivity(); + user.updateActivity(false); user.dispose(); if (!ess.getSettings().getReclaimSetting()) { @@ -275,7 +275,7 @@ public class EssentialsPlayerListener extends PlayerListener { user.setDisplayName(user.getNick()); } - user.setAfk(false); + user.updateActivity(false); if (user.isAuthorized("essentials.sleepingignored")) { user.setSleepingIgnored(true); @@ -489,7 +489,7 @@ public class EssentialsPlayerListener extends PlayerListener } if (!cmd.equalsIgnoreCase("afk")) { - user.updateActivity(); + user.updateActivity(true); } } } diff --git a/Essentials/src/com/earth2me/essentials/User.java b/Essentials/src/com/earth2me/essentials/User.java index fa5c7bd2d..9ba353cf9 100644 --- a/Essentials/src/com/earth2me/essentials/User.java +++ b/Essentials/src/com/earth2me/essentials/User.java @@ -413,12 +413,15 @@ public class User extends UserData implements Comparable, IReplyTo, IUser } } - public void updateActivity() + public void updateActivity(final boolean broadcast) { if (isAfk()) { setAfk(false); - ess.broadcastMessage(getName(), Util.format("userIsNotAway", getDisplayName())); + if (broadcast) + { + ess.broadcastMessage(getName(), Util.format("userIsNotAway", getDisplayName())); + } return; } lastActivity = System.currentTimeMillis(); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java index 9fe17d5a0..bb749f66f 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandafk.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandafk.java @@ -35,7 +35,7 @@ public class Commandafk extends EssentialsCommand { //user.sendMessage(Util.i18n("markedAsNotAway")); ess.broadcastMessage(user.getName(), Util.format("userIsNotAway", user.getDisplayName())); - user.updateActivity(); + user.updateActivity(false); } else {