From ae9cd626a5c1c32ce6997b6126b68b116d96e86d Mon Sep 17 00:00:00 2001 From: Tim Vis'ee Date: Fri, 11 Mar 2016 11:33:37 +0100 Subject: [PATCH] Applied most PermissionsManager patches from original source --- .../authme/permission/PermissionsManager.java | 228 +++++++----------- .../permission/PermissionsSystemType.java | 70 +++++- 2 files changed, 150 insertions(+), 148 deletions(-) diff --git a/src/main/java/fr/xephi/authme/permission/PermissionsManager.java b/src/main/java/fr/xephi/authme/permission/PermissionsManager.java index e42ea46ff..d4074ebb1 100644 --- a/src/main/java/fr/xephi/authme/permission/PermissionsManager.java +++ b/src/main/java/fr/xephi/authme/permission/PermissionsManager.java @@ -24,7 +24,6 @@ import de.bananaco.bpermissions.api.CalculableType; import fr.xephi.authme.command.CommandDescription; import fr.xephi.authme.util.CollectionUtils; import net.milkbowl.vault.permission.Permission; -import ru.tehkode.permissions.PermissionManager; import ru.tehkode.permissions.PermissionUser; import ru.tehkode.permissions.bukkit.PermissionsEx; @@ -38,7 +37,7 @@ import ru.tehkode.permissions.bukkit.PermissionsEx; * Written by Tim Visée. *

