diff --git a/gradle.properties b/gradle.properties index 92e3952..9a71505 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ # Project metadata group=xyz.earthcow.networkjoinmessages -version=3.5.0 +version=3.5.1 description=A plugin handling join, leave and swap messages for proxy servers. # Plugin.yml metadata diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/common/Core.java b/src/main/java/xyz/earthcow/networkjoinmessages/common/Core.java index 46ccfa0..860b302 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/common/Core.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/common/Core.java @@ -112,6 +112,6 @@ public Core(CorePlugin plugin, PremiumVanish premiumVanish) { this.coreToggleJoinCommand = new CoreToggleJoinCommand(config, stateStore, messageHandler, plugin, silenceChecker, playerDataStore); this.corePremiumVanishListener = premiumVanish == null ? null - : new CorePremiumVanishListener(plugin.getCoreLogger(), config, spoofManager); + : new CorePremiumVanishListener(plugin.getCoreLogger(), config, spoofManager, stateStore); } } \ No newline at end of file diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/common/commands/CoreToggleJoinCommand.java b/src/main/java/xyz/earthcow/networkjoinmessages/common/commands/CoreToggleJoinCommand.java index 23d3406..15c1799 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/common/commands/CoreToggleJoinCommand.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/common/commands/CoreToggleJoinCommand.java @@ -145,7 +145,7 @@ public List getTabCompletion(CoreCommandSender sender, String[] args) { yield ImmutableList.of(); } yield plugin.getAllPlayers().stream() - .filter(player -> !silenceChecker.isSilent(player, false)) + .filter(player -> !silenceChecker.isSilent(player, false, false)) .map(CorePlayer::getName) .collect(ImmutableList.toImmutableList()); } diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePlayerListener.java b/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePlayerListener.java index c0dd684..5a7115d 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePlayerListener.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePlayerListener.java @@ -135,7 +135,7 @@ private void handleJoin(@NotNull CorePlayer player, @NotNull CoreBackendServer s ? messageFormatter.formatFirstJoinMessage(player) : messageFormatter.formatJoinMessage(player); - boolean silent = silenceChecker.isSilent(player); + boolean silent = silenceChecker.isSilent(player, true, true); if (silent && player.hasPermission("networkjoinmessages.spoof")) { messageHandler.sendMessage(player, config.getSpoofJoinNotification()); diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePremiumVanishListener.java b/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePremiumVanishListener.java index edc372a..71d241b 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePremiumVanishListener.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/common/listeners/CorePremiumVanishListener.java @@ -4,6 +4,7 @@ import xyz.earthcow.networkjoinmessages.common.abstraction.CoreLogger; import xyz.earthcow.networkjoinmessages.common.abstraction.CorePlayer; import xyz.earthcow.networkjoinmessages.common.config.PluginConfig; +import xyz.earthcow.networkjoinmessages.common.player.PlayerStateStore; import xyz.earthcow.networkjoinmessages.common.util.SpoofManager; public class CorePremiumVanishListener { @@ -11,18 +12,20 @@ public class CorePremiumVanishListener { private final CoreLogger logger; private final PluginConfig config; private final SpoofManager spoofManager; + private final PlayerStateStore stateStore; - public CorePremiumVanishListener(@NotNull CoreLogger logger, @NotNull PluginConfig config, @NotNull SpoofManager spoofManager) { + public CorePremiumVanishListener(@NotNull CoreLogger logger, @NotNull PluginConfig config, @NotNull SpoofManager spoofManager, @NotNull PlayerStateStore stateStore) { this.logger = logger; this.config = config; this.spoofManager = spoofManager; + this.stateStore = stateStore; } public void handlePremiumVanishShow(@NotNull CorePlayer player) { if (!player.getPremiumVanishHidden()) return; logger.debug("Setting PremiumVanishHidden to FALSE for " + player.getName()); player.setPremiumVanishHidden(false); - if (config.isPVSpoofJoinMessageOnShow()) { + if (config.isPVSpoofJoinMessageOnShow() && !stateStore.getSilentState(player)) { spoofManager.spoofJoin(player); } } @@ -31,7 +34,7 @@ public void handlePremiumVanishHide(@NotNull CorePlayer player) { if (player.getPremiumVanishHidden()) return; logger.debug("Setting PremiumVanishHidden to TRUE for " + player.getName()); player.setPremiumVanishHidden(true); - if (config.isPVSpoofLeaveMessageOnHide()) { + if (config.isPVSpoofLeaveMessageOnHide() && !stateStore.getSilentState(player)) { spoofManager.spoofLeave(player); } } diff --git a/src/main/java/xyz/earthcow/networkjoinmessages/common/player/SilenceChecker.java b/src/main/java/xyz/earthcow/networkjoinmessages/common/player/SilenceChecker.java index f4cb1b1..84d5c6e 100644 --- a/src/main/java/xyz/earthcow/networkjoinmessages/common/player/SilenceChecker.java +++ b/src/main/java/xyz/earthcow/networkjoinmessages/common/player/SilenceChecker.java @@ -39,7 +39,7 @@ public SilenceChecker( } public boolean isSilent(@NotNull CorePlayer player) { - return isSilent(player, true); + return isSilent(player, true, false); } /** @@ -53,10 +53,10 @@ public boolean isSilent(@NotNull CorePlayer player) { * or has the {@code pv.joinvanished} permission with TreatVanishedOnJoin enabled * */ - public boolean isSilent(@NotNull CorePlayer player, boolean logDebug) { + public boolean isSilent(@NotNull CorePlayer player, boolean logDebug, boolean joining) { if (logDebug) logDebugState(player); - if (config.isPVTreatVanishedOnJoin() && player.hasPermission(PV_JOIN_VANISHED_PERM)) { + if (joining && config.isPVTreatVanishedOnJoin() && player.hasPermission(PV_JOIN_VANISHED_PERM)) { player.setPremiumVanishHidden(true); }