diff --git a/pom.xml b/pom.xml
index 0eb1c94..b1b72eb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
xyz.etztech
MineAlert
- 0.0.1
+ 0.0.2
jar
diff --git a/src/main/java/xyz/etztech/minealert/MineAlert.java b/src/main/java/xyz/etztech/minealert/MineAlert.java
index 8ac3820..dd8d09c 100644
--- a/src/main/java/xyz/etztech/minealert/MineAlert.java
+++ b/src/main/java/xyz/etztech/minealert/MineAlert.java
@@ -3,7 +3,7 @@ package xyz.etztech.minealert;
import org.bukkit.plugin.java.JavaPlugin;
import xyz.etztech.minealert.commands.MainCommand;
-import xyz.etztech.minealert.listeners.BlockBreakListener;
+import xyz.etztech.minealert.listeners.OreAlertListener;
import java.util.logging.Logger;
@@ -19,7 +19,7 @@ public class MineAlert extends JavaPlugin {
if (isEnabled()) {
new MainCommand(this);
- new BlockBreakListener(this);
+ new OreAlertListener(this);
}
}
diff --git a/src/main/java/xyz/etztech/minealert/commands/MainCommand.java b/src/main/java/xyz/etztech/minealert/commands/MainCommand.java
index 33bf174..2df9b60 100644
--- a/src/main/java/xyz/etztech/minealert/commands/MainCommand.java
+++ b/src/main/java/xyz/etztech/minealert/commands/MainCommand.java
@@ -13,6 +13,7 @@ import xyz.etztech.embed.Embed;
import xyz.etztech.minealert.Color;
import xyz.etztech.minealert.Lang;
import xyz.etztech.minealert.MineAlert;
+import xyz.etztech.minealert.listeners.OreAlertListener;
public class MainCommand implements CommandExecutor {
@@ -43,6 +44,9 @@ public class MainCommand implements CommandExecutor {
case "webhook":
webhook(commandSender);
break;
+ case "status":
+ status(commandSender);
+ break;
default:
Lang.UNKNOWN_COMMAND.sms(commandSender);
break;
@@ -57,6 +61,7 @@ public class MainCommand implements CommandExecutor {
.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 status - Check the queue").color(Color.INFO.getChatColor())
.append("\n/minealert webhook - Test the global webhook").color(Color.INFO.getChatColor())
.create();
commandSender.spigot().sendMessage(message);
@@ -67,6 +72,19 @@ public class MainCommand implements CommandExecutor {
Lang.PLUGIN_RELOADED.sms(commandSender);
}
+ private void status(CommandSender commandSender) {
+ BaseComponent[] message = new ComponentBuilder()
+ .append("===== MineAlert Status =====").color(Color.PRIMARY.getChatColor())
+ .append("\nCache: ").color(Color.PRIMARY.getChatColor())
+ .append(String.format("%d", OreAlertListener.getCache().size())).color(Color.INFO.getChatColor())
+ .append("\nMap: ").color(Color.PRIMARY.getChatColor())
+ .append(String.format("%d", OreAlertListener.getMap().size())).color(Color.INFO.getChatColor())
+ .append("\nQueue: ").color(Color.PRIMARY.getChatColor())
+ .append(String.format("%d", OreAlertListener.getQueue().size())).color(Color.INFO.getChatColor())
+ .create();
+ commandSender.spigot().sendMessage(message);
+ }
+
private void webhook(CommandSender commandSender) {
String webhook = this.plugin.getConfig().getString("webhook", "");
if ("".equals(webhook)) {
@@ -86,6 +104,5 @@ public class MainCommand implements CommandExecutor {
Lang.WEBHOOK_FAILED.sms(commandSender);
}
});
-
}
}
diff --git a/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java b/src/main/java/xyz/etztech/minealert/listeners/OreAlertListener.java
similarity index 85%
rename from src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java
rename to src/main/java/xyz/etztech/minealert/listeners/OreAlertListener.java
index 3813ddc..6065fc8 100644
--- a/src/main/java/xyz/etztech/minealert/listeners/BlockBreakListener.java
+++ b/src/main/java/xyz/etztech/minealert/listeners/OreAlertListener.java
@@ -12,6 +12,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
+import org.bukkit.event.block.BlockPlaceEvent;
import xyz.etztech.Javacord;
import xyz.etztech.Webhook;
import xyz.etztech.embed.Author;
@@ -24,14 +25,14 @@ import java.time.OffsetDateTime;
import java.util.*;
import java.util.concurrent.ConcurrentLinkedQueue;
-public class BlockBreakListener implements Listener {
+public class OreAlertListener implements Listener {
private final MineAlert plugin;
- private final HashSet cache = new HashSet<>();
- private final Map> map = new HashMap<>();
- private final Queue queue = new ConcurrentLinkedQueue<>();
+ private static final HashSet cache = new HashSet<>();
+ private static final Map> map = new HashMap<>();
+ private static final Queue queue = new ConcurrentLinkedQueue<>();
- public BlockBreakListener(MineAlert plugin) {
+ public OreAlertListener(MineAlert plugin) {
this.plugin = plugin;
this.plugin.getServer().getPluginManager().registerEvents(this, plugin);
this.plugin.getServer().getScheduler().runTaskAsynchronously(this.plugin, this::task);
@@ -57,19 +58,32 @@ public class BlockBreakListener implements Listener {
}
}
+ @EventHandler
+ public void onBlockPlace(BlockPlaceEvent event) {
+ this.plugin.getServer().getScheduler().runTaskAsynchronously(this.plugin, () -> {
+ if (isMaterialTrcked(event.getBlock().getType())) cache.add(event.getBlock().getLocation());
+ });
+ }
+
+ private boolean isMaterialTrcked(Material material) {
+ for (String s: this.plugin.getConfig().getConfigurationSection("ore.blocks").getKeys(false)) {
+ if (Lang.getMaterialKey(material).equals(s)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private void task() {
while (this.plugin.isEnabled()) {
BlockEvent event = this.queue.poll();
if (event != null) {
if (cache.contains(event.getLocation())) continue;
cache.add(event.getLocation());
- for (String s: this.plugin.getConfig().getConfigurationSection("ore.blocks").getKeys(false)) {
- if (Lang.getMaterialKey(event.getMaterial()).equals(s)) {
- addStrike(event);
- if (event.isParent()) {
- check(event);
- }
- break;
+ if (isMaterialTrcked(event.getMaterial())) {
+ addStrike(event);
+ if (event.isParent()) {
+ check(event);
}
}
}
@@ -198,6 +212,18 @@ public class BlockBreakListener implements Listener {
});
}
}
+
+ public static HashSet getCache() {
+ return cache;
+ }
+
+ public static Map> getMap() {
+ return map;
+ }
+
+ public static Queue getQueue() {
+ return queue;
+ }
}
class BlockEvent {