MinecraftManagerPlugin/src/main/java/xyz/etztech/minecraftmanager/MCMUtil.java

130 lines
4.8 KiB
Java

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<String, String> 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!");
}
}
}