WEPIF Improvement: code clean out, hardcoding removal and refactoring. Added Service discovery to PluginPermissionsResolver

This commit is contained in:
t3hk0d3
2011-09-27 07:40:18 +04:00
committed by zml2008
parent 102e5f142e
commit 4f80e78a7e
9 changed files with 188 additions and 128 deletions

View File

@ -26,34 +26,37 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import com.nijikokun.bukkit.Permissions.Permissions;
import com.sk89q.bukkit.migration.PermissionsResolverManager.MissingPluginException;
import org.bukkit.util.config.Configuration;
public class NijiPermissionsResolver implements PermissionsResolver {
private Server server;
private Permissions api;
public static PermissionsResolver factory(Server server, Configuration config) {
PluginManager pluginManager = server.getPluginManager();
Plugin plugin = pluginManager.getPlugin("Permissions");
// Check if plugin is loaded and have Permissions interface
if(plugin == null || !(plugin instanceof Permissions)){
return null;
}
// Check for fake permissions
if(config.getBoolean("ignore-nijiperms-bridges", true) && isFakeNijiPerms(plugin)){
return null;
}
return new NijiPermissionsResolver(server, (Permissions)plugin);
}
public void load() {
}
public NijiPermissionsResolver(Server server, boolean ignoreBridges)
throws PluginAccessException, MissingPluginException {
public NijiPermissionsResolver(Server server, Permissions plugin) {
this.server = server;
PluginManager manager = server.getPluginManager();
Plugin plugin = manager.getPlugin("Permissions");
if (plugin == null) {
throw new MissingPluginException();
}
if (!checkRealNijiPerms(ignoreBridges)) {
throw new MissingPluginException();
}
try {
api = (Permissions)plugin;
} catch (ClassCastException e) {
throw new PluginAccessException();
}
this.api = plugin;
}
@SuppressWarnings("static-access")
@ -129,6 +132,7 @@ public class NijiPermissionsResolver implements PermissionsResolver {
private static final long serialVersionUID = 7044832912491608706L;
}
@Deprecated
public static boolean checkRealNijiPerms(boolean ignoreBridges) {
if (!ignoreBridges) {
return true;
@ -139,4 +143,14 @@ public class NijiPermissionsResolver implements PermissionsResolver {
}
return permsCommand.getPlugin().getDescription().getName().equals("Permissions");
}
public static boolean isFakeNijiPerms(Plugin plugin){
PluginCommand permsCommand = Bukkit.getServer().getPluginCommand("permissions");
return !(permsCommand.getPlugin().equals(plugin));
}
public String getDetectionMessage() {
return "Permissions plugin detected! Using Permissions plugin for permissions.";
}
}