From 36009b64a7a91eebd40181271685b6d095d31641 Mon Sep 17 00:00:00 2001 From: Draycia Date: Tue, 17 Sep 2024 01:30:09 -0700 Subject: [PATCH] Add channel setting to disable cross server Also defaults integration channels to not broadcast --- .../draycia/carbon/common/channels/ConfigChatChannel.java | 6 ++++++ .../carbon/common/listeners/MessagePacketHandler.java | 5 +++++ .../paper/integration/fuuid/AbstractFactionsChannel.java | 5 +++++ .../carbon/paper/integration/mcmmo/McmmoPartyChannel.java | 5 +++++ .../carbon/paper/integration/towny/ResidentListChannel.java | 5 +++++ 5 files changed, 26 insertions(+) diff --git a/common/src/main/java/net/draycia/carbon/common/channels/ConfigChatChannel.java b/common/src/main/java/net/draycia/carbon/common/channels/ConfigChatChannel.java index 5d1834c17..ec661fe2f 100644 --- a/common/src/main/java/net/draycia/carbon/common/channels/ConfigChatChannel.java +++ b/common/src/main/java/net/draycia/carbon/common/channels/ConfigChatChannel.java @@ -117,6 +117,8 @@ public class ConfigChatChannel implements ChatChannel { private long cooldown = -1; + private Key broadcastCrossServer = true; + @Override public @Nullable String quickPrefix() { if (this.quickPrefix == null || this.quickPrefix.isBlank()) { @@ -263,6 +265,10 @@ public boolean emptyRadiusRecipientsMessage() { return this.emptyRadiusRecipientsMessage; } + public boolean broadcastCrossServer() { + return this.broadcastCrossServer; + } + @Override public boolean equals(final Object other) { if (!(other instanceof ConfigChatChannel otherChannel)) { diff --git a/common/src/main/java/net/draycia/carbon/common/listeners/MessagePacketHandler.java b/common/src/main/java/net/draycia/carbon/common/listeners/MessagePacketHandler.java index d0b7b6dcd..a2cbaaeba 100644 --- a/common/src/main/java/net/draycia/carbon/common/listeners/MessagePacketHandler.java +++ b/common/src/main/java/net/draycia/carbon/common/listeners/MessagePacketHandler.java @@ -50,6 +50,11 @@ public MessagePacketHandler( if (event.sender() instanceof ConsoleCarbonPlayer) { return; } + if (event.channel() instanceof ConfigChatChannel configChannel) { + if (!configChannel.broadcastCrossServer()) { + return; + } + } messaging.get().queuePacket(() -> { final CarbonPlayer sender = event.sender(); diff --git a/paper/src/main/java/net/draycia/carbon/paper/integration/fuuid/AbstractFactionsChannel.java b/paper/src/main/java/net/draycia/carbon/paper/integration/fuuid/AbstractFactionsChannel.java index d649d9db1..9935d00ca 100644 --- a/paper/src/main/java/net/draycia/carbon/paper/integration/fuuid/AbstractFactionsChannel.java +++ b/paper/src/main/java/net/draycia/carbon/paper/integration/fuuid/AbstractFactionsChannel.java @@ -48,4 +48,9 @@ protected final boolean hasRelations(final CarbonPlayer player, final Relation r return faction != null && faction.getRelationCount(relation) > 0; } + @Override + public boolean broadcastCrossServer() { + return false; + } + } diff --git a/paper/src/main/java/net/draycia/carbon/paper/integration/mcmmo/McmmoPartyChannel.java b/paper/src/main/java/net/draycia/carbon/paper/integration/mcmmo/McmmoPartyChannel.java index 60b04e3ff..e64c706e9 100644 --- a/paper/src/main/java/net/draycia/carbon/paper/integration/mcmmo/McmmoPartyChannel.java +++ b/paper/src/main/java/net/draycia/carbon/paper/integration/mcmmo/McmmoPartyChannel.java @@ -101,4 +101,9 @@ public List recipients(final CarbonPlayer sender) { return PartyManager.getParty(Bukkit.getPlayer(player.uuid())); } + @Override + public boolean broadcastCrossServer() { + return false; + } + } diff --git a/paper/src/main/java/net/draycia/carbon/paper/integration/towny/ResidentListChannel.java b/paper/src/main/java/net/draycia/carbon/paper/integration/towny/ResidentListChannel.java index 523e8f6e6..87925dd38 100644 --- a/paper/src/main/java/net/draycia/carbon/paper/integration/towny/ResidentListChannel.java +++ b/paper/src/main/java/net/draycia/carbon/paper/integration/towny/ResidentListChannel.java @@ -91,4 +91,9 @@ protected List onlinePlayers(final T residentList) { protected abstract Component cannotUseChannel(CarbonPlayer player); + @Override + public boolean broadcastCrossServer() { + return false; + } + }