/// <summary> /// Called when this plugin has been added to the specified manager /// </summary> /// <param name="manager"></param> public override void HandleAddedToManager(PluginManager manager) { foreach (MethodInfo method in GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance)) { object[] commandAttribute = method.GetCustomAttributes(typeof(CommandAttribute), true); object[] permissionAttribute = method.GetCustomAttributes(typeof(PermissionAttribute), true); if (commandAttribute.Length <= 0) { continue; } CommandAttribute cmd = commandAttribute[0] as CommandAttribute; PermissionAttribute perm = permissionAttribute.Length <= 0 ? null : permissionAttribute[0] as PermissionAttribute; if (cmd == null) { continue; } AddCovalenceCommand(cmd.Commands, perm?.Permission, (caller, command, args) => { CallHook(method.Name, caller, command, args); return(true); }); } base.HandleAddedToManager(manager); }
public override void HandleAddedToManager(PluginManager manager) { PermissionAttribute permissionAttribute; string[] permission; MethodInfo[] methods = base.GetType().GetMethods(BindingFlags.Instance | BindingFlags.NonPublic); for (int i = 0; i < (int)methods.Length; i++) { MethodInfo methodInfo = methods[i]; object[] customAttributes = methodInfo.GetCustomAttributes(typeof(CommandAttribute), true); object[] objArray = methodInfo.GetCustomAttributes(typeof(PermissionAttribute), true); if (customAttributes.Length != 0) { CommandAttribute commandAttribute = customAttributes[0] as CommandAttribute; if (objArray.Length == 0) { permissionAttribute = null; } else { permissionAttribute = objArray[0] as PermissionAttribute; } PermissionAttribute permissionAttribute1 = permissionAttribute; if (commandAttribute != null) { string[] commands = commandAttribute.Commands; if (permissionAttribute1 != null) { permission = permissionAttribute1.Permission; } else { permission = null; } base.AddCovalenceCommand(commands, permission, (IPlayer caller, string command, string[] args) => { base.CallHook(methodInfo.Name, new object[] { caller, command, args }); return(true); }); } } } base.HandleAddedToManager(manager); }