From e351e86bea1f73ac9e833115ff7ea29d39e12b1e Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Wed, 10 Apr 2024 22:02:01 +0200 Subject: [PATCH 1/2] Add mute handling and text styling in PlayerListener Enhanced PlayerListener feature by incorporating checks for server mute status before sending death messages. Additionally, styled the death messages by adding text color and italics when mute state is false to improve readability. --- .../com/alttd/chat/listeners/PlayerListener.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java index 037a302..2084185 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java @@ -11,6 +11,10 @@ import com.alttd.chat.objects.Toggleable; import com.alttd.chat.util.GalaxyUtility; import com.alttd.chat.util.Utility; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.format.Style; +import net.kyori.adventure.text.format.TextColor; +import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.entity.Player; @@ -102,9 +106,16 @@ public class PlayerListener implements Listener { playerDeathsStack.pop(); } - if (playerDeathsStack.size() > Config.DEATH_MESSAGES_MAX_PER_PERIOD) { + if (playerDeathsStack.size() > Config.DEATH_MESSAGES_MAX_PER_PERIOD || serverConfig.MUTED) { event.deathMessage(Component.empty()); return; + } else { + Component component = event.deathMessage(); + if (component != null) { + component = Component.text("* ").append(component); + component = component.style(Style.style(TextColor.color(82, 80, 77), TextDecoration.ITALIC)); + event.deathMessage(component); + } } playerDeathsStack.push(Instant.now()); } From de24ca4437251a340979e2fa3ba2021c99adc7e1 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sat, 13 Apr 2024 16:15:35 +0200 Subject: [PATCH 2/2] Refactor PlayerListener for mute handling and text prioritization Improved the PlayerListener class by adjusting event handling priority and adding nullability constraints for PlayerDeathEvent for better program robustness. Also removed a now unused import of the TextComponent class for cleaner codebase management. --- .../main/java/com/alttd/chat/listeners/PlayerListener.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java index 2084185..50f0be5 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/PlayerListener.java @@ -11,7 +11,6 @@ import com.alttd.chat.objects.Toggleable; import com.alttd.chat.util.GalaxyUtility; import com.alttd.chat.util.Utility; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.Style; import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; @@ -19,11 +18,13 @@ import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.jetbrains.annotations.NotNull; import java.time.Instant; import java.time.temporal.ChronoUnit; @@ -96,8 +97,8 @@ public class PlayerListener implements Listener { } private final HashMap> sendPlayerDeaths = new HashMap<>(); - @EventHandler(ignoreCancelled = true) - public void onPlayerDeath(PlayerDeathEvent event) { + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) + public void onPlayerDeath(@NotNull PlayerDeathEvent event) { UUID uuid = event.getPlayer().getUniqueId(); Stack playerDeathsStack = sendPlayerDeaths.computeIfAbsent(uuid, key -> new Stack<>()); Instant cutOff = Instant.now().minus(Config.DEATH_MESSAGES_LIMIT_PERIOD_MINUTES, ChronoUnit.MINUTES);