Skip to content

Commit a2cf228

Browse files
committed
Improve MethodHandle API PR for ACFBukkitLocalesListener
1 parent 11fd673 commit a2cf228

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

bukkit/src/main/java/co/aikar/commands/ACFBukkitLocalesListener.java

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,13 @@
3131
import java.lang.invoke.MethodHandle;
3232
import java.lang.invoke.MethodHandles;
3333
import java.lang.invoke.MethodType;
34-
import java.lang.reflect.InvocationTargetException;
35-
import java.lang.reflect.Method;
3634
import java.util.Locale;
3735

3836
class ACFBukkitLocalesListener implements Listener {
3937

4038
private final BukkitCommandManager manager;
4139
private MethodHandle localeMethod1_8 = null;
40+
private boolean checkedLocaleMethod1_8 = false;
4241

4342
ACFBukkitLocalesListener(BukkitCommandManager manager) {
4443
this.manager = manager;
@@ -60,24 +59,20 @@ void onLocaleChange(PlayerLocaleChangeEvent event) {
6059
}
6160
} catch (NoSuchMethodError ignored2) {
6261
try {
62+
if (!checkedLocaleMethod1_8) {
63+
checkedLocaleMethod1_8 = true;
64+
MethodHandles.Lookup lookup = MethodHandles.lookup();
65+
MethodType type = MethodType.methodType(String.class);
66+
localeMethod1_8 = lookup.findVirtual(PlayerLocaleChangeEvent.class, "getNewLocale", type);
67+
}
6368
if (localeMethod1_8 != null) {
6469
String value = (String) localeMethod1_8.invoke(event);
6570
if (!value.equals(manager.issuersLocaleString.get(player.getUniqueId()))) {
6671
locale = ACFBukkitUtil.stringToLocale(value);
6772
}
68-
69-
return;
70-
}
71-
72-
MethodHandles.Lookup lookup = MethodHandles.lookup();
73-
MethodType type = MethodType.methodType(String.class);
74-
75-
localeMethod1_8 = lookup.findVirtual(PlayerLocaleChangeEvent.class, "getNewLocale", type);
76-
String value = (String) localeMethod1_8.invoke(event);
77-
if (!value.equals(manager.issuersLocaleString.get(player.getUniqueId()))) {
78-
locale = ACFBukkitUtil.stringToLocale(value);
7973
}
80-
} catch (Throwable ignored3) {
74+
} catch (Throwable t) {
75+
manager.log(LogLevel.ERROR, "Error registering MethodHandle for LocaleChangeEvent", t);
8176
}
8277
}
8378
}

0 commit comments

Comments
 (0)