From c20ee0bc49ce6f5e6ceb09057955c72e8e18c94c Mon Sep 17 00:00:00 2001 From: John Etherfield Date: Mon, 10 Aug 2026 14:15:37 +0200 Subject: [PATCH] feat: add warning notification when no players hear local chat --- src/main/java/org/examp/john/ChatHandler.java | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/examp/john/ChatHandler.java b/src/main/java/org/examp/john/ChatHandler.java index 66c434d..0ee0f41 100644 --- a/src/main/java/org/examp/john/ChatHandler.java +++ b/src/main/java/org/examp/john/ChatHandler.java @@ -45,6 +45,7 @@ public class ChatHandler { .append(sender.getDisplayName()); if (text.startsWith(prefix)) { + // ГЛОБАЛЬНИЙ ЧАТ String actualMessage = text.substring(1).trim(); Component globalMessage = Component.empty() .append(formattedName) @@ -55,15 +56,33 @@ public class ChatHandler { } } else { - Component localMessage = Component.empty() - .append(formattedName) - .append(Component.literal(": " + text).withStyle(ChatFormatting.GRAY)); + // ЛОКАЛЬНИЙ ЧАТ + int heardCount = 0; for (ServerPlayer player : players) { if (player.level() == serverLevel && player.distanceTo(sender) <= LOCAL_CHAT_RADIUS) { - player.sendSystemMessage(localMessage); + if (player != sender) { + heardCount++; + } } } + + if (heardCount > 0) { + Component localMessage = Component.empty() + .append(formattedName) + .append(Component.literal(": " + text).withStyle(ChatFormatting.GRAY)); + + for (ServerPlayer player : players) { + if (player.level() == serverLevel && player.distanceTo(sender) <= LOCAL_CHAT_RADIUS) { + player.sendSystemMessage(localMessage); + } + } + } else { + sender.sendSystemMessage( + Component.literal("Вас ніхто не почув, додайте на початок повідомлення \"!\" аби написати в глобальний чат") + .withStyle(ChatFormatting.ITALIC, ChatFormatting.YELLOW) + ); + } } return false;