From 48291b7c4df464e6070ae2b60ef909e3cad80c44 Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Wed, 31 Dec 2014 11:18:55 +0100 Subject: [PATCH] Rework the MUtil.getOnlinePlayers slightly again. --- .../massivecraft/massivecore/util/MUtil.java | 49 ++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/massivecraft/massivecore/util/MUtil.java b/src/main/java/com/massivecraft/massivecore/util/MUtil.java index 83b79a9a..6b2100e6 100644 --- a/src/main/java/com/massivecraft/massivecore/util/MUtil.java +++ b/src/main/java/com/massivecraft/massivecore/util/MUtil.java @@ -126,40 +126,43 @@ public class MUtil public static Collection getOnlinePlayers() { + // Fetch some kind of playersObject. + Object playersObject = null; try { - return Bukkit.getOnlinePlayers(); + playersObject = Bukkit.getOnlinePlayers(); } - catch (Throwable e) + catch (Throwable t) { + // That didn't work! // We probably just caught a NoSuchMethodError. + // So let's try with reflection instead. + try + { + playersObject = methodGetOnlinePlayers.invoke(null); + } + catch (Exception e) + { + e.printStackTrace(); + } } - try + // Now return the playersObject. + if (playersObject instanceof Collection) { - Object playersObject = methodGetOnlinePlayers.invoke(null); - if (playersObject instanceof Collection) - { - @SuppressWarnings("unchecked") - Collection playersCollection = (Collection)playersObject; - return playersCollection; - } - else if (playersObject instanceof Player[]) - { - Player[] playersArray = (Player[])playersObject; - return Arrays.asList(playersArray); - } - else - { - throw new RuntimeException("Unknown return type for getOnlinePlayers using reflection."); - } + @SuppressWarnings("unchecked") + Collection playersCollection = (Collection)playersObject; + return playersCollection; } - catch (Exception e) + else if (playersObject instanceof Player[]) { - e.printStackTrace(); + Player[] playersArray = (Player[])playersObject; + return Arrays.asList(playersArray); + } + else + { + throw new RuntimeException("Failed retrieving online players."); } - - return null; } // -------------------------------------------- //