如何获得bukkit版本?

How to get bukkit version?

我正在尝试在我的插件中使用反射。

但我不知道如何获取bukkit,或v1_8_R1、v1_7_R4等NMS版本。

有什么办法可以得到这种东西吗?或者我需要使用开关来检测它使用 Bukkit.getVerion(); ?

您需要获取任何NMS或CB的包名class。

下面的示例采用普通的 bukkit 服务器实例 plugin.getServer() 并获取 class 这是 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;
}