Skip to content

Commit f379323

Browse files
committed
Fix mappings in ReflOnlineModeProvider
1 parent f2dde41 commit f379323

1 file changed

Lines changed: 17 additions & 4 deletions

File tree

providers/NMSReflectionProvider/src/main/java/net/ess3/nms/refl/providers/ReflOnlineModeProvider.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.ess3.nms.refl.providers;
22

3+
import net.ess3.nms.refl.ReflUtil;
34
import org.bukkit.Bukkit;
45

56
import java.lang.invoke.MethodHandle;
@@ -9,23 +10,35 @@
910
public class ReflOnlineModeProvider {
1011
private final MethodHandle spigotBungeeGetter;
1112
private final MethodHandle paperBungeeGetter;
13+
private final Object paperProxiesInstance;
1214
private final boolean fancyPaperCheck;
1315

1416
public ReflOnlineModeProvider() {
1517
MethodHandle spigotBungeeGetter = null;
1618
MethodHandle paperBungeeGetter = null;
19+
Object paperProxiesInstance = null;
1720
boolean fancyCheck = false;
1821
try {
1922
final MethodHandles.Lookup lookup = MethodHandles.lookup();
2023
spigotBungeeGetter = lookup.findStaticGetter(Class.forName("org.spigotmc.SpigotConfig"), "bungee", boolean.class);
21-
final Class<?> paperConfig = Class.forName("com.destroystokyo.paper.PaperConfig");
22-
paperBungeeGetter = lookup.findStaticGetter(paperConfig, "bungeeOnlineMode", boolean.class);
23-
paperBungeeGetter = lookup.findStatic(paperConfig, "isProxyOnlineMode", MethodType.methodType(boolean.class));
24-
fancyCheck = true;
24+
final Class<?> newPaperConfigClass = ReflUtil.getClassCached("io.papermc.paper.configuration.GlobalConfiguration");
25+
if (newPaperConfigClass != null) {
26+
final Class<?> proxiesClass = Class.forName("io.papermc.paper.configuration.GlobalConfiguration$Proxies");
27+
final Object globalConfig = lookup.findStatic(newPaperConfigClass, "get", MethodType.methodType(newPaperConfigClass)).invoke();
28+
paperProxiesInstance = lookup.findGetter(newPaperConfigClass, "proxies", proxiesClass).invoke(globalConfig);
29+
paperBungeeGetter = lookup.findVirtual(proxiesClass, "isProxyOnlineMode", MethodType.methodType(boolean.class));
30+
fancyCheck = true;
31+
} else {
32+
final Class<?> paperConfig = Class.forName("com.destroystokyo.paper.PaperConfig");
33+
paperBungeeGetter = lookup.findStaticGetter(paperConfig, "bungeeOnlineMode", boolean.class);
34+
paperBungeeGetter = lookup.findStatic(paperConfig, "isProxyOnlineMode", MethodType.methodType(boolean.class));
35+
fancyCheck = true;
36+
}
2537
} catch (Throwable ignored) {
2638
}
2739
this.spigotBungeeGetter = spigotBungeeGetter;
2840
this.paperBungeeGetter = paperBungeeGetter;
41+
this.paperProxiesInstance = paperProxiesInstance;
2942
this.fancyPaperCheck = fancyCheck;
3043
}
3144

0 commit comments

Comments
 (0)