我想在我的插件中使用反射。如何獲取bukkit版本?
但我不知道如何獲取bukkit,或者像v1_8_R1,v1_7_R4等NMS版本。
有什麼辦法可以得到這樣的東西嗎?或者我需要使用開關來檢測它使用Bukkit.getVerion(); ?
我想在我的插件中使用反射。如何獲取bukkit版本?
但我不知道如何獲取bukkit,或者像v1_8_R1,v1_7_R4等NMS版本。
有什麼辦法可以得到這樣的東西嗎?或者我需要使用開關來檢測它使用Bukkit.getVerion(); ?
您需要獲取任何網管或CB類的軟件包名稱。
以下示例以普通bukkit服務器實例plugin.getServer()
爲例,並獲取CraftServer類並從包中讀取版本。
public static String getVersion(Server server) {
final String packageName = server.getClass().getPackage().getName();
return packageName.substring(packageName.lastIndexOf('.') + 1);
}
我用這套方法,以確定哪個版本,或者如果它是一個較新的版本:
public static boolean isMC110(){
return Bukkit.getBukkitVersion().contains("1.10");
}
public static boolean isMC19(){
return Bukkit.getBukkitVersion().contains("1.9");
}
public static boolean isMC18(){
return Bukkit.getBukkitVersion().contains("1.8");
}
public static boolean isMC17(){
return Bukkit.getBukkitVersion().contains("1.7");
}
public static boolean isMC110OrNewer(){
if (isMC110())
return true;
else if (isMC19()||isMC18()||isMC17())
return false;
return true;
}
public static boolean isMC19OrNewer(){
if (isMC19())
return true;
else if (isMC18()||isMC17())
return false;
return true;
}
public static boolean isMC18OrNewer(){
if (isMC18())
return true;
else if (isMC17())
return false;
return true;
}