QoL/src/main/java/xyz/etztech/qol/EtzTechUtil.java

135 lines
4.6 KiB
Java

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<PermissionAttachmentInfo> 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;
}
}