1

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

我想隐藏玩家使用命令时打印的控制台文本。例如,当玩家输入 /gamemode 1 时,控制台会打印出命令和使用者。有没有办法阻止这种情况?也许拦截它并擦除它,或者乱码?

4

2 回答 2

7

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

您要做的是使用 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);

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

希望这可以帮助任何找到这个的人。

于 2013-07-18T05:10:26.447 回答
0

似乎有几个插件为此而设计,但没有一个仍然维护。

控制台过滤器

块控制台消息

其中之一可能对您有用,或者您可以在其中找到满足您需求的代码。

于 2013-07-09T18:46:35.083 回答