Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.bingorufus.chatitemdisplay.executors;
- import me.bingorufus.chatitemdisplay.ChatItemDisplay;
- import me.bingorufus.chatitemdisplay.util.string.StringFormatter;
- import me.bingorufus.chatitemdisplay.util.string.VersionComparator;
- 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 net.md_5.bungee.api.chat.hover.content.Text;
- import org.apache.commons.lang.StringEscapeUtils;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Server;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandExecutor;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.Plugin;
- import org.jetbrains.annotations.NotNull;
- import org.spigotmc.SpigotConfig;
- import java.io.*;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- public class DebugExecutor implements CommandExecutor {
- final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy.MM.dd HH.mm.ss");
- public boolean onCommand(CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
- if (!sender.hasPermission(" ChatItemDisplay.reload")) {
- sender.sendMessage(new StringFormatter().format(
- ChatItemDisplay.getInstance().getConfig().getString("messages.missing-permission")));
- return true;
- }
- File folder = ChatItemDisplay.getInstance().getDataFolder();
- String logName = "Debug Log " + dateFormat.format(new Date()) + ".txt";
- File log = folder.toPath().resolve("logs").resolve(logName).toFile();
- File logFolder = folder.toPath().resolve("logs").toFile();
- if (!logFolder.exists()) logFolder.mkdirs();
- BufferedWriter writer = null;
- OutputStreamWriter out = null;
- try {
- log.createNewFile();
- out = new OutputStreamWriter(new FileOutputStream(log));
- writer = new BufferedWriter(out);
- if (!writeLogs(writer)) {
- sender.sendMessage(ChatColor.RED + "An unexpected error has occurred");
- writer.close();
- out.close();
- writer.flush();
- out.flush();
- return true;
- }
- TextComponent tc = new TextComponent(ChatColor.GREEN + "A debug log has been successfully generated and has been saved to ");
- TextComponent extra = new TextComponent(ChatColor.GREEN + "" + ChatColor.BOLD + log.getAbsolutePath());
- VersionComparator.Status s = new VersionComparator().isRecent(
- Bukkit.getServer().getVersion().substring(Bukkit.getServer().getVersion().indexOf("(MC: ") + 5,
- Bukkit.getServer().getVersion().indexOf(")")),
- "1.16");
- if (s.equals(VersionComparator.Status.BEHIND)) {
- extra.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder("Click to copy the file path").create()));
- extra.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, log.getAbsolutePath()));
- } else {
- extra.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("Click to copy the file path")));
- extra.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, log.getAbsolutePath()));
- }
- tc.addExtra(extra);
- if (sender instanceof Player) sender.spigot().sendMessage(tc);
- else
- sender.sendMessage(ChatColor.GREEN + "A debug log has been successfully generated and has been saved to " + ChatColor.BOLD + log.getAbsolutePath());
- writer.close();
- out.close();
- } catch (IOException e) {
- try {
- if (writer != null) {
- writer.close();
- }
- if (out != null) {
- out.close();
- }
- } catch (Exception ignored) {
- }
- e.printStackTrace();
- sender.sendMessage(ChatColor.RED + "An unexpected error has occurred");
- return true;
- }
- return true;
- }
- private boolean writeLogs(BufferedWriter w) {
- Server s = Bukkit.getServer();
- try {
- writeLine(w, "Server Version - " + s.getVersion());
- writeLine(w, "Bukkit Version - " + s.getBukkitVersion());
- writeLine(w, "Bungee - " + SpigotConfig.bungee);
- writeLine(w, "Offline - " + !s.getOnlineMode());
- writeLine(w, "Java Version - " + System.getProperty("java.version"));
- writeLine(w, "Operating System - " + System.getProperty("os.name"));
- writeLine(w, "OS Version - " + System.getProperty("os.version"));
- w.newLine();
- for (Plugin plugin : Bukkit.getPluginManager().getPlugins()) {
- writeLine(w, plugin.getName() + " by " + plugin.getDescription().getAuthors().toString() + " Version: " +
- plugin.getDescription().getVersion() + " - " + (plugin.isEnabled() ? " Enabled" : "Disabled"));
- }
- w.newLine();
- w.newLine();
- writeLine(w, ChatItemDisplay.getInstance().getConfig().saveToString());
- w.newLine();
- writeLine(w, "Displays:");
- ChatItemDisplay.getInstance().getDisplayedManager().forEach(display -> {
- try {
- writeLine(w, StringEscapeUtils.unescapeJava(display.serialize()));
- } catch (IOException e) {
- e.printStackTrace();
- }
- });
- } catch (IOException e) {
- e.printStackTrace();
- return false;
- }
- return true;
- }
- private void writeLine(BufferedWriter w, String s) throws IOException {
- w.write(s);
- w.newLine();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment