取消播放器命令的控制台输出

时间:2013-07-09 18:30:58

标签: java console minecraft bukkit

我正在制作一个bukkit插件,允许玩家使用密码锁定箱子。为了保护玩家,我希望保持密码不受服务器运营商的窥探。

我想隐藏播放器使用命令时打印的控制台文本。例如,当玩家输入/ gamemode 1时,控制台会打印出命令以及谁使用它。有没有办法阻止这个?也许拦截它并擦拭它,或者把它弄乱?

2 个答案:

答案 0 :(得分:5)

所以我环顾了那些插件,它们比我做这个简单的事情要复杂得多,所以我想我会为任何偶然发现这个问题的人发布我的解决方案。

您要做的是使用java.util.logging.Filter接口创建过滤器。在那里你重写isLoggable()函数。就我而言,这是我做的确切对象。

import java.util.logging.Filter;
import java.util.logging.LogRecord;

public class CustomFilter implements Filter {

@Override
public boolean isLoggable(LogRecord record) {

    if(record.getMessage().contains("issued server command: /login")) {
        return false;
    }
    else {
        return true;
            }
      }
}

然后,您唯一需要做的就是将此过滤器添加到服务器记录器中。我使用的确切行是:

    CustomFilter filter = new CustomFilter();
    plugin.getServer().getLogger().setFilter(filter);

其中插件是主类中插件的实例。

希望这有助于任何发现此事的人。

答案 1 :(得分:0)

似乎有一些设计用于执行此操作的插件,但仍未维护任何插件。

ConsoleFilter

BlockConsoleMessages

其中一个可能适合您,或者您可以在其中找到符合您需要的代码。