2016-12-03 62 views
1

我正在用的插頭(我的世界)一個插件,我用枚舉來存儲郵件/語言,也具體的事情地位。 問題是狀態枚舉取決於消息枚舉。消息枚舉依賴於文件messages.yml。 我知道如何重新加載該文件,但是當我這樣做時,如果我更改文件messages.yml中的翻譯,但發送的消息會更新,但狀態消息的狀態不會更新。我會以「刷新」枚舉實例

因此,我想知道是否有可能刪除一個枚舉的實例,並再次向產生它更新這些值喜歡當插件重新加載它。

public enum Message { 
 

 
WAITING("Status.Waiting"); 
 

 
private String path; 
 

 
Message(String path) { 
 
this.path = path; 
 
} 
 

 
public String getMessage() { 
 
    return file.getString(path); 
 
} 
 

 
} 
 

 
public enum Status { 
 

 
WAITING(Message.WAITING.getMessage()); 
 

 
private String name; 
 

 
Status(String name) { 
 
this.name = name; 
 
} 
 

 
public getName() { 
 
return name; 
 
} 
 

 
}

請不要回答這個問題,我可以把WAITING(Message.WAITING),做Status.WAITING.getName(),會做name.getMessage();.我寫這段代碼作爲例子,我的函數不使用getName()函數,只是enum的值,所以名稱寫在消息枚舉中。

如果有人解決這個問題,請提前致謝。 :)

+0

爲什麼你真的需要使用枚舉?你可以在所有消息中使用帶getters的類,它們會在你的配置文件中找到並存儲在地圖中,例如 – Kerooker

+0

雖然'enums'可能聽起來像是儲存消息的好主意,但事實並非如此。枚舉並不是爲了重新加載而設計的,它們被設計成常量,所以任何黑客你放在一起都不值得花費。我推薦的是直接從文件中獲取消息。 –

回答

0

您不能添加/刪除到enum,因爲其他代碼中引用了enum。這將等同於移除的變量foo所有痕跡,然後試圖調用foo + 1

如果你要重新加載消息文件,你可以做file.reloadConfig()將從磁盤重新加載郵件,然後任何當你調用getMessage()時,它會在較新的文件中查找較新的消息。

+0

我不想修改枚舉的值,但重新加載枚舉類。就像移除存放的地方並再次生成它一樣。 他們的價值改變重新加載插件(如果文件被修改),所以我認爲有可能強制只重載一個枚舉或所有的插件也。我已經測試了各種方式來重新加載我的插件,但枚舉保留了它們的值,但是當我用plugman插件重新啓動時,它們發生了改變。 – MrTigreroux