From 7a1e50d10f60949eaa1ce116c1e4c2763a0a4acb Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Sun, 21 Nov 2021 23:20:35 -0500 Subject: [PATCH] Fix reflection mappings for the ServerStateProvider in 1.18 --- .../src/main/java/net/ess3/nms/refl/ReflUtil.java | 1 + .../net/ess3/nms/refl/providers/ReflServerStateProvider.java | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/ReflUtil.java b/providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/ReflUtil.java index ba3d6a012..9bcf1292e 100644 --- a/providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/ReflUtil.java +++ b/providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/ReflUtil.java @@ -19,6 +19,7 @@ public final class ReflUtil { public static final NMSVersion V1_12_R1 = NMSVersion.fromString("v1_12_R1"); public static final NMSVersion V1_11_R1 = NMSVersion.fromString("v1_11_R1"); public static final NMSVersion V1_17_R1 = NMSVersion.fromString("v1_17_R1"); + public static final NMSVersion V1_18_R1 = NMSVersion.fromString("v1_18_R1"); private static final Map> classCache = new HashMap<>(); private static final Table, String, Method> methodCache = HashBasedTable.create(); private static final Table, MethodParams, Method> methodParamCache = HashBasedTable.create(); diff --git a/providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/providers/ReflServerStateProvider.java b/providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/providers/ReflServerStateProvider.java index e6a1b4d85..11493bf33 100644 --- a/providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/providers/ReflServerStateProvider.java +++ b/providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/providers/ReflServerStateProvider.java @@ -17,7 +17,9 @@ public class ReflServerStateProvider implements ServerStateProvider { final Class nmsClass = ReflUtil.getNMSClass("MinecraftServer"); try { serverObject = nmsClass.getMethod("getServer").invoke(null); - isRunning = MethodHandles.lookup().findVirtual(nmsClass, "isRunning", MethodType.methodType(boolean.class)); + isRunning = MethodHandles.lookup().findVirtual(nmsClass, + ReflUtil.getNmsVersionObject().isHigherThanOrEqualTo(ReflUtil.V1_18_R1) ? "v" : "isRunning", //TODO jmp said he may make this better + MethodType.methodType(boolean.class)); } catch (final Exception e) { e.printStackTrace(); }