xiaozheng666QQ
使用dispatchCommand执行命令后如何获取在控制台输出的内容而不是返回boolean



土球球
控制台输出的内容属于供人类阅读的内容,插件本身不应依赖任何类似的输出。
不过办法还是有的,监听输出消息的事件(不写 Bukkit,不清楚是啥),然后拿到数据就行了。

轻光233
https://github.com/Light-Light/RemoteControl-Plugin/blob/master/src/com/qing_guang/RemoteControl/plugin/setout/Recorder.java
如果你愿意的话,可以看一下我的源码,里面有获取控制台所有输出的方法
你可以在dispatch之前先注册,之后再删掉(不知道能不能删,看log4j吧)

xiaozheng666QQ
土球球 发表于 2019-10-6 21:00
控制台输出的内容属于供人类阅读的内容,插件本身不应依赖任何类似的输出。
不过办法还是有的,监听输出消 ...

文档里面没找到

xiaozheng666QQ
轻光233 发表于 2019-10-6 21:06
https://github.com/Light-Light/RemoteControl-Plugin/blob/master/src/com/qing_guang/RemoteControl/plu ...

你这个有点没看懂

a1294790523
本帖最后由 a1294790523 于 2019-10-7 01:25 编辑

听说这个是个搞事的问题(
  1.                     ((org.apache.logging.log4j.core.Logger)LogManager.getRootLogger()).addAppender(new AbstractAppender("commandLogger",null, null) {
  2.                         @Override
  3.                         public void append(LogEvent logEvent) {
复制代码

研究了一下,大概是获取log4j的rootlogger,然后添加Appender并重写这个方法,在命令执行时令某个boolean为true然后获取数据即可
但是这个不能确保是命令返回的数据,所以你应该还得加个标识符什么的

第一页 上一页 下一页 最后一页