Freeze_Dolphin
和版本有关的方法貌似只有Server.getBukkitVersion(),但是不知道怎么用,而且javadocs里也没有注释说怎么判断版本(这个方法居然返回的是个String)
@NotNull
@NotNull String getBukkitVersion?()
Gets the Bukkit version that this server is running.
Returns:
version of Bukkit
想起Slimefun里有判断版本的代码
但是貌似比较长
而且调用了CSCoreLib2的反射类= =
为了判断一个服务器版本而添加一个CSCoreLib显然不现实

paper端里貌似有个Server.getVersion()方法(也返回String);原文如下:
@NotNull
@NotNull String getVersion()
Gets the version string of this server implementation.
Returns:
version of this server implementation


502mc
返回字符串有什么问题吗?不然还能给你个整数不成

William_Shi
现在一般都采用这个

version = org.bukkit.Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];

可以得到 1_15_R1 这样的字符串

主要是用来反射OBC或者NMS的类

南柯郡守
简单点可以直接使用你说的两种办法 然后用contains("1.12")这种方法来判断版本

用起来比较简单

结城希亚
至少我是这么做的(别打我)
  1. String version = Bukkit.getServer().getVersion();
  2. Boolean a;                                   

  3. if(version.contains("1.9")||version.contains("1.10")||version.contains("1.11")||version.contains("1.12")||version.contains("1.13")||version.contains("1.14")||version.contains("1.15"))
  4. a=true;
  5. else
  6. a=false;
复制代码

言灵乀Poison
如果是获取mc版本的话可以考虑使用ProtocolLib前置,方便实用(而且大部分服务器都有安装此插件)
如果不方便前置插件的话可以直接copy一下pl用的正则
  1. .*\\(.*MC.\\s*([a-zA-z0-9\\-\\.]+)\\s*\\)
复制代码

使用
  1. pattern.matcher(version).group(1)
复制代码

即可提取版本号

当然这样简单粗暴没办法判断快照/开发版本,而且比较版本号也不方便,需要判断快照版本或者比较版本号的话可以使用ProtocolLib作为前置,或者抄pl的com.comphenix.protocol.utility.MinecraftVersion类的代码(并在发布时注明代码来源)