2015-02-24 100 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; 
}