mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-10-31 01:03:44 +01:00 
			
		
		
		
	Merge pull request #53 from NuclearW/permissions
Added PEX and Bukkit Permissions.
This commit is contained in:
		| @@ -10,12 +10,9 @@ import com.gmail.nossr50.locale.mcLocale; | ||||
| import com.gmail.nossr50.party.Party; | ||||
| import com.gmail.nossr50.skills.*; | ||||
| import com.nijikokun.bukkit.Permissions.Permissions; | ||||
| import com.nijiko.permissions.PermissionHandler; | ||||
|  | ||||
| import org.bukkit.ChatColor; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.plugin.Plugin; | ||||
|  | ||||
| import java.io.BufferedReader; | ||||
| import java.io.File; | ||||
| import java.io.FileReader; | ||||
| @@ -49,13 +46,13 @@ public class mcMMO extends JavaPlugin | ||||
| 	 * Donate via paypal to nossr50@gmail.com (A million thanks to anyone that does!) | ||||
| 	 */ | ||||
| 	 | ||||
| 	public static String maindirectory = "plugins/mcMMO/";  | ||||
| 	public static String maindirectory = "plugins + File.separator + mcMMO";  | ||||
| 	File file = new File(maindirectory + File.separator + "config.yml"); | ||||
| 	public static final Logger log = Logger.getLogger("Minecraft");  | ||||
| 	private final mcPlayerListener playerListener = new mcPlayerListener(this); | ||||
| 	private final mcBlockListener blockListener = new mcBlockListener(this); | ||||
| 	private final mcEntityListener entityListener = new mcEntityListener(this); | ||||
| 	public static PermissionHandler permissionHandler; | ||||
| 	public static mcPermissions permissionHandler = new mcPermissions(); | ||||
| 	private Permissions permissions; | ||||
|  | ||||
| 	private Timer mcMMO_Timer = new Timer(true); //BLEED AND REGENERATION | ||||
| @@ -71,9 +68,9 @@ public class mcMMO extends JavaPlugin | ||||
|  | ||||
| 	public void onEnable()  | ||||
| 	{ | ||||
| 		//new File(maindirectory).mkdir(); | ||||
| 		new File(maindirectory).mkdir(); | ||||
| 		 | ||||
| 		setupPermissions(); | ||||
| 		mcPermissions.initialize(getServer()); | ||||
| 		config.configCheck(); | ||||
| 		 | ||||
| 		if(!LoadProperties.useMySQL) | ||||
| @@ -121,25 +118,6 @@ public class mcMMO extends JavaPlugin | ||||
| 		//mcMMO_SpellTimer.schedule(new mcTimerSpells(this), (long)0, (long)(100)); | ||||
| 	} | ||||
|  | ||||
| 	private void setupPermissions()  | ||||
| 	{ | ||||
| 	    if (permissionHandler != null)  | ||||
| 	    { | ||||
| 	        return; | ||||
| 	    } | ||||
| 	     | ||||
| 	    Plugin permissionsPlugin = this.getServer().getPluginManager().getPlugin("Permissions"); | ||||
| 	     | ||||
| 	    if (permissionsPlugin == null)  | ||||
| 	    { | ||||
| 	        //log.log(Level.INFO, "[mcMMO] Permission system not detected, defaulting to OP"); | ||||
| 	        return; | ||||
| 	    } | ||||
| 	     | ||||
| 	    permissionHandler = ((Permissions) permissionsPlugin).getHandler(); | ||||
| 	    //log.log(Level.INFO, "[mcMMO] Found and will use plugin "+((Permissions)permissionsPlugin).getDescription().getFullName()); | ||||
| 	} | ||||
|  | ||||
| 	public boolean inSameParty(Player playera, Player playerb){ | ||||
| 		if(Users.getProfile(playera).inParty() && Users.getProfile(playerb).inParty()){ | ||||
| 			if(Users.getProfile(playera).getParty().equals(Users.getProfile(playerb).getParty())){ | ||||
|   | ||||
| @@ -1,33 +1,52 @@ | ||||
| package com.gmail.nossr50; | ||||
|  | ||||
| import java.util.logging.Level; | ||||
| import java.util.logging.Logger; | ||||
|  | ||||
| import org.bukkit.Server; | ||||
| import org.bukkit.entity.Player; | ||||
| import org.bukkit.plugin.Plugin; | ||||
|  | ||||
| import ru.tehkode.permissions.PermissionManager; | ||||
| import ru.tehkode.permissions.bukkit.PermissionsEx; | ||||
|  | ||||
| import com.nijiko.permissions.PermissionHandler; | ||||
| import com.nijikokun.bukkit.Permissions.Permissions; | ||||
|  | ||||
| public class mcPermissions  | ||||
| { | ||||
| 	private static Permissions permissionsPlugin; | ||||
|     public static boolean permissionsEnabled = false; | ||||
|     private static volatile mcPermissions instance; | ||||
|      | ||||
| 	private enum PermissionType { | ||||
| 		PEX, PERMISSIONS, BUKKIT | ||||
| 	} | ||||
| 	 | ||||
| 	private static PermissionType permissionType; | ||||
| 	private static Object PHandle; | ||||
| 	public static boolean permissionsEnabled = false; | ||||
|  | ||||
|     public static void initialize(Server server)  | ||||
|     { | ||||
|         Plugin test = server.getPluginManager().getPlugin("Permissions"); | ||||
|         if (test != null)  | ||||
|         { | ||||
|             Logger log = Logger.getLogger("Minecraft"); | ||||
|             permissionsPlugin = ((Permissions) test); | ||||
|             permissionsEnabled = true; | ||||
|             log.log(Level.INFO, "[mcMMO] Permissions enabled."); | ||||
|         } else  | ||||
|         { | ||||
|             Logger log = Logger.getLogger("Minecraft"); | ||||
|             log.log(Level.SEVERE, "[mcMMO] Permissions isn't loaded, there are no restrictions."); | ||||
|         } | ||||
|         Logger log = Logger.getLogger("Minecraft"); | ||||
|          | ||||
| 		if(permissionsEnabled && permissionType != PermissionType.PERMISSIONS) return; | ||||
| 		 | ||||
| 		Plugin PEXtest = server.getPluginManager().getPlugin("PermissionsEx"); | ||||
| 		Plugin test = server.getPluginManager().getPlugin("Permissions"); | ||||
| 		if(PEXtest != null) { | ||||
| 			PHandle = (PermissionManager) PermissionsEx.getPermissionManager(); | ||||
| 			permissionType = PermissionType.PEX; | ||||
| 			permissionsEnabled = true; | ||||
| 			log.info("[mcMMO] PermissionsEx found, using PermissionsEx."); | ||||
| 		} else if(test != null) { | ||||
| 			PHandle = (PermissionHandler) ((Permissions) test).getHandler(); | ||||
| 			permissionType = PermissionType.PERMISSIONS; | ||||
| 			permissionsEnabled = true; | ||||
| 			log.info("[mcMMO] Permissions version "+test.getDescription().getVersion()+" found, using Permissions."); | ||||
| 		} else { | ||||
| 			permissionType = PermissionType.BUKKIT; | ||||
| 			permissionsEnabled = true; | ||||
| 			log.info("[mcMMO] Using Bukkit Permissions."); | ||||
| 		} | ||||
|     } | ||||
|      | ||||
|     public static boolean getEnabled() | ||||
| @@ -35,10 +54,20 @@ public class mcPermissions | ||||
|     	return permissionsEnabled; | ||||
|     } | ||||
|    | ||||
|     private static boolean permission(Player player, String string)  | ||||
|     private static boolean permission(Player player, String permission)  | ||||
|     { | ||||
|         return permissionsPlugin.getHandler().has(player, string); | ||||
|     } | ||||
| 		if(!permissionsEnabled) return player.isOp(); | ||||
| 		switch(permissionType) { | ||||
| 			case PEX: | ||||
| 				return ((PermissionManager) PHandle).has(player, permission); | ||||
| 			case PERMISSIONS: | ||||
| 				return ((PermissionHandler) PHandle).has(player, permission); | ||||
| 			case BUKKIT: | ||||
| 				return player.hasPermission(permission); | ||||
| 			default: | ||||
| 				return true; | ||||
| 		} | ||||
| 	} | ||||
|     public boolean admin(Player player){ | ||||
|     	if (permissionsEnabled) { | ||||
|             return permission(player, "mcmmo.admin"); | ||||
|   | ||||
							
								
								
									
										163
									
								
								mcMMO/plugin.yml
									
									
									
									
									
								
							
							
						
						
									
										163
									
								
								mcMMO/plugin.yml
									
									
									
									
									
								
							| @@ -64,3 +64,166 @@ commands: | ||||
|         description: Toggle Admin chat or send admin chat messages | ||||
|     sorcery: | ||||
|         description: Detailed skill info | ||||
| permissions: | ||||
|     mcmmo.*: | ||||
|         description: Implies all mcmmo permissions. | ||||
|         children: | ||||
|             mcmmo.admin: true  | ||||
|             mcmmo.tools.*: true | ||||
|             mcmmo.ability.*: true  | ||||
|             mcmmo.item.*: true  | ||||
|             mcmmo.tools.*: true  | ||||
|             mcmmo.regeneration: true  | ||||
|             mcmmo.motd: true  | ||||
|             mcmmo.commands.*: true  | ||||
|             mcmmo.chat.*: true  | ||||
|             mcmmo.skills.*: true | ||||
|     mcmmo.admin: | ||||
|         default: op | ||||
|          | ||||
|     mcmmo.tools.*: | ||||
|         description: Implies all mcmmo.tools permissions. | ||||
|         children: | ||||
|             mcmmo.tools.mcrefresh: true  | ||||
|             mcmmo.tools.mmoedit: true  | ||||
|             mcmmo.tools.mcgod: true  | ||||
|     mcmmo.tools.mcrefresh: | ||||
|         default: op | ||||
|     mcmmo.tools.mmoedit: | ||||
|         default: op | ||||
|     mcmmo.tools.mcgod: | ||||
|         default: op | ||||
|          | ||||
|     mcmmo.ability.*: | ||||
|         description: Implies all mcmmo.ability permissions. | ||||
|         children: | ||||
|             mcmmo.ability.herbalism: true  | ||||
|             mcmmo.ability.excavation: true  | ||||
|             mcmmo.ability.unarmed: true  | ||||
|             mcmmo.ability.mining: true  | ||||
|             mcmmo.ability.axes: true  | ||||
|             mcmmo.ability.swords: true  | ||||
|             mcmmo.ability.woodcutting: true  | ||||
|     mcmmo.ability.herbalism: | ||||
|         default: true | ||||
|     mcmmo.ability.excavation: | ||||
|         default: true | ||||
|     mcmmo.ability.unarmed: | ||||
|         default: true | ||||
|     mcmmo.ability.mining: | ||||
|         default: true | ||||
|     mcmmo.ability.axes: | ||||
|         default: true | ||||
|     mcmmo.ability.swords: | ||||
|         default: true | ||||
|     mcmmo.ability.woodcutting: | ||||
|         default: true | ||||
|          | ||||
|     mcmmo.item.*: | ||||
|         description: Implies all mcmmo.item permissions. | ||||
|         children: | ||||
|             mcmmo.item.chimaerawing: true  | ||||
|     mcmmo.item.chimaerawing: | ||||
|         default: true | ||||
|          | ||||
|     mcmmo.regeneration: | ||||
|         default: true | ||||
|          | ||||
|     mcmmo.motd: | ||||
|         default: true | ||||
|          | ||||
|     mcmmo.commands.*: | ||||
|         description: Implies all mcmmo.commands permissions. | ||||
|         children: | ||||
|             mcmmo.commands.ability: true  | ||||
|             mcmmo.commands.myspawn: true  | ||||
|             mcmmo.commands.setmyspawn: true  | ||||
|             mcmmo.commands.ptp: true  | ||||
|             mcmmo.commands.whois: true  | ||||
|             mcmmo.commands.party: true  | ||||
|     mcmmo.commands.ability: | ||||
|         default: true | ||||
|     mcmmo.commands.myspawn: | ||||
|         default: true | ||||
|     mcmmo.commands.setmyspawn: | ||||
|         default: true | ||||
|     mcmmo.commands.ptp: | ||||
|         default: true | ||||
|     mcmmo.commands.whois: | ||||
|         default: true | ||||
|     mcmmo.commands.party: | ||||
|         default: true | ||||
|          | ||||
|     mcmmo.chat.*: | ||||
|         description: Implies all mcmmo.chat permissions. (Warning, contains adminchat) | ||||
|         children: | ||||
|             mcmmo.chat.adminchat: true  | ||||
|             mcmmo.chat.partychat: true  | ||||
|     mcmmo.chat.adminchat: | ||||
|         default: op | ||||
|     mcmmo.chat.partychat: | ||||
|         default: true | ||||
|          | ||||
|     mcmmo.skills.*: | ||||
|         description: Implies all mcmmo.skills permissions. | ||||
|         children: | ||||
|             mcmmo.skills.sorcery.*: true  | ||||
|             mcmmo.skills.curative.*: true  | ||||
|             mcmmo.skills.taming: true  | ||||
|             mcmmo.skills.mining: true  | ||||
|             mcmmo.skills.woodcutting: true  | ||||
|             mcmmo.skills.repair: true  | ||||
|             mcmmo.skills.unarmed: true  | ||||
|             mcmmo.skills.archery: true  | ||||
|             mcmmo.skills.herbalism: true  | ||||
|             mcmmo.skills.excavation: true  | ||||
|             mcmmo.skills.swords: true  | ||||
|             mcmmo.skills.axes: true  | ||||
|             mcmmo.skills.acrobatics: true | ||||
|     mcmmo.skills.sorcery.*: | ||||
|         description: Implies all mcmmo.skills.sorcery permissions. | ||||
|         children: | ||||
|             mcmmo.skills.sorcery: true  | ||||
|             mcmmo.skills.sorcery.water: true  | ||||
|             mcmmo.skills.sorcery.water.thunder: true  | ||||
|     mcmmo.skills.curative.*: | ||||
|         description: Implies all mcmmo.skills.curative permissions. | ||||
|         children: | ||||
|             mcmmo.skills.curative: true  | ||||
|             mcmmo.skills.curative.heal.other: true  | ||||
|             mcmmo.skills.curative.heal.self: true  | ||||
|      | ||||
|     mcmmo.skills.sorcery: | ||||
|         default: true | ||||
|     mcmmo.skills.sorcery.water: | ||||
|         default: true | ||||
|     mcmmo.skills.sorcery.water.thunder: | ||||
|         default: true | ||||
|     mcmmo.skills.curative: | ||||
|         default: true | ||||
|     mcmmo.skills.curative.heal.other: | ||||
|         default: true | ||||
|     mcmmo.skills.curative.heal.self: | ||||
|         default: true | ||||
|     mcmmo.skills.taming: | ||||
|         default: true | ||||
|     mcmmo.skills.mining: | ||||
|         default: true | ||||
|     mcmmo.skills.woodcutting: | ||||
|         default: true | ||||
|     mcmmo.skills.repair: | ||||
|         default: true | ||||
|     mcmmo.skills.unarmed: | ||||
|         default: true | ||||
|     mcmmo.skills.archery: | ||||
|         default: true | ||||
|     mcmmo.skills.herbalism: | ||||
|         default: true | ||||
|     mcmmo.skills.excavation: | ||||
|         default: true | ||||
|     mcmmo.skills.swords: | ||||
|         default: true | ||||
|     mcmmo.skills.axes: | ||||
|         default: true | ||||
|     mcmmo.skills.acrobatics: | ||||
|         default: true | ||||
		Reference in New Issue
	
	Block a user
	 nossr50
					nossr50