diff --git a/pom.xml b/pom.xml index 32ba863..6903b55 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ com.extendedclip.papi.expansion.player player-expansion - 2.0.8 + 2.0.9 PAPI-Expansion-Player PlaceholderAPI expansion for player placeholders diff --git a/src/main/java/com/extendedclip/papi/expansion/player/PlayerExpansion.java b/src/main/java/com/extendedclip/papi/expansion/player/PlayerExpansion.java index f8b6dd6..0571eaf 100644 --- a/src/main/java/com/extendedclip/papi/expansion/player/PlayerExpansion.java +++ b/src/main/java/com/extendedclip/papi/expansion/player/PlayerExpansion.java @@ -76,7 +76,7 @@ public String getAuthor() { @Override public String getVersion() { - return "2.0.8"; + return "2.0.9"; } @Override diff --git a/src/main/java/com/extendedclip/papi/expansion/player/PlayerUtil.java b/src/main/java/com/extendedclip/papi/expansion/player/PlayerUtil.java index cd37449..05abb49 100644 --- a/src/main/java/com/extendedclip/papi/expansion/player/PlayerUtil.java +++ b/src/main/java/com/extendedclip/papi/expansion/player/PlayerUtil.java @@ -125,12 +125,16 @@ private void cacheReflection(final Player player) throws NoSuchFieldException, N final Object entityPlayer = getHandle.invoke(player); - if (VersionHelper.IS_1_20_4_OR_NEWER) { - locale = entityPlayer.getClass().getField("cO"); + if (VersionHelper.IS_MOJMAP) { + locale = entityPlayer.getClass().getField("language"); + } else if (VersionHelper.IS_1_20_6_OR_NEWER) { + locale = entityPlayer.getClass().getField("dd"); + } else if (VersionHelper.IS_1_20_4_OR_NEWER) { + locale = entityPlayer.getClass().getField("cO"); } else if (VersionHelper.IS_1_20_2_OR_NEWER) { - locale = entityPlayer.getClass().getField("cM"); + locale = entityPlayer.getClass().getField("cM"); } else { - locale = entityPlayer.getClass().getField("locale"); + locale = entityPlayer.getClass().getField("locale"); } } }; diff --git a/src/main/java/com/extendedclip/papi/expansion/player/VersionHelper.java b/src/main/java/com/extendedclip/papi/expansion/player/VersionHelper.java index 11a218b..0058c4c 100644 --- a/src/main/java/com/extendedclip/papi/expansion/player/VersionHelper.java +++ b/src/main/java/com/extendedclip/papi/expansion/player/VersionHelper.java @@ -35,6 +35,16 @@ public final class VersionHelper { */ public static final boolean IS_1_20_4_OR_NEWER = VERSION >= 1_20_4; + /** + * @see Player#getLocale() + */ + public static final boolean IS_1_20_6_OR_NEWER = VERSION >= 1_20_6; + + /** + * @see Player#getLocale() + */ + public static final boolean IS_MOJMAP = IS_1_20_6_OR_NEWER && doesClassExist("org.bukkit.craftbukkit.CraftServer"); + private VersionHelper() { } /** @@ -65,4 +75,19 @@ private static int getCurrentVersion() { return version; } + /** + * Detect specific class exists + * + * @param className + * @return true if the class exists, otherwise false + */ + private static boolean doesClassExist(String className) { + try { + Class.forName(className); + return true; + } catch (ClassNotFoundException e) { + return false; + } + } + }