使用dispatchCommand执行命令后如何获取在控制台输出的内容而不是返回boolean
控制台输出的内容属于供人类阅读的内容,插件本身不应依赖任何类似的输出。
不过办法还是有的,监听输出消息的事件(不写 Bukkit,不清楚是啥),然后拿到数据就行了。
不过办法还是有的,监听输出消息的事件(不写 Bukkit,不清楚是啥),然后拿到数据就行了。
https://github.com/Light-Light/RemoteControl-Plugin/blob/master/src/com/qing_guang/RemoteControl/plugin/setout/Recorder.java
如果你愿意的话,可以看一下我的源码,里面有获取控制台所有输出的方法
你可以在dispatch之前先注册,之后再删掉(不知道能不能删,看log4j吧)
如果你愿意的话,可以看一下我的源码,里面有获取控制台所有输出的方法
你可以在dispatch之前先注册,之后再删掉(不知道能不能删,看log4j吧)
土球球 发表于 2019-10-6 21:00
控制台输出的内容属于供人类阅读的内容,插件本身不应依赖任何类似的输出。
不过办法还是有的,监听输出消 ...
文档里面没找到
轻光233 发表于 2019-10-6 21:06
https://github.com/Light-Light/RemoteControl-Plugin/blob/master/src/com/qing_guang/RemoteControl/plu ...
你这个有点没看懂
本帖最后由 a1294790523 于 2019-10-7 01:25 编辑
听说这个是个搞事的问题(
复制代码
研究了一下,大概是获取log4j的rootlogger,然后添加Appender并重写这个方法,在命令执行时令某个boolean为true然后获取数据即可
但是这个不能确保是命令返回的数据,所以你应该还得加个标识符什么的
听说这个是个搞事的问题(
- ((org.apache.logging.log4j.core.Logger)LogManager.getRootLogger()).addAppender(new AbstractAppender("commandLogger",null, null) {
- @Override
- public void append(LogEvent logEvent) {
研究了一下,大概是获取log4j的rootlogger,然后添加Appender并重写这个方法,在命令执行时令某个boolean为true然后获取数据即可
但是这个不能确保是命令返回的数据,所以你应该还得加个标识符什么的