From 5f9802d589cb2299ae19eb7a0cd259e2764d4097 Mon Sep 17 00:00:00 2001 From: games647 Date: Tue, 19 Jul 2016 10:47:47 +0200 Subject: [PATCH] Fix third party profile parsing --- .../games647/fastlogin/bukkit/MojangApiBukkit.java | 13 +++++++++++-- .../games647/fastlogin/bungee/MojangApiBungee.java | 10 +++++++++- .../bungee/listener/PlayerConnectionListener.java | 3 ++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/MojangApiBukkit.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/MojangApiBukkit.java index cc641129..110c9f0c 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/MojangApiBukkit.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/MojangApiBukkit.java @@ -69,8 +69,17 @@ public class MojangApiBukkit extends MojangApiConnector { @Override protected UUID getUUIDFromJson(String json) { - JSONObject userData = (JSONObject) JSONValue.parse(json); - String uuid = (String) userData.get("id"); + boolean isArray = json.startsWith("["); + + JSONObject mojangPlayer; + if (isArray) { + JSONArray array = (JSONArray) JSONValue.parse(json); + mojangPlayer = (JSONObject) array.get(0); + } else { + mojangPlayer = (JSONObject) JSONValue.parse(json); + } + + String uuid = (String) mojangPlayer.get("id"); return FastLoginCore.parseId(uuid); } } diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/MojangApiBungee.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/MojangApiBungee.java index 6fa2e4c7..f2c74de2 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/MojangApiBungee.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/MojangApiBungee.java @@ -19,7 +19,15 @@ public class MojangApiBungee extends MojangApiConnector { @Override protected UUID getUUIDFromJson(String json) { - MojangPlayer mojangPlayer = BungeeCord.getInstance().gson.fromJson(json, MojangPlayer.class); + boolean isArray = json.startsWith("["); + + MojangPlayer mojangPlayer; + if (isArray) { + mojangPlayer = BungeeCord.getInstance().gson.fromJson(json, MojangPlayer[].class)[0]; + } else { + mojangPlayer = BungeeCord.getInstance().gson.fromJson(json, MojangPlayer.class); + } + return FastLoginCore.parseId(mojangPlayer.getId()); } diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/listener/PlayerConnectionListener.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/listener/PlayerConnectionListener.java index 9635b1b6..5495772c 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/listener/PlayerConnectionListener.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/listener/PlayerConnectionListener.java @@ -23,6 +23,7 @@ import net.md_5.bungee.connection.InitialHandler; import net.md_5.bungee.connection.LoginResult; import net.md_5.bungee.connection.LoginResult.Property; import net.md_5.bungee.event.EventHandler; +import net.md_5.bungee.event.EventPriority; /** * Enables online mode logins for specified users and sends @@ -47,7 +48,7 @@ public class PlayerConnectionListener implements Listener { ProxyServer.getInstance().getScheduler().runAsync(plugin, new AsyncPremiumCheck(plugin, preLoginEvent)); } - @EventHandler + @EventHandler(priority = EventPriority.LOW) public void onLogin(LoginEvent loginEvent) { if (loginEvent.isCancelled()) { return;