Add mc logs & version notifications.
This commit is contained in:
@@ -16,6 +16,7 @@ public class TerminatorPlus extends JavaPlugin {
|
|||||||
|
|
||||||
private static TerminatorPlus instance;
|
private static TerminatorPlus instance;
|
||||||
private static String version;
|
private static String version;
|
||||||
|
private static String mcVersion;
|
||||||
|
|
||||||
private static boolean correctVersion;
|
private static boolean correctVersion;
|
||||||
|
|
||||||
@@ -48,6 +49,7 @@ public class TerminatorPlus extends JavaPlugin {
|
|||||||
if (version.contains("MC:")) { // git-ABX-123 (MC: ABCD)
|
if (version.contains("MC:")) { // git-ABX-123 (MC: ABCD)
|
||||||
version = version.substring(version.indexOf("MC:") + 3, version.indexOf(")")).trim();
|
version = version.substring(version.indexOf("MC:") + 3, version.indexOf(")")).trim();
|
||||||
}
|
}
|
||||||
|
mcVersion = version;
|
||||||
getLogger().info("Running on version: " + version + ", required version: " + REQUIRED_VERSION + ", correct version: " + correctVersion);
|
getLogger().info("Running on version: " + version + ", required version: " + REQUIRED_VERSION + ", correct version: " + correctVersion);
|
||||||
|
|
||||||
// Create Instances
|
// Create Instances
|
||||||
@@ -83,4 +85,8 @@ public class TerminatorPlus extends JavaPlugin {
|
|||||||
public static boolean isCorrectVersion() {
|
public static boolean isCorrectVersion() {
|
||||||
return correctVersion;
|
return correctVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getMcVersion() {
|
||||||
|
return mcVersion;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
package net.nuggetmc.tplus.command;
|
package net.nuggetmc.tplus.command;
|
||||||
|
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.nuggetmc.tplus.TerminatorPlus;
|
||||||
import net.nuggetmc.tplus.api.utils.ChatUtils;
|
import net.nuggetmc.tplus.api.utils.ChatUtils;
|
||||||
import net.nuggetmc.tplus.command.annotation.Arg;
|
import net.nuggetmc.tplus.command.annotation.Arg;
|
||||||
import net.nuggetmc.tplus.command.annotation.OptArg;
|
import net.nuggetmc.tplus.command.annotation.OptArg;
|
||||||
@@ -9,6 +9,7 @@ import net.nuggetmc.tplus.command.exception.ArgCountException;
|
|||||||
import net.nuggetmc.tplus.command.exception.ArgParseException;
|
import net.nuggetmc.tplus.command.exception.ArgParseException;
|
||||||
import net.nuggetmc.tplus.command.exception.NonPlayerException;
|
import net.nuggetmc.tplus.command.exception.NonPlayerException;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.command.defaults.BukkitCommand;
|
import org.bukkit.command.defaults.BukkitCommand;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@@ -50,6 +51,11 @@ public abstract class CommandInstance extends BukkitCommand {
|
|||||||
sender.sendMessage(ChatColor.RED + "You do not have permission to use this command. (Check if you are OP.)");
|
sender.sendMessage(ChatColor.RED + "You do not have permission to use this command. (Check if you are OP.)");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!TerminatorPlus.isCorrectVersion()) {
|
||||||
|
sender.sendMessage(ChatColor.RED + "You are not running the correct server version of Minecraft!");
|
||||||
|
sender.sendMessage(ChatColor.RED + "You are using MC server version " + TerminatorPlus.getMcVersion() + " but this plugin requires " + TerminatorPlus.REQUIRED_VERSION);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
CommandMethod method;
|
CommandMethod method;
|
||||||
|
|
||||||
|
|||||||
@@ -10,9 +10,12 @@ import net.nuggetmc.tplus.api.utils.ChatUtils;
|
|||||||
import net.nuggetmc.tplus.command.CommandHandler;
|
import net.nuggetmc.tplus.command.CommandHandler;
|
||||||
import net.nuggetmc.tplus.command.CommandInstance;
|
import net.nuggetmc.tplus.command.CommandInstance;
|
||||||
import net.nuggetmc.tplus.command.annotation.Command;
|
import net.nuggetmc.tplus.command.annotation.Command;
|
||||||
|
import net.nuggetmc.tplus.utils.MCLogs;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
public class MainCommand extends CommandInstance {
|
public class MainCommand extends CommandInstance {
|
||||||
|
|
||||||
private BaseComponent[] rootInfo;
|
private BaseComponent[] rootInfo;
|
||||||
@@ -29,6 +32,23 @@ public class MainCommand extends CommandInstance {
|
|||||||
|
|
||||||
sender.spigot().sendMessage(rootInfo);
|
sender.spigot().sendMessage(rootInfo);
|
||||||
}
|
}
|
||||||
|
@Command(
|
||||||
|
name = "debuginfo",
|
||||||
|
desc = "Upload debug info to mclo.gs"
|
||||||
|
)
|
||||||
|
public void debugInfo(CommandSender sender) {
|
||||||
|
sender.sendMessage(ChatColor.GREEN + "Uploading debug info to mclogs...");
|
||||||
|
String url = null;
|
||||||
|
try {
|
||||||
|
url = MCLogs.postInfo();
|
||||||
|
} catch (IOException e) {
|
||||||
|
String error = e.getMessage();
|
||||||
|
sender.sendMessage(ChatColor.RED + "Failed to upload debug info to mclogs: " + error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sender.sendMessage(ChatColor.GREEN + "Debug info uploaded to " + url);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void rootInfoSetup() {
|
private void rootInfoSetup() {
|
||||||
ComponentBuilder message = new ComponentBuilder();
|
ComponentBuilder message = new ComponentBuilder();
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
package net.nuggetmc.tplus.utils;
|
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.DataOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
|
|
||||||
import javax.net.ssl.HttpsURLConnection;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Used for debug logs.
|
|
||||||
* https://github.com/kaimu-kun/hastebin.java/blob/master/src/me/kaimu/hastebin/Hastebin.java
|
|
||||||
*/
|
|
||||||
public class Hastebin {
|
|
||||||
public String post(String text, boolean raw) throws IOException {
|
|
||||||
byte[] postData = text.getBytes(StandardCharsets.UTF_8);
|
|
||||||
int postDataLength = postData.length;
|
|
||||||
|
|
||||||
String requestURL = "https://hastebin.com/documents";
|
|
||||||
URL url = new URL(requestURL);
|
|
||||||
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
|
|
||||||
conn.setDoOutput(true);
|
|
||||||
conn.setInstanceFollowRedirects(false);
|
|
||||||
conn.setRequestMethod("POST");
|
|
||||||
conn.setRequestProperty("User-Agent", "Hastebin Java Api");
|
|
||||||
conn.setRequestProperty("Content-Length", Integer.toString(postDataLength));
|
|
||||||
conn.setUseCaches(false);
|
|
||||||
|
|
||||||
String response = null;
|
|
||||||
DataOutputStream wr;
|
|
||||||
try {
|
|
||||||
wr = new DataOutputStream(conn.getOutputStream());
|
|
||||||
wr.write(postData);
|
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
|
|
||||||
response = reader.readLine();
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (response.contains("\"key\"")) {
|
|
||||||
response = response.substring(response.indexOf(":") + 2, response.length() - 2);
|
|
||||||
|
|
||||||
String postURL = raw ? "https://hastebin.com/raw/" : "https://hastebin.com/";
|
|
||||||
response = postURL + response;
|
|
||||||
}
|
|
||||||
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package net.nuggetmc.tplus.utils;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
import net.nuggetmc.tplus.TerminatorPlus;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for debug logs.
|
||||||
|
*/
|
||||||
|
public class MCLogs {
|
||||||
|
|
||||||
|
private static final String FORMAT =
|
||||||
|
"""
|
||||||
|
====== TERMINATOR PLUS DEBUG INFO ======
|
||||||
|
Plugin Version: %s
|
||||||
|
Server Version: %s
|
||||||
|
Server Software: %s
|
||||||
|
Server Plugins: %s
|
||||||
|
Server TPS: %s
|
||||||
|
Server Memory: %s
|
||||||
|
|
||||||
|
Correct Version: %s
|
||||||
|
Required Version: %s
|
||||||
|
====== TERMINATOR PLUS DEBUG INFO ======
|
||||||
|
""";
|
||||||
|
|
||||||
|
public static String postInfo() throws IOException {
|
||||||
|
String serverVersion = Bukkit.getVersion();
|
||||||
|
String pluginVersion = TerminatorPlus.getVersion();
|
||||||
|
String serverSoftware = Bukkit.getName();
|
||||||
|
String serverPlugins = Arrays.stream(Bukkit.getPluginManager().getPlugins()).map(plugin -> plugin.getName() + " v" + plugin.getDescription().getVersion()).reduce((s, s2) -> s + ", " + s2).orElse("No plugins");
|
||||||
|
String serverTPS = Arrays.stream(Bukkit.getTPS()).mapToObj(tps -> String.format("%.2f", tps)).reduce((s, s2) -> s + ", " + s2).orElse("No TPS");
|
||||||
|
String serverMemory = String.format("%.2f", (double) (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()) / 1024 / 1024) + "MB";
|
||||||
|
|
||||||
|
String info = String.format(FORMAT, pluginVersion, serverVersion, serverSoftware, serverPlugins, serverTPS, serverMemory, TerminatorPlus.isCorrectVersion(), TerminatorPlus.REQUIRED_VERSION);
|
||||||
|
return pasteText(info);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String pasteText(String text) throws IOException {
|
||||||
|
URL url = new URL("https://api.mclo.gs/1/log"); // application/x-www-form-urlencoded
|
||||||
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
connection.setRequestMethod("POST");
|
||||||
|
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
|
||||||
|
connection.setDoOutput(true);
|
||||||
|
|
||||||
|
try (OutputStream os = connection.getOutputStream()) {
|
||||||
|
os.write(("content=" + text).getBytes());
|
||||||
|
}
|
||||||
|
|
||||||
|
String response = new BufferedReader(new InputStreamReader(connection.getInputStream())).readLine();
|
||||||
|
JsonObject json = JsonParser.parseString(response).getAsJsonObject();
|
||||||
|
return json.get("url").getAsString();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user