package xyz.etztech.minecraftmanager; import com.google.gson.JsonArray; import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.TextComponent; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import xyz.etztech.core.web.Http; import xyz.etztech.minecraftmanager.objects.ModelResponse; import java.util.Map; public class MCMUtil { public static Logger globalLogger; public static Logger staffLogger; public static void init() { MinecraftManager plugin = (MinecraftManager) Bukkit.getPluginManager().getPlugin("MinecraftManager"); String pluginPath = plugin.getDataFolder().getAbsolutePath(); System.setProperty("mcm.log", pluginPath + "/logs"); try { globalLogger = Logger.getLogger("mcm.global"); } catch (Exception e) { plugin.log("Could not connect to global log."); } if (plugin.getConfig().getBoolean("staff-chat.enabled")) { try { staffLogger = Logger.getLogger("mcm.staff"); } catch (Exception e) { plugin.log("Could not connect to staff log."); } } } public static void staffMessage(String message) { staffMessage(message, false); } public static void staffMessage(String message, boolean mcm) { log(staffLogger, message); String tag = mcm ? "MCM " : ""; HoverEvent hover = new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(tag + "Staff Chat").create()); TextComponent text = new TextComponent(message); text.setHoverEvent(hover); for (Player player : Bukkit.getServer().getOnlinePlayers()) { if (player.hasPermission("minecraftmanager.staff")) { player.spigot().sendMessage(text); } } Bukkit.getConsoleSender().sendMessage(message); } @Deprecated public static void staffMessage(String message, String hoverCommand) { log(staffLogger, message); HoverEvent hover = new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Staff Chat").create()); TextComponent text = new TextComponent(message); text.setHoverEvent(hover); if (StringUtils.isNotEmpty(hoverCommand)) { text.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, hoverCommand)); } for (Player player : Bukkit.getServer().getOnlinePlayers()) { if (player.hasPermission("minecraftmanager.staff")) { player.spigot().sendMessage(text); } } Bukkit.getConsoleSender().sendMessage(message); } public static void staffMessage(TextComponent message) { log(staffLogger, message.toPlainText()); for (Player player : Bukkit.getServer().getOnlinePlayers()) { if (player.hasPermission("minecraftmanager.staff")) { player.spigot().sendMessage(message); } } Bukkit.getConsoleSender().sendMessage(message.toPlainText()); } public static void globalMessage(String message) { log(globalLogger, message); for (Player player : Bukkit.getServer().getOnlinePlayers()) { player.sendMessage(message); } Bukkit.getConsoleSender().sendMessage(message); } public static void globalMessage(TextComponent message) { log(globalLogger, message.toPlainText()); for (Player player : Bukkit.getServer().getOnlinePlayers()) { player.spigot().sendMessage(message); } Bukkit.getConsoleSender().sendMessage(message.toPlainText()); } public static String getUUID(String playerName) { String uuid = null; try { uuid = Bukkit.getPlayer(playerName).getUniqueId().toString(); } catch(Exception ex) { try { Map filters = MCMAPI.setup(); filters.put("username__iexact", playerName); ModelResponse response = new ModelResponse(Http.HTTP(MCMAPI.getModelUrl("player"), Http.Method.GET, filters)); JsonArray players = response.getResults(); if (players.size() == 1) { uuid = players.get(0).getAsJsonObject().get("uuid").getAsString(); } } catch (Exception ignored) {} } return uuid; } public static void log(Logger logger, String message) { try { message = ChatColor.stripColor(message); logger.info(message); } catch (Exception ex) { Bukkit.getServer().getConsoleSender().sendMessage("Could not log message! Check your log files!"); } } }