2013-07-09 133 views
1

我正在製作一個bukkit插件,允許玩家用密碼鎖定箱子。爲了保護玩家,我想保留服務器操作員的密碼。抑制控制檯輸出的玩家命令

我想隱藏當玩家使用命令時打印的控制檯文本。例如,當玩家輸入/ gamemode 1時,控制檯輸出命令以及誰使用它。有什麼辦法可以阻止它嗎?也許攔截它並擦除它,或者是亂碼?

回答

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); 

其中plugin是主類中插件的實例。

希望這可以幫助任何發現這一點的人。

0

似乎有一些爲此設計的插件,但都沒有保留。

ConsoleFilter

BlockConsoleMessages

他們中的一個可能會爲你工作,或者你可以找到它們的代碼,你想要做什麼。

+0

太棒了,這會很好。現在我知道這是可能的,我可以爲球員做更加安全的事情,因爲他們總是會使用他們的一切 - 密碼:P – Kammeot