Fix third party profile parsing

This commit is contained in:
games647
2016-07-19 10:47:47 +02:00
parent 642c1621ad
commit 5f9802d589
3 changed files with 22 additions and 4 deletions

View File

@ -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);
}
}

View File

@ -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());
}

View File

@ -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;