Skip to content

Commit 1a55268

Browse files
authored
Fix IllegalAccessException with advancement listener on 1.12.2 (#4826)
Fixes #4809.
1 parent c5253bc commit 1a55268

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.lang.invoke.MethodHandle;
1212
import java.lang.invoke.MethodHandles;
1313
import java.lang.invoke.MethodType;
14+
import java.lang.reflect.Method;
1415

1516
public class AdvancementListenerProvider implements Listener {
1617
private final Object language;
@@ -25,10 +26,12 @@ public AdvancementListenerProvider() throws Throwable {
2526
} else {
2627
languageClass = ReflUtil.getNMSClass("LocaleLanguage");
2728
}
28-
final MethodHandles.Lookup lookup = MethodHandles.lookup();
29+
2930
//noinspection ConstantConditions
30-
language = lookup.findStatic(languageClass, ReflUtil.isMojMap() ? "getInstance" : "a", MethodType.methodType(languageClass)).invoke();
31-
languageGetOrDefault = lookup.findVirtual(languageClass, ReflUtil.isMojMap() ? "getOrDefault" : "a", MethodType.methodType(String.class, String.class));
31+
final Method iWishICouldUseMethodHandles = languageClass.getDeclaredMethod(ReflUtil.isMojMap() ? "getInstance" : "a");
32+
iWishICouldUseMethodHandles.setAccessible(true);
33+
language = iWishICouldUseMethodHandles.invoke(null);
34+
languageGetOrDefault = MethodHandles.lookup().findVirtual(languageClass, ReflUtil.isMojMap() ? "getOrDefault" : "a", MethodType.methodType(String.class, String.class));
3235
}
3336

3437
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)

0 commit comments

Comments
 (0)