fix: player ping on 1.17

This commit is contained in:
Maxim Van de Wynckel committed 2021-06-12 20:49:25 +02:00
1 parent bb3c3d1263
commit fc6314ad59
2 files changed
+24 -2

No files matched your search

@@ -34,6 +34,8 @@ import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffectType;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static com.extendedclip.papi.expansion.player.PlayerUtil.format12;
import static com.extendedclip.papi.expansion.player.PlayerUtil.format24;
@@ -62,7 +64,7 @@ public final class PlayerExpansion extends PlaceholderExpansion implements Confi
@Override
public String getVersion() {
return "1.8.0";
return "1.9.0";
}
@Override
@@ -389,4 +391,24 @@ public final class PlayerExpansion extends PlaceholderExpansion implements Confi
return ChatColor.translateAlternateColorCodes('&', ping > 100 ? high : ping > 50 ? medium : low) + ping;
}
/**
* Helper method to return the major version that the server is running.
*
* This is needed because in 1.17, NMS is no longer versioned.
*
* @return the major version of Minecraft the server is running
*/
public static int minecraftVersion() {
try {
final Matcher matcher = Pattern.compile("\\(MC: (\\d)\\.(\\d+)\\.?(\\d+?)?\\)").matcher(Bukkit.getVersion());
if (matcher.find()) {
return Integer.parseInt(matcher.toMatchResult().group(2), 10);
} else {
throw new IllegalArgumentException(String.format("No match found in '%s'", Bukkit.getVersion()));
}
} catch (final IllegalArgumentException ex) {
throw new RuntimeException("Failed to determine Minecraft version", ex);
}
}
}
@@ -76,7 +76,7 @@ public final class PlayerUtil {
final Object entityPlayer = getHandle.invoke(player);
ping = entityPlayer.getClass().getDeclaredField("ping");
ping = entityPlayer.getClass().getDeclaredField(PlayerExpansion.minecraftVersion() >= 17 ? "e" : "ping");
ping.setAccessible(true);
}
};