diff --git a/pom.xml b/pom.xml
index 880100a..652c437 100644
--- a/pom.xml
+++ b/pom.xml
@@ -37,7 +37,7 @@
xyz.etztech
javacord
- 0.0.2
+ 0.1.0
commons-lang
diff --git a/src/main/java/xyz/etztech/minealert/MineAlert.java b/src/main/java/xyz/etztech/minealert/MineAlert.java
index 935dd8b..92fa7b1 100644
--- a/src/main/java/xyz/etztech/minealert/MineAlert.java
+++ b/src/main/java/xyz/etztech/minealert/MineAlert.java
@@ -2,6 +2,7 @@ package xyz.etztech.minealert;
import org.bukkit.plugin.java.JavaPlugin;
+import xyz.etztech.embed.Webhook;
import xyz.etztech.minealert.commands.MainCommand;
import xyz.etztech.minealert.listeners.BlockBreakListener;
@@ -68,14 +69,14 @@ public class MineAlert extends JavaPlugin {
return def;
}
- public static void sendWebhook(String webhook, String embed) throws Exception {
- URL url = new URL(webhook);
+ public static void sendWebhook(String webhookURL, Webhook webhook) throws Exception {
+ URL url = new URL(webhookURL);
URLConnection con = url.openConnection();
HttpURLConnection http = (HttpURLConnection) con;
http.setRequestMethod("POST");
http.setDoOutput(true);
- byte[] out = embed.getBytes(StandardCharsets.UTF_8);
+ byte[] out = webhook.toString().getBytes(StandardCharsets.UTF_8);
int length = out.length;
http.setFixedLengthStreamingMode(length);
http.setRequestProperty("Content-Type", "application/json; utf-8");
diff --git a/src/main/java/xyz/etztech/minealert/commands/MainCommand.java b/src/main/java/xyz/etztech/minealert/commands/MainCommand.java
index e442ebc..6080369 100644
--- a/src/main/java/xyz/etztech/minealert/commands/MainCommand.java
+++ b/src/main/java/xyz/etztech/minealert/commands/MainCommand.java
@@ -75,7 +75,11 @@ public class MainCommand implements CommandExecutor {
this.plugin.getServer().getScheduler().runTaskAsynchronously(this.plugin, () -> {
try {
- MineAlert.sendWebhook(webhook, embed());
+ Embed embed = new Embed()
+ .color(Color.PRIMARY.getInt())
+ .description("Test Message")
+ .author(new Author("Console", "", "https://minotar.net/helm/Notch/100.png", ""));
+ MineAlert.sendWebhook(webhook, new Webhook("", embed));
Color.INFO.sms(commandSender, "Webhook sent!");
} catch (Exception e) {
Lang.WEBHOOK_FAILED.sms(commandSender);
@@ -83,13 +87,4 @@ public class MainCommand implements CommandExecutor {
});
}
-
- private String embed() {
- Embed embed = new Embed()
- .color(Color.PRIMARY.getInt())
- .description("Test Message")
- .author(new Author("Console", "", "https://minotar.net/helm/Notch/100.png", ""));
-
- 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 4c62cd8..c6f46f9 100644
--- a/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java
+++ b/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java
@@ -2,6 +2,7 @@ package xyz.etztech.minealert.listeners;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
+import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.ComponentBuilder;
import org.bukkit.Bukkit;
import org.bukkit.Material;
@@ -144,10 +145,19 @@ public class BlockBreakListener implements Listener {
String.format("ore.blocks.%s.color", Lang.getMaterialKey(event.getMaterial())),
"ore.color"
);
- BaseComponent[] component = new ComponentBuilder()
- .append(message).color(ChatColor.of(hexColor))
- .create();
+ String usernameURL = this.plugin.getConfigStringFallback(
+ "",
+ String.format("ore.blocks.%s.url", Lang.getMaterialKey(event.getMaterial())),
+ "ore.url",
+ "url"
+ ).replaceAll("\\{username}", event.getPlayer().getName());
+ ComponentBuilder builder = new ComponentBuilder()
+ .append(message).color(ChatColor.of(hexColor));
+ if (!"".equals(usernameURL)) {
+ builder.event(new ClickEvent(ClickEvent.Action.OPEN_URL, usernameURL));
+ }
+ BaseComponent[] component = builder.create();
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.hasPermission("minealert.alert")) {
player.spigot().sendMessage(component);
@@ -162,28 +172,23 @@ public class BlockBreakListener implements Listener {
"webhook"
);
if (!"".equals(webhook)) {
- String embed = embed(event, message, ping, hexColor);
+ Embed embed = new Embed()
+ .color(Color.hexToInt(hexColor))
+ .description(message)
+ .timestamp(OffsetDateTime.now())
+ .author(new Author(Javacord.escapeFormat(event.getPlayer().getName()),
+ !"".equals(usernameURL) ? usernameURL : "",
+ String.format("https://minotar.net/helm/%s/100.png", event.getPlayer().getName()),
+ ""));
this.plugin.getServer().getScheduler().runTaskAsynchronously(this.plugin, () -> {
try {
- MineAlert.sendWebhook(webhook, embed);
+ MineAlert.sendWebhook(webhook, new Webhook(ping ? "@here" : "", embed));
} catch (Exception e) {
this.plugin.log(Lang.WEBHOOK_FAILED.getMessage());
}
});
}
}
-
- private String embed(BlockEvent event, String message, boolean ping, String hexColor) {
- Embed embed = new Embed()
- .color(Color.hexToInt(hexColor))
- .description(message)
- .timestamp(OffsetDateTime.now())
- .author(new Author(Javacord.escapeFormat(event.getPlayer().getName()),
- "",
- String.format("https://minotar.net/helm/%s/100.png", event.getPlayer().getName()),
- ""));
- return new Webhook(ping ? "@here": "", embed).toString();
- }
}
class BlockEvent {
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index e3d463f..9e28406 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,6 +1,9 @@
# Global Discord webhook
# This can be set as a global fallback
webhook: ''
+# The URL the message points to
+# Can use {username} as a placeholder for the player's username
+url: 'https://website.com/{username}'
# OreAlert
ore:
@@ -22,6 +25,8 @@ ore:
ping: 5
# Discord webhook
webhook: ''
+ # Override
+ url: ''
# Only blocks listed here will be monitored
# Each of the above notify settings can be overridden per-block if needed