From 3494a28ac5ba7229c0d092ce1fcdccfa67274ca0 Mon Sep 17 00:00:00 2001 From: Etzelia Date: Wed, 29 Jul 2020 14:34:28 -0500 Subject: [PATCH] Polish and bugfixes Signed-off-by: Etzelia --- .../java/xyz/etztech/minealert/Color.java | 40 +++++++++++++-- src/main/java/xyz/etztech/minealert/Lang.java | 18 +++---- .../java/xyz/etztech/minealert/MineAlert.java | 6 +++ .../java/xyz/etztech/minealert/Webhook.java | 9 ++-- .../minealert/commands/MainCommand.java | 50 +++++++++++++++++-- .../listeners/BlockBreakListener.java | 7 ++- 6 files changed, 106 insertions(+), 24 deletions(-) diff --git a/src/main/java/xyz/etztech/minealert/Color.java b/src/main/java/xyz/etztech/minealert/Color.java index f901119..d3a159b 100644 --- a/src/main/java/xyz/etztech/minealert/Color.java +++ b/src/main/java/xyz/etztech/minealert/Color.java @@ -1,12 +1,42 @@ package xyz.etztech.minealert; 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 class Color { - public static ChatColor DEFAULT = ChatColor.GRAY; - public static ChatColor ERROR = ChatColor.of("#f14668"); - public static ChatColor INFO = ChatColor.of("#3298dc"); - public static ChatColor PRIMARY = ChatColor.of("#3273dc"); +public enum Color { + DEFAULT("#AAAAAA"), + ERROR("#F14668"), + INFO("#3298DC"), + PRIMARY("#3273DC"); + + private final String hex; + private final ChatColor chatColor; + + Color(String hex) { + this.hex = hex; + this.chatColor = ChatColor.of(hex); + } + + public String getHex() { + return hex; + } + + public ChatColor getChatColor() { + return chatColor; + } + + public void sms(CommandSender commandSender, String message) { + if (commandSender instanceof ConsoleCommandSender) { + MineAlert.getInstance().log(message); + return; + } + TextComponent text = new TextComponent(message); + text.setColor(this.chatColor); + commandSender.spigot().sendMessage(text); + } public static int hexToInt(String hex) { if (hex.startsWith("#")) { diff --git a/src/main/java/xyz/etztech/minealert/Lang.java b/src/main/java/xyz/etztech/minealert/Lang.java index 71f6cc4..5cb8ebc 100644 --- a/src/main/java/xyz/etztech/minealert/Lang.java +++ b/src/main/java/xyz/etztech/minealert/Lang.java @@ -1,8 +1,6 @@ package xyz.etztech.minealert; -import net.md_5.bungee.api.ChatColor; -import net.md_5.bungee.api.chat.TextComponent; import org.apache.commons.lang.WordUtils; import org.bukkit.Material; import org.bukkit.command.CommandSender; @@ -11,12 +9,14 @@ public enum Lang { NO_PERMISSION("You don't have permission to do that.", Color.ERROR), UNKNOWN_COMMAND("This command wasn't recognized.", Color.ERROR), PLUGIN_RELOADED("MineAlert reloaded.", Color.INFO), - ALERT("%s has found %d %s veins.", Color.DEFAULT); + ALERT("%s has found %d %s veins.", Color.DEFAULT), + NOT_ENOUGH_ARGS("%s requires %d arguments.", Color.ERROR), + WEBHOOK_FAILED("Could not send webhook.", Color.ERROR); private final String message; - private final ChatColor color; + private final Color color; - Lang(String message, ChatColor color) { + Lang(String message, Color color) { this.message = message; this.color = color; } @@ -25,14 +25,12 @@ public enum Lang { return this.message; } - public ChatColor getColor() { + public Color getColor() { return this.color; } - public void sms(CommandSender sender) { - TextComponent text = new TextComponent(this.message); - text.setColor(this.color); - sender.spigot().sendMessage(text); + public void sms(CommandSender sender, Object ...args) { + this.color.sms(sender, String.format(this.message, args)); } public static String getMaterialName(Material material) { diff --git a/src/main/java/xyz/etztech/minealert/MineAlert.java b/src/main/java/xyz/etztech/minealert/MineAlert.java index fd47f97..8ac3820 100644 --- a/src/main/java/xyz/etztech/minealert/MineAlert.java +++ b/src/main/java/xyz/etztech/minealert/MineAlert.java @@ -9,9 +9,11 @@ import java.util.logging.Logger; public class MineAlert extends JavaPlugin { + private static MineAlert instance; private final Logger log = Logger.getLogger( "Minecraft" ); public void onEnable() { + instance = this; saveDefaultConfig(); reloadConfig(); @@ -25,6 +27,10 @@ public class MineAlert extends JavaPlugin { log.info( "[MineAlert]: " + message ); } + public static MineAlert getInstance() { + return instance; + } + /** * @param def The default if no paths resolve * @param path Config paths to check, from specific -> fallback diff --git a/src/main/java/xyz/etztech/minealert/Webhook.java b/src/main/java/xyz/etztech/minealert/Webhook.java index 5f36a1d..f0fbb6e 100644 --- a/src/main/java/xyz/etztech/minealert/Webhook.java +++ b/src/main/java/xyz/etztech/minealert/Webhook.java @@ -18,10 +18,11 @@ public class Webhook { byte[] out = embed.getBytes(StandardCharsets.UTF_8); int length = out.length; http.setFixedLengthStreamingMode(length); - http.setRequestProperty("Content-Type", "application/json; charset=UTF-8"); - http.connect(); + http.setRequestProperty("Content-Type", "application/json; utf-8"); + http.setRequestProperty("User-Agent", "MineAlert Agent"); - OutputStream os = http.getOutputStream(); - os.write(out); + 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 866fb5a..06de61d 100644 --- a/src/main/java/xyz/etztech/minealert/commands/MainCommand.java +++ b/src/main/java/xyz/etztech/minealert/commands/MainCommand.java @@ -1,5 +1,7 @@ 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; @@ -9,6 +11,7 @@ import org.bukkit.command.CommandSender; 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 { @@ -36,6 +39,9 @@ public class MainCommand implements CommandExecutor { case "reload": reload(commandSender); break; + case "webhook": + webhook(commandSender); + break; default: Lang.UNKNOWN_COMMAND.sms(commandSender); break; @@ -47,9 +53,10 @@ public class MainCommand implements CommandExecutor { private void help(CommandSender commandSender) { String version = Bukkit.getPluginManager().getPlugin("MineAlert").getDescription().getVersion(); BaseComponent[] message = new ComponentBuilder() - .append(String.format("===== MineAlert v%s =====", version)).color(Color.PRIMARY) - .append("\n/minealert help - Show this message").color(Color.INFO) - .append("\n/minealert reload - Reload the config").color(Color.INFO) + .append(String.format("===== MineAlert v%s =====", version)).color(Color.PRIMARY.getChatColor()) + .append("\n/minealert help - Show this message").color(Color.INFO.getChatColor()) + .append("\n/minealert reload - Reload the config").color(Color.INFO.getChatColor()) + .append("\n/minealert webhook - Test the global webhook").color(Color.INFO.getChatColor()) .create(); commandSender.spigot().sendMessage(message); } @@ -58,4 +65,41 @@ public class MainCommand implements CommandExecutor { this.plugin.reloadConfig(); Lang.PLUGIN_RELOADED.sms(commandSender); } + + private void webhook(CommandSender commandSender) { + String webhook = this.plugin.getConfig().getString("webhook", ""); + if ("".equals(webhook)) { + Color.ERROR.sms(commandSender, "Global webhook cannot be blank to test."); + return; + } + + this.plugin.getServer().getScheduler().runTaskAsynchronously(this.plugin, () -> { + try { + Webhook.send(webhook, embed()); + Color.INFO.sms(commandSender, "Webhook sent!"); + } catch (Exception e) { + Lang.WEBHOOK_FAILED.sms(commandSender); + } + }); + + } + + private String embed() { + JsonObject json = new JsonObject(); + JsonArray embeds = new JsonArray(); + + JsonObject embed = new JsonObject(); + embed.addProperty("color", Color.hexToInt("#3273dc")); + 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(); + } } diff --git a/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java b/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java index fb7f679..105dfb3 100644 --- a/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java +++ b/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java @@ -47,6 +47,7 @@ public class BlockBreakListener implements Listener { for (int x = -radius; x < radius; x++) { for (int y = -radius; y < radius; y++) { for (int z = -radius; z < radius; z++) { + if (x == 0 && y == 0 && z == 0) continue; queue.add(new BlockEvent(event.getPlayer(), event.getBlock().getRelative(x, y, z).getType(), false)); } } @@ -60,7 +61,9 @@ public class BlockBreakListener implements Listener { for (String s: this.plugin.getConfig().getConfigurationSection("ore.blocks").getKeys(false)) { if (Lang.getMaterialKey(event.getMaterial()).equals(s)) { addStrike(event); - check(event); + if (event.isParent()) { + check(event); + } break; } } @@ -168,7 +171,7 @@ public class BlockBreakListener implements Listener { try { Webhook.send(webhook, embed); } catch (Exception e) { - this.plugin.log(String.format("Could not send webhook: %s", e.getMessage())); + this.plugin.log(Lang.WEBHOOK_FAILED.getMessage()); } }); }