Merge remote-tracking branch 'origin/reborn' into reborn

This commit is contained in:
Him188 2020-06-17 13:25:57 +08:00
commit f1a8c78bc7
2 changed files with 24 additions and 41 deletions

View File

@ -22,50 +22,44 @@ Mirai 是一个在全平台下运行,提供 QQ Android 和 TIM PC 协议支持
console 由后端和前端一起工作. 使用时必须选择一个前端.
**注意:`mirai-console` 后端和 pure 前端正在进行完全的重构master 分支将不再维护。**
**`mirai-console` 将在短时间内不可用。`
**`mirai-console` 将在短时间内不可用。**
- `mirai-console`: console 的后端, 包含插件管理, 指令系统, 配置系统. 还包含一个轻量命令行的前端 (因此可以独立启动 `mirai-console`).
- `mirai-console-graphical`: console 的 JavaFX 图形化界面前端.
- `mirai-console-terminal`: console 的 Unix 终端界面前端. (实验性)
后端:
- [`mirai-console`](backend/mirai-console/): console 的后端, 包含插件管理, 指令系统, 配置系统. 没有入口程序.
前端:
- [`mirai-console-pure`](frontend/mirai-console-pure): console 的轻量命令行前端
- [`mirai-console-graphical`](frontend/mirai-console-graphical): console 的 JavaFX 图形化界面前端. (实验性)
- [`mirai-console-terminal`](frontend/mirai-console-terminal): console 的 Unix 终端界面前端. (实验性)
- [`MiraiAndroid`](https://github.com/mzdluo123/MiraiAndroid): console 的 Android APP 前端.
[`mirai-console-wrapper`](https://github.com/mamoe/mirai-console-wrapper): console 启动器. 可根据用户选择从服务器下载 console 后端, mirai-core, 和指定的前端并启动.
### 使用
## 使用
#### Windows
### Android
建议任何人都使用一键安装包来快速启动 mirai-console (因此你无需解决 JavaFX 和兼容等相关问题)
**[下载地址](https://suihou-my.sharepoint.com/:f:/g/personal/user18_5tb_site/ErWGr97FpPVDjkboIDmDAJkBID-23ZMNbTPggGajf1zvGw?e=51NZWM)**
[MiraiAndroid](https://github.com/mzdluo123/MiraiAndroid) 提供在 Android 平台使用 mirai-console 插件的能力,同时拥有一个便于使用的 Lua 接口
**请注意**
* 使用时请留意安装包里的说明文字
* 目前本安装包只支持Windows系统**且 mirai-console 仍在开发中可能会存在一些bug**
* 关于安装包本身的一切问题请到 QQ 群内反馈 (推荐), 或 [邮件联系](mailto:support@mamoe.net)
* 如果上面的链接下载过慢你可以到QQ群内高速下载
[项目详细](https://github.com/mzdluo123/MiraiAndroid)
若你不愿意简单地启动, 你可以往下阅读复杂的启动方式.
### Windows / Linux / Mac
#### Unix
**推荐任何人都使用全自动的 [LXY1226/MiraiOK](https://github.com/LXY1226/miraiOK) 一键启动器**
Unix 没有一键包提供. 请使用 wrapper 启动器.
也可以使用不推荐的 mirai-console-wrapper 启动器.
1. 安装 JRE (Java 运行环境):
- 若使用图形界面, 至少需要 JRE 11 并带有 JavaFX 11, 且不推荐使用 12 或更高版本.
- 若使用命令行或终端, 至少需要 JRE 8.
- 可以在 [华为镜像源](https://repo.huaweicloud.com/java/jdk/) 下载 JDK (JDK 包含 JRE 和开发工具)
- 可以在 [华为镜像源](https://repo.huaweicloud.com/java/jdk/) 下载 JDK 安装. (JDK 包含 JRE 和开发工具)
2. 下载 `mirai-console-wrapper-x.x.x.jar`
3. 参照 [wrapper 命令行参数](https://github.com/mirai/mirai-console-wrapper/README.md#命令行参数), 运行 `$ java -jar mirai-console-wrapper-x.x.x.jar`
#### Android
[MiraiAndroid](https://github.com/mzdluo123/MiraiAndroid) 提供了在Android平台使用mirai-console插件的能力同时拥有一个便于使用的lua接口
你可以点击这里查看[项目详细](https://github.com/mzdluo123/MiraiAndroid)
### 插件开发与获取
mirai-console 支持 Jar 插件.
mirai-console 内建 Jar 插件支持.
**mirai-console 目前仍为实验性阶段, 任何功能和 API 都不保证稳定性. 任何 API 都可能在没有警告的情况下修改.**

View File

@ -120,8 +120,7 @@ abstract class CompositeCommand @JvmOverloads constructor(
"",
CommandPermission.Default,
onCommand = block { sender: CommandSender, args: Array<out Any> ->
println("default finally got args: ${args.joinToString()}")
true
false//not supported yet
}
)
}
@ -135,26 +134,16 @@ abstract class CompositeCommand @JvmOverloads constructor(
this@CompositeCommand::class.declaredFunctions.filter { it.hasAnnotation<SubCommand>() }.map { function ->
function.parameters.forEach {
println(it)
println(it.type.classifier)
println()
println()
}
val notStatic = function.findAnnotation<JvmStatic>() == null
val notStatic = function.findAnnotation<JvmStatic>()==null
val overridePermission = function.findAnnotation<Permission>()//optional
val subDescription = function.findAnnotation<Description>()?.description ?: "no description available"
val subDescription = function.findAnnotation<Description>()?.description?:"no description available"
if ((function.returnType.classifier as? KClass<*>)?.isSubclassOf(Boolean::class) != true) {
throw IllegalParameterException("Return Type of SubCommand must be Boolean")
}
val parameter = function.parameters.toMutableList()
if (parameter.isEmpty()) {
if (parameter.isEmpty()){
throw IllegalParameterException("First parameter (receiver for kotlin) for sub commend " + function.name + " from " + this.primaryName + " should be <out CommandSender>")
}
@ -162,7 +151,7 @@ abstract class CompositeCommand @JvmOverloads constructor(
parameter.removeAt(0)
}
(parameter.removeAt(0)).let { receiver ->
(parameter.removeAt(0)).let {receiver ->
if (
receiver.isVararg ||
((receiver.type.classifier as? KClass<*>).also { print(it) }