2015-02-24 125 views
0

我想在我的插件中使用反射。如何獲取bukkit版本?

但我不知道如何獲取bukkit,或者像v1_8_R1,v1_7_R4等NMS版本。

有什麼辦法可以得到這樣的東西嗎?或者我需要使用開關來檢測它使用Bukkit.getVerion(); ?

回答

4

您需要獲取任何網管或CB類的軟件包名稱。

以下示例以普通bukkit服務器實例plugin.getServer()爲例,並獲取CraftServer類並從包中讀取版本。

public static String getVersion(Server server) { 
    final String packageName = server.getClass().getPackage().getName(); 

    return packageName.substring(packageName.lastIndexOf('.') + 1); 
} 
0

我用這套方法,以確定哪個版本,或者如果它是一個較新的版本:

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