EAA_MOD/src/main/java/net/saltymc/eaa/util/mojangApi/PlayerInfo.java

66 lines
2.7 KiB
Java

package net.saltymc.eaa.util.mojangApi;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.UUID;
public class PlayerInfo {
private static final Logger LOGGER = LogManager.getLogger();
public static String playerNameToUUID(String playerName) throws MojangUtilException {
HttpClient httpClient = HttpClientBuilder.create().build();
try {
HttpPost request = new HttpPost("https://api.mojang.com/profiles/minecraft");
StringEntity params = new StringEntity("[\"" + playerName + "\"]");
request.addHeader("Content-Type", "application/json");
request.setEntity(params);
HttpResponse response = httpClient.execute(request);
// take the response body as a json formatted string
JsonObject responseJSON = new JsonParser().parse(EntityUtils.toString(response.getEntity())).getAsJsonArray().get(0).getAsJsonObject();
//doublecheck correct name
if (!responseJSON.get("name").getAsString().equalsIgnoreCase(playerName))
throw new Exception("Api response provided wrong player!");
return responseJSON.get("id").getAsString();
} catch (Exception ex) {
LOGGER.error("Error parsing playername to UUID while contacting API: ", ex);
throw new MojangUtilException("Could not parse Username to UUID!", ex);
}
}
public static String playerUUIDToName(String playerUUID) throws MojangUtilException{
try {
HttpClient httpClient = HttpClientBuilder.create().build();
HttpGet request = new HttpGet("https://api.mojang.com/user/profiles/" + playerUUID.toString().replaceAll("-", "") + "/names");
HttpResponse response = httpClient.execute(request);
// take the response body as a json formatted string
JsonObject responseJSON = new JsonParser().parse(EntityUtils.toString(response.getEntity())).getAsJsonArray().get(0).getAsJsonObject();
return responseJSON.get("name").getAsString();
} catch (Exception e){
LOGGER.error("Could not parse UUID to username!", e);
throw new MojangUtilException("Could not parse UUID to username!", e);
}
}
}