我想在我的插件中使用反射。如何获取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;
}