mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-09-28 22:47:32 +02:00
[BLIND] Use MinecraftServer.getVersion, if no version was detected.
This commit is contained in:
parent
7c5d67b1d4
commit
7fb960275d
@ -17,7 +17,7 @@ package fr.neatmonster.nocheatplus.compat.cbreflect.reflect;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Server;
|
||||
|
||||
import fr.neatmonster.nocheatplus.utilities.ReflectionUtil;
|
||||
import fr.neatmonster.nocheatplus.compat.versions.ServerVersion;
|
||||
|
||||
public class ReflectBase {
|
||||
|
||||
@ -39,8 +39,7 @@ public class ReflectBase {
|
||||
obcPackageName = null;
|
||||
}
|
||||
// nms
|
||||
Object obj = ReflectionUtil.invokeMethodNoArgs(server, "getHandle");
|
||||
clazz = obj.getClass();
|
||||
clazz = ServerVersion.getNMSMinecraftServer();
|
||||
name = clazz.getPackage().getName();
|
||||
if (name.equals("net.minecraft.server") || name.indexOf("net.") == 0 && name.indexOf(".minecraft.") != -1 && name.indexOf(".server.") != -1) {
|
||||
nmsPackageName = name;
|
||||
|
@ -42,7 +42,11 @@ public class BukkitVersion {
|
||||
// Initialize server version.
|
||||
final Server server = Bukkit.getServer();
|
||||
// Note that Bukkit.getVersion() should be used to get the version of Bukkit (...)
|
||||
ServerVersion.setMinecraftVersion(ServerVersion.parseMinecraftVersion(server.getBukkitVersion(), server.getVersion()));
|
||||
ServerVersion.setMinecraftVersion(ServerVersion.parseMinecraftVersion(
|
||||
server.getBukkitVersion(),
|
||||
server.getVersion(),
|
||||
ServerVersion.fetchNMSMinecraftServerVersion()
|
||||
));
|
||||
|
||||
// Test availability/reliability of certain features.
|
||||
boolean uuidOnline = false;
|
||||
|
@ -14,6 +14,11 @@
|
||||
*/
|
||||
package fr.neatmonster.nocheatplus.compat.versions;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Server;
|
||||
|
||||
import fr.neatmonster.nocheatplus.utilities.ReflectionUtil;
|
||||
|
||||
/**
|
||||
* Static utility that stores the Minecraft version, providing some parsing
|
||||
* methods. This has to be initialized from an external source (e.g. a plugin
|
||||
@ -64,6 +69,30 @@ public class ServerVersion {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Class<?> getNMSMinecraftServer() {
|
||||
final Server server = Bukkit.getServer();
|
||||
try {
|
||||
final Object obj = ReflectionUtil.invokeMethodNoArgs(server, "getHandle");
|
||||
return obj.getClass();
|
||||
}
|
||||
catch (Throwable t) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String fetchNMSMinecraftServerVersion() {
|
||||
final Class<?> clazz = getNMSMinecraftServer();
|
||||
if (clazz == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return (String) ReflectionUtil.invokeMethodNoArgs(clazz, "getVersion", String.class);
|
||||
}
|
||||
catch (Throwable t) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Simple consistency check.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user