diff --git a/src/main/java/party/cybsec/griefdetect/core/ChatAlertManager.java b/src/main/java/party/cybsec/griefdetect/core/ChatAlertManager.java index 5ddca0b..77512af 100644 --- a/src/main/java/party/cybsec/griefdetect/core/ChatAlertManager.java +++ b/src/main/java/party/cybsec/griefdetect/core/ChatAlertManager.java @@ -59,9 +59,8 @@ public class ChatAlertManager { } } - plugin.getLogger().info("Chat alert sent: " + event.getDetectionType() + " at " + - event.getWorld().getName() + ":" + event.getCenter().getBlockX() + "," + - event.getCenter().getBlockY() + "," + event.getCenter().getBlockZ()); + // Log the same formatted message to console + plugin.getLogger().info("Chat alert sent: " + message); } /** diff --git a/src/main/java/party/cybsec/griefdetect/core/PermissionManager.java b/src/main/java/party/cybsec/griefdetect/core/PermissionManager.java index e2c11c6..9afdfe9 100644 --- a/src/main/java/party/cybsec/griefdetect/core/PermissionManager.java +++ b/src/main/java/party/cybsec/griefdetect/core/PermissionManager.java @@ -34,12 +34,18 @@ public class PermissionManager { /** * Check if a player has a specific permission. * Uses caching for performance. + * OPs automatically have all permissions. * * @param player The player to check * @param permission The permission node to check * @return true if player has permission, false otherwise */ public boolean hasPermission(Player player, String permission) { + // OPs have all permissions + if (player.isOp()) { + return true; + } + UUID playerId = player.getUniqueId(); // Check cache first diff --git a/src/main/java/party/cybsec/griefdetect/core/WebhookManager.java b/src/main/java/party/cybsec/griefdetect/core/WebhookManager.java index cff303a..74bb30f 100644 --- a/src/main/java/party/cybsec/griefdetect/core/WebhookManager.java +++ b/src/main/java/party/cybsec/griefdetect/core/WebhookManager.java @@ -118,7 +118,7 @@ public class WebhookManager { ObjectNode embed = objectMapper.createObjectNode(); // Embed title and color - embed.put("title", "🚨 Grief Detection Alert"); + embed.put("title", "LavaCast Detection"); embed.put("description", String.format( "**Type:** %s\n" + "**Confidence:** %.1f%%\n" + @@ -141,17 +141,27 @@ public class WebhookManager { embed.put("color", getConfidenceColor(event.getConfidence())); // Fields for additional information - ObjectNode fields = objectMapper.createObjectNode(); + StringBuilder fieldsText = new StringBuilder(); // Nearest players field if (!event.getNearestPlayers().isEmpty()) { - StringBuilder playersText = new StringBuilder(); + fieldsText.append("**Players:**\n"); for (DetectionEvent.NearestPlayerInfo player : event.getNearestPlayers()) { String gamemode = player.isSurvival() ? "Survival" : "Creative"; - playersText.append(String.format("- %s (%.1fm, %s)\n", + fieldsText.append(String.format("- %s (%.1fm, %s)\n", player.getPlayerName(), player.getDistance(), gamemode)); } - embed.put("fields", playersText.toString()); + } + + // Teleport command field + String tpCommand = String.format("/tp %d %d %d", + event.getCenter().getBlockX(), + event.getCenter().getBlockY(), + event.getCenter().getBlockZ()); + fieldsText.append("\n**Teleport:** `").append(tpCommand).append("`"); + + if (fieldsText.length() > 0) { + embed.put("fields", fieldsText.toString()); } // Timestamp diff --git a/src/main/java/party/cybsec/griefdetect/modules/LavaCastDetector.java b/src/main/java/party/cybsec/griefdetect/modules/LavaCastDetector.java index 8d97593..eb862c9 100644 --- a/src/main/java/party/cybsec/griefdetect/modules/LavaCastDetector.java +++ b/src/main/java/party/cybsec/griefdetect/modules/LavaCastDetector.java @@ -147,9 +147,8 @@ public class LavaCastDetector implements ModuleManager.DetectionModule, Listener } private boolean isRelevantFormation(String blockType) { - return blockType.contains("COBBLESTONE") || - blockType.contains("STONE") || - blockType.contains("OBSIDIAN"); + // Only detect cobblestone formation to reduce false positives from natural stone/obsidian + return blockType.contains("COBBLESTONE"); } /** diff --git a/target/classes/party/cybsec/griefdetect/core/ChatAlertManager.class b/target/classes/party/cybsec/griefdetect/core/ChatAlertManager.class index d8a3158..30c8f81 100644 Binary files a/target/classes/party/cybsec/griefdetect/core/ChatAlertManager.class and b/target/classes/party/cybsec/griefdetect/core/ChatAlertManager.class differ diff --git a/target/classes/party/cybsec/griefdetect/core/PermissionManager.class b/target/classes/party/cybsec/griefdetect/core/PermissionManager.class index be15ed3..fbd0950 100644 Binary files a/target/classes/party/cybsec/griefdetect/core/PermissionManager.class and b/target/classes/party/cybsec/griefdetect/core/PermissionManager.class differ diff --git a/target/classes/party/cybsec/griefdetect/core/WebhookManager$WebhookCallback.class b/target/classes/party/cybsec/griefdetect/core/WebhookManager$WebhookCallback.class index 7645550..cd04b69 100644 Binary files a/target/classes/party/cybsec/griefdetect/core/WebhookManager$WebhookCallback.class and b/target/classes/party/cybsec/griefdetect/core/WebhookManager$WebhookCallback.class differ diff --git a/target/classes/party/cybsec/griefdetect/core/WebhookManager.class b/target/classes/party/cybsec/griefdetect/core/WebhookManager.class index 5a988f5..17ded07 100644 Binary files a/target/classes/party/cybsec/griefdetect/core/WebhookManager.class and b/target/classes/party/cybsec/griefdetect/core/WebhookManager.class differ diff --git a/target/classes/party/cybsec/griefdetect/modules/LavaCastDetector.class b/target/classes/party/cybsec/griefdetect/modules/LavaCastDetector.class index 87d7e57..45b7111 100644 Binary files a/target/classes/party/cybsec/griefdetect/modules/LavaCastDetector.class and b/target/classes/party/cybsec/griefdetect/modules/LavaCastDetector.class differ diff --git a/target/griefdetect-1.0.0-SNAPSHOT.jar b/target/griefdetect-1.0.0-SNAPSHOT.jar index 37a7bd3..d3da827 100644 Binary files a/target/griefdetect-1.0.0-SNAPSHOT.jar and b/target/griefdetect-1.0.0-SNAPSHOT.jar differ diff --git a/target/original-griefdetect-1.0.0-SNAPSHOT.jar b/target/original-griefdetect-1.0.0-SNAPSHOT.jar index c63fe97..6a4f997 100644 Binary files a/target/original-griefdetect-1.0.0-SNAPSHOT.jar and b/target/original-griefdetect-1.0.0-SNAPSHOT.jar differ