package xyz.etztech.qol; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.permissions.PermissionAttachmentInfo; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Set; import java.util.UUID; public class EtzTechUtil { public static final String MOJANG_API = "https://api.mojang.com/"; public static final String UUID_API = "users/profiles/minecraft/{name}"; public static final String NAME_HISTORY_API = "user/profiles/{uuid}/names"; public static String path(String path, String key, String value) { return path.replace("{" + key + "}", value); } public static void sms(CommandSender paramCommandSender, String paramString) { paramCommandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', paramString)); } public static void sms(Player paramPlayer, String paramString) { paramPlayer.sendMessage(ChatColor.translateAlternateColorCodes('&', paramString)); } public static UUID asUUID(String uuid) { try { if (uuid.contains("-") && uuid.length() == 36) { return UUID.fromString(uuid); } else if (uuid.length() == 32) { return UUID.fromString(uuid.substring(0, 8) + "-" + uuid.substring(8, 12) + "-" + uuid.substring(12, 16) + "-" + uuid.substring(16, 20) + "-" + uuid.substring(20, 32)); } else { return null; } } catch (Exception ex) { return null; } } public static String getUUID(String username) { // First, look for an online player for (Player player : Bukkit.getOnlinePlayers()) { if (player.getName().toLowerCase().equals(username.toLowerCase())) { return formatUUID(player.getUniqueId().toString(), false); } } // Nothing? Well shit, guess we better ask Mojang try { InputStream response = new URL(MOJANG_API + EtzTechUtil.path(UUID_API, "name", username)).openStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(response)); JsonObject jsonObject = new JsonParser().parse(reader.readLine()).getAsJsonObject(); return jsonObject.get("id").getAsString(); } catch (Exception ex) { //QoL.getInstance().log("Could not connect to Mojang API."); return null; } } public static String formatUUID(String uuid, boolean dash) { if (uuid.contains("-") && uuid.length() == 36) { if (dash) { return uuid; } else { return uuid.replace("-", ""); } } else if (!uuid.contains("-") && uuid.length() == 32) { if (dash) { return uuid.substring(0, 8) + "-" + uuid.substring(8, 12) + "-" + uuid.substring(12, 16) + "-" + uuid.substring(16, 20) + "-" + uuid.substring(20, 32); } else { return uuid; } } else { return uuid; } } public static String componentText(BaseComponent... components) { StringBuilder text = new StringBuilder(); for (BaseComponent component : components) { text.append(ChatColor.stripColor(component.toPlainText())); } return text.toString(); } public static String formatDate(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy"); return sdf.format(date); } public static String yesNo(boolean yesNo) { if (yesNo) { return ChatColor.GREEN + "Yes"; } else { return ChatColor.RED + "No"; } } public static int minutesToTicks(int minutes) { return minutes*60*20; } public static int getPermValue(String perm, Set permissions) { int limit = 0; for (PermissionAttachmentInfo permission : permissions) { if (permission.getPermission().startsWith(perm + ".") && permission.getValue()) { try { int p = Integer.parseInt(permission.getPermission().replaceFirst(perm + ".", "")); limit = limit > p ? limit : p; } catch (Exception ignored) {} } } return limit; } }