import java.util.logging.Logger; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; import com.nijiko.permissions.PermissionHandler; import com.nijikokun.bukkit.Permissions.Permissions; /** * A fake Bukkit plugin that demonstrates methods to make managing multiple * permissions systems a lot easier. Supports PermissionsBukkit and Permissions * (or anything that can mimic it). * * Javadocs of this: http://jd.haydencity.net/bukkit/supereasyperms.html * * This code is released under Creative Commons Attribution 3.0 Unported * (CC BY 3.0). You can view the CC BY 3.0 deed at * http://creativecommons.org/licenses/by/3.0/ * * @author oxguy3 */ public class ExamplePlugin extends JavaPlugin { Logger log = Logger.getLogger("Minecraft"); public static PermissionHandler permissionHandler; public static boolean useperms = false; public void onDisable() {} public void onEnable() { setupPermissions(); } /** * Figures out what permissions system the plugin should use. * * Checks if Permissions (or a mimic) is running; if it isn't, PermissionsBukkit * will be used instead. The boolean useperms reflects the result of this method: * if it's true, Permissions will be used; if it's false, PermissionsBukkit will * be used. This method should only be called in onEnable(). * * Based on code at https://github.com/TheYeti/Permissions/wiki/API-Reference */ private void setupPermissions() { if (permissionHandler != null) { return; } Plugin permissionsPlugin = this.getServer().getPluginManager().getPlugin("Permissions"); if (permissionsPlugin == null) { log.info("ExamplePlugin: Permission system not detected, using Bukkit permissions"); useperms=false; return; } useperms=true; permissionHandler = ((Permissions) permissionsPlugin).getHandler(); log.info("ExamplePlugin: Found and will use plugin "+((Permissions)permissionsPlugin).getDescription().getFullName()); } /** * Checks if a player has a permission node. * * This method checks to see if a CommandSender has a given permission node. It * supports PermissionsBukkit and Permissions (as well as anything else that can * mimic Permissions). If the CommandSender is an op or is not a Player * (meaning it's probably a ConsoleCommandSender), it always returns true. * * @param sender the CommandSender being checked * * @param perm the dot-based permission node (i.e. "Plugin.subgroup.node") * * @return whether or not the sender has the given permission */ public boolean hasPerm(CommandSender sender, String perm) { if (sender.isOp()) { return true; } else if (sender instanceof Player) { Player player = (Player)sender; if (useperms) { if (!permissionHandler.has(player, perm)) { return false; } else { return true; } } else if (!sender.hasPermission(perm)) { return false; } return true; } else { return true; } } }