プレイヤーがチェストをパスワードでロックできるようにする bukkit プラグインを作成しています。プレイヤーを保護するために、サーバー オペレーターの詮索好きな目からもパスワードを守りたいと思います。
プレイヤーがコマンドを使用したときに表示されるコンソール テキストを非表示にしたいと考えています。たとえば、プレイヤーが /gamemode 1 と入力すると、コンソールはコマンドとそれを使用したユーザーを出力します。これを止める方法はありますか?傍受して拭くか、文字化けするか?
そこで、これらのプラグインを調べてみましたが、この単純なことを行うために必要なものよりもはるかに複雑なので、これに出くわした人のために私のソリューションを投稿すると思いました.
やりたいことは、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 は、メイン クラスのプラグインのインスタンスです。
これがこれを見つけた人の助けになることを願っています。
これを行うために設計されたプラグインがいくつかあるようですが、どちらもまだ維持されていません。
そのうちの 1 つがあなたのために働くかもしれませんし、あなたが望むことをするコードを見つけることができるかもしれません。