diff --git a/pom.xml b/pom.xml index ac64cf3..880100a 100644 --- a/pom.xml +++ b/pom.xml @@ -34,6 +34,11 @@ 1.16.1-R0.1-SNAPSHOT provided + + xyz.etztech + javacord + 0.0.2 + commons-lang commons-lang @@ -47,6 +52,10 @@ spigotmc-repo https://hub.spigotmc.org/nexus/content/groups/public/ + + etztech-repo + http://repo.etztech.xyz/ + mvn-repo https://mvnrepository.com/artifact/ diff --git a/src/main/java/xyz/etztech/minealert/Color.java b/src/main/java/xyz/etztech/minealert/Color.java index f39b94e..3e77aad 100644 --- a/src/main/java/xyz/etztech/minealert/Color.java +++ b/src/main/java/xyz/etztech/minealert/Color.java @@ -4,7 +4,6 @@ import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; -import org.bukkit.entity.Player; public enum Color { DEFAULT("#AAAAAA"), diff --git a/src/main/java/xyz/etztech/minealert/MineAlert.java b/src/main/java/xyz/etztech/minealert/MineAlert.java index 8ac3820..935dd8b 100644 --- a/src/main/java/xyz/etztech/minealert/MineAlert.java +++ b/src/main/java/xyz/etztech/minealert/MineAlert.java @@ -5,6 +5,11 @@ import org.bukkit.plugin.java.JavaPlugin; import xyz.etztech.minealert.commands.MainCommand; import xyz.etztech.minealert.listeners.BlockBreakListener; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.nio.charset.StandardCharsets; import java.util.logging.Logger; public class MineAlert extends JavaPlugin { @@ -62,5 +67,23 @@ public class MineAlert extends JavaPlugin { } return def; } + + public static void sendWebhook(String webhook, String embed) throws Exception { + URL url = new URL(webhook); + URLConnection con = url.openConnection(); + HttpURLConnection http = (HttpURLConnection) con; + http.setRequestMethod("POST"); + http.setDoOutput(true); + + byte[] out = embed.getBytes(StandardCharsets.UTF_8); + int length = out.length; + http.setFixedLengthStreamingMode(length); + http.setRequestProperty("Content-Type", "application/json; utf-8"); + http.setRequestProperty("User-Agent", "MineAlert Agent"); + + try (OutputStream os = http.getOutputStream()) { + os.write(out, 0, out.length); + } + } } diff --git a/src/main/java/xyz/etztech/minealert/Webhook.java b/src/main/java/xyz/etztech/minealert/Webhook.java deleted file mode 100644 index f0fbb6e..0000000 --- a/src/main/java/xyz/etztech/minealert/Webhook.java +++ /dev/null @@ -1,28 +0,0 @@ -package xyz.etztech.minealert; - -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLConnection; -import java.nio.charset.StandardCharsets; - -public class Webhook { - - public static void send(String webhook, String embed) throws Exception { - URL url = new URL(webhook); - URLConnection con = url.openConnection(); - HttpURLConnection http = (HttpURLConnection) con; - http.setRequestMethod("POST"); - http.setDoOutput(true); - - byte[] out = embed.getBytes(StandardCharsets.UTF_8); - int length = out.length; - http.setFixedLengthStreamingMode(length); - http.setRequestProperty("Content-Type", "application/json; utf-8"); - http.setRequestProperty("User-Agent", "MineAlert Agent"); - - try (OutputStream os = http.getOutputStream()) { - os.write(out, 0, out.length); - } - } -} diff --git a/src/main/java/xyz/etztech/minealert/commands/MainCommand.java b/src/main/java/xyz/etztech/minealert/commands/MainCommand.java index b677fa6..e442ebc 100644 --- a/src/main/java/xyz/etztech/minealert/commands/MainCommand.java +++ b/src/main/java/xyz/etztech/minealert/commands/MainCommand.java @@ -1,17 +1,17 @@ package xyz.etztech.minealert.commands; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.ComponentBuilder; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import xyz.etztech.embed.Author; +import xyz.etztech.embed.Embed; +import xyz.etztech.embed.Webhook; import xyz.etztech.minealert.Color; import xyz.etztech.minealert.Lang; import xyz.etztech.minealert.MineAlert; -import xyz.etztech.minealert.Webhook; public class MainCommand implements CommandExecutor { @@ -75,7 +75,7 @@ public class MainCommand implements CommandExecutor { this.plugin.getServer().getScheduler().runTaskAsynchronously(this.plugin, () -> { try { - Webhook.send(webhook, embed()); + MineAlert.sendWebhook(webhook, embed()); Color.INFO.sms(commandSender, "Webhook sent!"); } catch (Exception e) { Lang.WEBHOOK_FAILED.sms(commandSender); @@ -85,21 +85,11 @@ public class MainCommand implements CommandExecutor { } private String embed() { - JsonObject json = new JsonObject(); - JsonArray embeds = new JsonArray(); + Embed embed = new Embed() + .color(Color.PRIMARY.getInt()) + .description("Test Message") + .author(new Author("Console", "", "https://minotar.net/helm/Notch/100.png", "")); - JsonObject embed = new JsonObject(); - embed.addProperty("color", Color.PRIMARY.getInt()); - embed.addProperty("description", "Test Message"); - - JsonObject author = new JsonObject(); - author.addProperty("name", "Console"); - author.addProperty("icon_url", "https://minotar.net/helm/Notch/100.png"); - embed.add("author", author); - - embeds.add(embed); - json.add("embeds", embeds); - - return json.toString(); + return new Webhook("", embed).toString(); } } diff --git a/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java b/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java index b142be7..6dfa64b 100644 --- a/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java +++ b/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java @@ -1,27 +1,22 @@ package xyz.etztech.minealert.listeners; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.ComponentBuilder; import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; +import xyz.etztech.embed.Author; +import xyz.etztech.embed.Embed; +import xyz.etztech.embed.Webhook; import xyz.etztech.minealert.Color; import xyz.etztech.minealert.Lang; import xyz.etztech.minealert.MineAlert; -import xyz.etztech.minealert.Webhook; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLConnection; -import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; import java.util.*; import java.util.concurrent.ConcurrentLinkedQueue; @@ -169,7 +164,7 @@ public class BlockBreakListener implements Listener { String embed = embed(event, message, ping, hexColor); this.plugin.getServer().getScheduler().runTaskAsynchronously(this.plugin, () -> { try { - Webhook.send(webhook, embed); + MineAlert.sendWebhook(webhook, embed); } catch (Exception e) { this.plugin.log(Lang.WEBHOOK_FAILED.getMessage()); } @@ -178,25 +173,15 @@ public class BlockBreakListener implements Listener { } private String embed(BlockEvent event, String message, boolean ping, String hexColor) { - JsonObject json = new JsonObject(); - if (ping) { - json.addProperty("content", "@here"); - } - JsonArray embeds = new JsonArray(); - - JsonObject embed = new JsonObject(); - embed.addProperty("color", Color.hexToInt(hexColor)); - embed.addProperty("description", message); - - JsonObject author = new JsonObject(); - author.addProperty("name", event.getPlayer().getName()); - author.addProperty("icon_url", String.format("https://minotar.net/helm/%s/100.png", event.getPlayer().getName())); - embed.add("author", author); - - embeds.add(embed); - json.add("embeds", embeds); - - return json.toString(); + Embed embed = new Embed() + .color(Color.hexToInt(hexColor)) + .description(message) + .timestamp(OffsetDateTime.now()) + .author(new Author(event.getPlayer().getName(), + "", + String.format("https://minotar.net/helm/%s/100.png", event.getPlayer().getName()), + "")); + return new Webhook(ping ? "@here": "", embed).toString(); } }