From bd9328d4528d353f026b2055539198b456f0015a Mon Sep 17 00:00:00 2001 From: Badbird5907 <50347938+Badbird5907@users.noreply.github.com> Date: Sun, 6 Nov 2022 14:52:35 -0500 Subject: [PATCH 1/4] add version checking, update discord URL, and add a message when you don't have perms --- .github/ISSUE_TEMPLATE/config.yml | 2 +- README.md | 2 +- .../net/nuggetmc/tplus/TerminatorPlus.java | 26 ++++++++++ .../tplus/command/CommandInstance.java | 1 + .../tplus/command/commands/MainCommand.java | 2 +- .../net/nuggetmc/tplus/utils/Hastebin.java | 52 +++++++++++++++++++ src/main/resources/plugin.yml | 2 +- 7 files changed, 83 insertions(+), 4 deletions(-) create mode 100644 TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/Hastebin.java diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 9fa595d..f4fdeaf 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,7 +1,7 @@ blank_issues_enabled: false contact_links: - name: Community Support - url: https://discord.gg/horsenuggets + url: https://discord.gg/vZVSf2D6mz about: Please ask and answer questions here. - name: Project Channel url: https://youtube.com/HorseNuggets diff --git a/README.md b/README.md index 350663e..f370ae7 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ### Download -Releases are currently available on our Discord server, which can be found [here](https://discord.gg/horsenuggets). +Releases are currently available on our Discord server, which can be found [here](https://discord.gg/vZVSf2D6mz). ### Machine Learning diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java index b217a5e..cb866db 100644 --- a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java +++ b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java @@ -4,6 +4,7 @@ import net.nuggetmc.tplus.api.TerminatorPlusAPI; import net.nuggetmc.tplus.bot.BotManagerImpl; import net.nuggetmc.tplus.bridge.InternalBridgeImpl; import net.nuggetmc.tplus.command.CommandHandler; +import org.bukkit.Bukkit; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; @@ -11,9 +12,13 @@ import java.util.Arrays; public class TerminatorPlus extends JavaPlugin { + public static final String REQUIRED_VERSION = "1.19.2"; + private static TerminatorPlus instance; private static String version; + private static boolean correctVersion; + private BotManagerImpl manager; private CommandHandler handler; @@ -38,6 +43,13 @@ public class TerminatorPlus extends JavaPlugin { instance = this; version = getDescription().getVersion(); + String version = Bukkit.getVersion(); + correctVersion = version.contains(REQUIRED_VERSION); + if (version.contains("MC:")) { // git-ABX-123 (MC: ABCD) + version = version.substring(version.indexOf("MC:") + 3, version.indexOf(")")).trim(); + } + getLogger().info("Running on version: " + version + ", required version: " + REQUIRED_VERSION + ", correct version: " + correctVersion); + // Create Instances this.manager = new BotManagerImpl(); this.handler = new CommandHandler(this); @@ -47,6 +59,16 @@ public class TerminatorPlus extends JavaPlugin { // Register event listeners this.registerEvents(manager); + + if (!correctVersion) { + for (int i = 0; i < 20; i++) { // Kids are stupid so we need to make sure they see this + getLogger().severe("----------------------------------------"); + getLogger().severe("TerminatorPlus is not compatible with your server version!"); + getLogger().severe("You are running on version: " + version + ", required version: " + REQUIRED_VERSION); + getLogger().severe("Either download the correct version of TerminatorPlus or update your server. (https://papermc.io/downloads)"); + getLogger().severe("----------------------------------------"); + } + } } @Override @@ -57,4 +79,8 @@ public class TerminatorPlus extends JavaPlugin { private void registerEvents(Listener... listeners) { Arrays.stream(listeners).forEach(li -> this.getServer().getPluginManager().registerEvents(li, this)); } + + public static boolean isCorrectVersion() { + return correctVersion; + } } diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java index afafebb..acfb546 100644 --- a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java +++ b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java @@ -47,6 +47,7 @@ public abstract class CommandInstance extends BukkitCommand { @Override public boolean execute(@Nonnull CommandSender sender, @Nonnull String label, @Nonnull String[] args) { if (!sender.hasPermission(MANAGE_PERMISSION)) { + sender.sendMessage(ChatColor.RED + "You do not have permission to use this command. (Check if you are OP.)"); return false; } diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java index 571ef79..d62eecd 100644 --- a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java +++ b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java @@ -46,7 +46,7 @@ public class MainCommand extends CommandInstance { message.event((ClickEvent) null); message.event((HoverEvent) null); message.append(ChatColor.BLUE + "Discord"); - message.event(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://discord.gg/horsenuggets")); + message.event(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://discord.gg/vZVSf2D6mz")); message.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text("Click to visit HorseNuggets' " + ChatColor.BLUE + "Discord" + ChatColor.RESET + "!"))); message.append("\n"); message.event((ClickEvent) null); diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/Hastebin.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/Hastebin.java new file mode 100644 index 0000000..a61ce76 --- /dev/null +++ b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/Hastebin.java @@ -0,0 +1,52 @@ +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; + } + +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0804d01..e650e36 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: TerminatorPlus main: net.nuggetmc.tplus.TerminatorPlus version: ${version} -api-version: 1.16 +api-version: 1.16 # Set to 1.16 so the plugin loads, and we can tell the user that it may not be compatible with their version, because people can't scroll up. author: HorseNuggets permissions: From dbb7afc5b7974fab12e251b952cf272f78f658b6 Mon Sep 17 00:00:00 2001 From: Badbird5907 <50347938+Badbird5907@users.noreply.github.com> Date: Sun, 6 Nov 2022 15:14:44 -0500 Subject: [PATCH 2/4] Add mc logs & version notifications. --- .../net/nuggetmc/tplus/TerminatorPlus.java | 6 ++ .../tplus/command/CommandInstance.java | 8 ++- .../tplus/command/commands/MainCommand.java | 20 +++++++ .../net/nuggetmc/tplus/utils/Hastebin.java | 52 ---------------- .../java/net/nuggetmc/tplus/utils/MCLogs.java | 60 +++++++++++++++++++ 5 files changed, 93 insertions(+), 53 deletions(-) delete mode 100644 TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/Hastebin.java create mode 100644 TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/MCLogs.java diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java index cb866db..292b456 100644 --- a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java +++ b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/TerminatorPlus.java @@ -16,6 +16,7 @@ public class TerminatorPlus extends JavaPlugin { private static TerminatorPlus instance; private static String version; + private static String mcVersion; private static boolean correctVersion; @@ -48,6 +49,7 @@ public class TerminatorPlus extends JavaPlugin { if (version.contains("MC:")) { // git-ABX-123 (MC: ABCD) 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); // Create Instances @@ -83,4 +85,8 @@ public class TerminatorPlus extends JavaPlugin { public static boolean isCorrectVersion() { return correctVersion; } + + public static String getMcVersion() { + return mcVersion; + } } diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java index acfb546..0748eb1 100644 --- a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java +++ b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/CommandInstance.java @@ -1,6 +1,6 @@ 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.command.annotation.Arg; 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.NonPlayerException; import org.apache.commons.lang.StringUtils; +import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.command.defaults.BukkitCommand; 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.)"); 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; diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java index d62eecd..9f4e71f 100644 --- a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java +++ b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/command/commands/MainCommand.java @@ -10,9 +10,12 @@ import net.nuggetmc.tplus.api.utils.ChatUtils; import net.nuggetmc.tplus.command.CommandHandler; import net.nuggetmc.tplus.command.CommandInstance; import net.nuggetmc.tplus.command.annotation.Command; +import net.nuggetmc.tplus.utils.MCLogs; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; +import java.io.IOException; + public class MainCommand extends CommandInstance { private BaseComponent[] rootInfo; @@ -29,6 +32,23 @@ public class MainCommand extends CommandInstance { 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() { ComponentBuilder message = new ComponentBuilder(); diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/Hastebin.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/Hastebin.java deleted file mode 100644 index a61ce76..0000000 --- a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/Hastebin.java +++ /dev/null @@ -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; - } - -} diff --git a/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/MCLogs.java b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/MCLogs.java new file mode 100644 index 0000000..68ed3f5 --- /dev/null +++ b/TerminatorPlus-Plugin/src/main/java/net/nuggetmc/tplus/utils/MCLogs.java @@ -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(); + } +} From 13d6fef5dabbf05dcb55ebe7f426e5638fec3d2b Mon Sep 17 00:00:00 2001 From: Badbird5907 <50347938+Badbird5907@users.noreply.github.com> Date: Sun, 6 Nov 2022 15:16:12 -0500 Subject: [PATCH 3/4] update version --- TerminatorPlus-API/build.gradle.kts | 2 +- TerminatorPlus-Plugin/build.gradle.kts | 2 +- build.gradle.kts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/TerminatorPlus-API/build.gradle.kts b/TerminatorPlus-API/build.gradle.kts index e5a88aa..10cec3d 100644 --- a/TerminatorPlus-API/build.gradle.kts +++ b/TerminatorPlus-API/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } group = "net.nuggetmc" -version = "3.3-BETA" +version = "3.4-BETA" repositories { mavenCentral() diff --git a/TerminatorPlus-Plugin/build.gradle.kts b/TerminatorPlus-Plugin/build.gradle.kts index f83ad74..79a45d0 100644 --- a/TerminatorPlus-Plugin/build.gradle.kts +++ b/TerminatorPlus-Plugin/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "net.nuggetmc" -version = "3.3-BETA" +version = "3.4-BETA" description = "TerminatorPlus" java { diff --git a/build.gradle.kts b/build.gradle.kts index 8bdd411..0e0d7a4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } group = "net.nuggetmc" -version = "3.3-BETA" +version = "3.4-BETA" val jarName = "TerminatorPlus-" + version; From 99a784fc35b9c0fad74cfdccd2ba0b3216193dbf Mon Sep 17 00:00:00 2001 From: Badbird5907 <50347938+Badbird5907@users.noreply.github.com> Date: Sun, 6 Nov 2022 15:19:03 -0500 Subject: [PATCH 4/4] Actually set version to 3.3.1-BETA --- TerminatorPlus-API/build.gradle.kts | 2 +- TerminatorPlus-Plugin/build.gradle.kts | 2 +- build.gradle.kts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/TerminatorPlus-API/build.gradle.kts b/TerminatorPlus-API/build.gradle.kts index 10cec3d..6e3eb1d 100644 --- a/TerminatorPlus-API/build.gradle.kts +++ b/TerminatorPlus-API/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } group = "net.nuggetmc" -version = "3.4-BETA" +version = "3.3.1-BETA" repositories { mavenCentral() diff --git a/TerminatorPlus-Plugin/build.gradle.kts b/TerminatorPlus-Plugin/build.gradle.kts index 79a45d0..c30389a 100644 --- a/TerminatorPlus-Plugin/build.gradle.kts +++ b/TerminatorPlus-Plugin/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "net.nuggetmc" -version = "3.4-BETA" +version = "3.3.1-BETA" description = "TerminatorPlus" java { diff --git a/build.gradle.kts b/build.gradle.kts index 0e0d7a4..f3fb69c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ plugins { } group = "net.nuggetmc" -version = "3.4-BETA" +version = "3.3.1-BETA" val jarName = "TerminatorPlus-" + version;