* @author Tim Visée, http://timvisee.com - * @version 0.2.1 + * @version 0.3 */ public class PermissionsManager implements PermissionsService { @@ -60,8 +59,9 @@ public class PermissionsManager implements PermissionsService { private Logger log; /** * Type of permissions system that is currently used. + * Null if no permissions system is hooked and/or used. */ - private PermissionsSystemType permsType = PermissionsSystemType.NONE; + private PermissionsSystemType permsType = null; /** * Essentials group manager instance. */ @@ -90,7 +90,7 @@ public class PermissionsManager implements PermissionsService { * @return False if there isn't any permissions system used. */ public boolean isEnabled() { - return !permsType.equals(PermissionsSystemType.NONE); + return permsType != null; } /** @@ -108,110 +108,96 @@ public class PermissionsManager implements PermissionsService { * @return The detected permissions system. */ public PermissionsSystemType setup() { + // Force-unhook from current hooked permissions systems + unhook(); + // Define the plugin manager - final PluginManager pm = this.server.getPluginManager(); + final PluginManager pluginManager = this.server.getPluginManager(); - // Reset used permissions system type - permsType = PermissionsSystemType.NONE; + // Reset used permissions system type flag + permsType = null; - // PermissionsEx, check if it's available - try { - Plugin pex = pm.getPlugin("PermissionsEx"); - if (pex != null) { - PermissionManager pexPerms = PermissionsEx.getPermissionManager(); - if (pexPerms != null) { - permsType = PermissionsSystemType.PERMISSIONS_EX; + // Loop through all the available permissions system types + for(PermissionsSystemType type : PermissionsSystemType.values()) { + // Try to find and hook the current plugin if available, print an error if failed + try { + // Try to find the plugin for the current permissions system + Plugin plugin = pluginManager.getPlugin(type.getPluginName()); - System.out.println("[" + plugin.getName() + "] Hooked into PermissionsEx!"); - return permsType; + // Make sure a plugin with this name was found + if(plugin == null) + continue; + + // Make sure the plugin is enabled before hooking + if(!plugin.isEnabled()) { + this.log.info("Not hooking into " + type.getName() + " because it's disabled!"); + continue; } - } - } catch (Exception ex) { - // An error occurred, show a warning message - System.out.println("[" + plugin.getName() + "] Error while hooking into PermissionsEx!"); - } - // PermissionsBukkit, check if it's available - try { - Plugin bukkitPerms = pm.getPlugin("PermissionsBukkit"); - if (bukkitPerms != null) { - permsType = PermissionsSystemType.PERMISSIONS_BUKKIT; - System.out.println("[" + plugin.getName() + "] Hooked into PermissionsBukkit!"); - return permsType; - } - } catch (Exception ex) { - // An error occurred, show a warning message - System.out.println("[" + plugin.getName() + "] Error while hooking into PermissionsBukkit!"); - } + // Use the proper method to hook this plugin + switch(type) { + case PERMISSIONS_EX: + // Get the permissions manager for PermissionsEx and make sure it isn't null + if(PermissionsEx.getPermissionManager() == null) { + this.log.info("Failed to hook into " + type.getName() + "!"); + continue; + } - // bPermissions, check if it's available - try { - Plugin bPerms = pm.getPlugin("bPermissions"); - if (bPerms != null) { - permsType = PermissionsSystemType.B_PERMISSIONS; - System.out.println("[" + plugin.getName() + "] Hooked into bPermissions!"); - return permsType; - } - } catch (Exception ex) { - // An error occurred, show a warning message - System.out.println("[" + plugin.getName() + "] Error while hooking into bPermissions!"); - } + break; - // Essentials Group Manager, check if it's available - try { - final Plugin groupManagerPlugin = pm.getPlugin("GroupManager"); - if (groupManagerPlugin != null && groupManagerPlugin.isEnabled()) { - permsType = PermissionsSystemType.ESSENTIALS_GROUP_MANAGER; - groupManagerPerms = (GroupManager) groupManagerPlugin; - System.out.println("[" + plugin.getName() + "] Hooked into Essentials Group Manager!"); - return permsType; - } - } catch (Exception ex) { - // An error occurred, show a warning message - System.out.println("[" + plugin.getName() + "] Error while hooking into Essentials Group Manager!"); - } + case ESSENTIALS_GROUP_MANAGER: + // Set the plugin instance + groupManagerPerms = (GroupManager) plugin; + break; - // zPermissions, check if it's available - try { - Plugin zPerms = pm.getPlugin("zPermissions"); - if (zPerms != null) { - zPermissionsService = Bukkit.getServicesManager().load(ZPermissionsService.class); - if (zPermissionsService != null) { - permsType = PermissionsSystemType.Z_PERMISSIONS; - System.out.println("[" + plugin.getName() + "] Hooked into zPermissions!"); - return permsType; + case Z_PERMISSIONS: + // Set the zPermissions service and make sure it's valid + zPermissionsService = Bukkit.getServicesManager().load(ZPermissionsService.class); + if(zPermissionsService == null) { + this.log.info("Failed to hook into " + type.getName() + "!"); + continue; + } + + break; + + case VAULT: + // Get the permissions provider service + RegisteredServiceProvider permissionProvider = this.server.getServicesManager().getRegistration(Permission.class); + if (permissionProvider == null) { + this.log.info("Failed to hook into " + type.getName() + "!"); + continue; + } + + // Get the Vault provider and make sure it's valid + vaultPerms = permissionProvider.getProvider(); + if(vaultPerms == null) { + this.log.info("Not using " + type.getName() + " because it's disabled!"); + continue; + } + + break; + + default: } + + // Set the hooked permissions system type + this.permsType = type; + + // Show a success message + this.log.info("Hooked into " + type.getName() + "!"); + + // Return the used permissions system type + return type; + + } catch (Exception ex) { + // An error occurred, show a warning message + this.log.info("Error while hooking into " + type.getName() + "!"); } - } catch (Exception ex) { - // An error occurred, show a warning message - System.out.println("[" + plugin.getName() + "] Error while hooking into zPermissions!"); } - // Vault, check if it's available - try { - final Plugin vaultPlugin = pm.getPlugin("Vault"); - if (vaultPlugin != null && vaultPlugin.isEnabled()) { - RegisteredServiceProvider permissionProvider = this.server.getServicesManager().getRegistration(Permission.class); - if (permissionProvider != null) { - vaultPerms = permissionProvider.getProvider(); - if (vaultPerms.isEnabled()) { - permsType = PermissionsSystemType.VAULT; - System.out.println("[" + plugin.getName() + "] Hooked into Vault Permissions!"); - return permsType; - } else { - System.out.println("[" + plugin.getName() + "] Not using Vault Permissions, Vault Permissions is disabled!"); - } - } - } - } catch (Exception ex) { - // An error occurred, show a warning message - System.out.println("[" + plugin.getName() + "] Error while hooking into Vault Permissions!"); - } - - // No recognized permissions system found - permsType = PermissionsSystemType.NONE; - System.out.println("[" + plugin.getName() + "] No supported permissions system found! Permissions disabled!"); - return PermissionsSystemType.NONE; + // No recognized permissions system found, show a message and return + this.log.info("No supported permissions system found! Permissions are disabled!"); + return null; } /** @@ -219,7 +205,7 @@ public class PermissionsManager implements PermissionsService { */ public void unhook() { // Reset the current used permissions system - this.permsType = PermissionsSystemType.NONE; + this.permsType = null; // Print a status message to the console this.log.info("Unhooked from Permissions!"); @@ -383,13 +369,9 @@ public class PermissionsManager implements PermissionsService { // Vault return vaultPerms.has(player, permsNode); - case NONE: + default: // Not hooked into any permissions system, return default return def; - - default: - // Something went wrong, return false to prevent problems - return false; } } @@ -416,12 +398,8 @@ public class PermissionsManager implements PermissionsService { // Vault return vaultPerms.hasGroupSupport(); - case NONE: - // Not hooked into any permissions system, return false - return false; - default: - // Something went wrong, return false to prevent problems + // Not hooked into any permissions system, return false return false; } } @@ -469,12 +447,8 @@ public class PermissionsManager implements PermissionsService { // Vault return Arrays.asList(vaultPerms.getPlayerGroups(player)); - case NONE: - // Not hooked into any permissions system, return an empty list - return new ArrayList<>(); - default: - // Something went wrong, return an empty list to prevent problems + // Not hooked into any permissions system, return an empty list return new ArrayList<>(); } } @@ -521,12 +495,8 @@ public class PermissionsManager implements PermissionsService { // Vault return vaultPerms.getPrimaryGroup(player); - case NONE: - // Not hooked into any permissions system, return null - return null; - default: - // Something went wrong, return null to prevent problems + // Not hooked into any permissions system, return null return null; } } @@ -575,12 +545,8 @@ public class PermissionsManager implements PermissionsService { // Vault return vaultPerms.playerInGroup(player, groupName); - case NONE: - // Not hooked into any permissions system, return an empty list - return false; - default: - // Something went wrong, return an empty list to prevent problems + // Not hooked into any permissions system, return an empty list return false; } } @@ -632,12 +598,8 @@ public class PermissionsManager implements PermissionsService { vaultPerms.playerAddGroup(player, groupName); return true; - case NONE: - // Not hooked into any permissions system, return false - return false; - default: - // Something went wrong, return false + // Not hooked into any permissions system, return false return false; } } @@ -713,12 +675,8 @@ public class PermissionsManager implements PermissionsService { vaultPerms.playerRemoveGroup(player, groupName); return true; - case NONE: - // Not hooked into any permissions system, return false - return false; - default: - // Something went wrong, return false + // Not hooked into any permissions system, return false return false; } } @@ -802,12 +760,8 @@ public class PermissionsManager implements PermissionsService { vaultPerms.playerAddGroup(player, groupName); return true; - case NONE: - // Not hooked into any permissions system, return false - return false; - default: - // Something went wrong, return false + // Not hooked into any permissions system, return false return false; } } @@ -867,6 +821,4 @@ public class PermissionsManager implements PermissionsService { // Remove each group return removeGroups(player, groupNames); } - - } diff --git a/src/main/java/fr/xephi/authme/permission/PermissionsSystemType.java b/src/main/java/fr/xephi/authme/permission/PermissionsSystemType.java index 7246f389a..2167fde68 100644 --- a/src/main/java/fr/xephi/authme/permission/PermissionsSystemType.java +++ b/src/main/java/fr/xephi/authme/permission/PermissionsSystemType.java @@ -5,32 +5,82 @@ package fr.xephi.authme.permission; */ public enum PermissionsSystemType { - NONE("None"), + /** + * Permissions Ex. + */ + PERMISSIONS_EX("PermissionsEx", "PermissionsEx"), - PERMISSIONS_EX("PermissionsEx"), + /** + * Permissions Bukkit. + */ + PERMISSIONS_BUKKIT("Permissions Bukkit", "PermissionsBukkit"), - PERMISSIONS_BUKKIT("Permissions Bukkit"), + /** + * bPermissions. + */ + B_PERMISSIONS("bPermissions", "bPermissions"), - B_PERMISSIONS("bPermissions"), + /** + * Essentials Group Manager. + */ + ESSENTIALS_GROUP_MANAGER("Essentials Group Manager", "GroupManager"), - ESSENTIALS_GROUP_MANAGER("Essentials Group Manager"), + /** + * zPermissions. + */ + Z_PERMISSIONS("zPermissions", "zPermissions"), - Z_PERMISSIONS("zPermissions"), + /** + * Vault. + */ + VAULT("Vault", "Vault"); - VAULT("Vault"); + /** + * The display name of the permissions system. + */ + public String name; - public final String name; + /** + * The name of the permissions system plugin. + */ + public String pluginName; /** * Constructor for PermissionsSystemType. * - * @param name The name the permissions manager goes by + * @param name Display name of the permissions system. + * @param pluginName Name of the plugin. */ - PermissionsSystemType(String name) { + PermissionsSystemType(String name, String pluginName) { this.name = name; + this.pluginName = pluginName; } + /** + * Get the display name of the permissions system. + * + * @return Display name. + */ public String getName() { return this.name; } + + /** + * Return the plugin name. + * + * @return Plugin name. + */ + public String getPluginName() { + return this.pluginName; + } + + /** + * Cast the permissions system type to a string. + * + * @return The display name of the permissions system. + */ + @Override + public String toString() { + return getName(); + } }