Skip to content

Commit

Permalink
5.4.2
Browse files Browse the repository at this point in the history
Added proximity settings for public channel
Added permission redischat.channelgui for viewing the channel GUI
Now ignore is more consistent and doesn't block announcements and other messages sent by Server entity
  • Loading branch information
Emibergo02 committed Sep 23, 2024
1 parent 1341e38 commit cc66f9b
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 14 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {


group = 'dev.unnm3d'
version = '5.4.1'
version = '5.4.2'


repositories {
Expand Down
1 change: 1 addition & 0 deletions src/main/java/dev/unnm3d/redischat/Permissions.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public enum Permissions {
CHANNEL_PREFIX("redischat.channel."),
CHANNEL_PUBLIC("redischat.channel.public"),
CHANNEL_CREATE("redischat.createchannel"),
CHANNEL_GUI("redischat.channelgui"),
CHANNEL_CHANGE_DISPLAYNAME("redischat.changedisplayname"),
CHANNEL_DELETE("redischat.deletechannel"),
CHANNEL_TOGGLE_PLAYER("redischat.playerchannel"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ public CommandAPICommand getCommand() {
.withSubcommand(getListSubCommand())
.withSubcommand(getDiscordLinkSubCommand())
.executesPlayer((sender, args) -> {
if(!sender.hasPermission(Permissions.CHANNEL_GUI.getPermission())){
plugin.messages.sendMessage(sender, plugin.messages.noPermission);
return;
}
try {
plugin.getChannelManager().openChannelsGUI(sender);
} catch (Exception e) {
Expand Down
11 changes: 4 additions & 7 deletions src/main/java/dev/unnm3d/redischat/channels/ChannelManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,13 @@
import dev.unnm3d.redischat.api.RedisChatAPI;
import dev.unnm3d.redischat.api.VanishIntegration;
import dev.unnm3d.redischat.api.events.AsyncRedisChatMessageEvent;
import dev.unnm3d.redischat.api.objects.*;
import dev.unnm3d.redischat.channels.gui.ChannelGUI;
import dev.unnm3d.redischat.chat.ChatFormat;
import dev.unnm3d.redischat.chat.ComponentProvider;
import dev.unnm3d.redischat.api.objects.KnownChatEntities;
import dev.unnm3d.redischat.chat.filters.AbstractFilter;
import dev.unnm3d.redischat.chat.filters.FilterManager;
import dev.unnm3d.redischat.chat.filters.FilterResult;
import dev.unnm3d.redischat.api.objects.AudienceType;
import dev.unnm3d.redischat.api.objects.Channel;
import dev.unnm3d.redischat.api.objects.ChannelAudience;
import dev.unnm3d.redischat.api.objects.ChatMessage;
import dev.unnm3d.redischat.mail.MailGUIManager;
import dev.unnm3d.redischat.moderation.MuteManager;
import lombok.Getter;
Expand Down Expand Up @@ -196,7 +192,7 @@ public void outgoingMessage(CommandSender player, ChannelAudience receiver, @Not
chatMessage.setFormat(MiniMessage.miniMessage().serialize(event.getFormat()));
chatMessage.setContent(MiniMessage.miniMessage().serialize(event.getContent()));

if (currentChannel.get().getProximityDistance() > 0) {// Send to local server
if (currentChannel.get().getProximityDistance() >= 0) {// Send to local server
sendGenericChat(chatMessage);
return;
}
Expand Down Expand Up @@ -430,6 +426,7 @@ private Channel getGenericPublic() {
.format(plugin.config.defaultFormat.format())
.rateLimit(plugin.config.rate_limit)
.rateLimitPeriod(plugin.config.rate_limit_time_seconds)
.proximityDistance(plugin.config.publicProximityDistance)
.discordWebhook(plugin.config.publicDiscordWebhook)
.filtered(plugin.config.isPublicFiltered)
.shownByDefault(true)
Expand Down Expand Up @@ -463,7 +460,7 @@ public String getActiveChannel(String playerName) {
}

public void updateActiveChannel(@NotNull String playerName, @Nullable String channelName) {
if(plugin.config.debug)
if (plugin.config.debug)
plugin.getLogger().info("Local active channel for " + playerName + " is now " + channelName);
if (channelName == null) {
activePlayerChannels.remove(playerName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@

import de.exlll.configlib.Configuration;
import dev.unnm3d.redischat.RedisChat;
import dev.unnm3d.redischat.api.objects.KnownChatEntities;
import dev.unnm3d.redischat.chat.filters.AbstractFilter;
import dev.unnm3d.redischat.chat.filters.FilterResult;
import dev.unnm3d.redischat.api.objects.AudienceType;
import dev.unnm3d.redischat.api.objects.ChatMessage;
import dev.unnm3d.redischat.chat.filters.AbstractFilter;
import dev.unnm3d.redischat.chat.filters.FilterResult;
import dev.unnm3d.redischat.settings.FiltersConfig;
import lombok.Getter;
import net.kyori.adventure.text.minimessage.MiniMessage;
Expand All @@ -29,7 +28,7 @@ public FilterResult applyWithPrevious(CommandSender receiver, @NotNull ChatMessa


if (isIgnored && (chatMessage.getReceiver().isPlayer() || filterSettings.ignorePublicMessages)) {
if(filterSettings.sendWarnWhenIgnoring) {
if (filterSettings.sendWarnWhenIgnoring) {
return new FilterResult(chatMessage, true,
Optional.of(MiniMessage.miniMessage().deserialize(RedisChat.getInstance().messages.ignored_player
.replace("%player%", chatMessage.getSender().getName()))));
Expand All @@ -47,7 +46,7 @@ public static class IgnorePlayerFilterProperties extends FiltersConfig.FilterSet
private boolean sendWarnWhenIgnoring;

public IgnorePlayerFilterProperties() {
super(true, 4, Set.of(AudienceType.PLAYER,AudienceType.CHANNEL), Set.of(KnownChatEntities.GENERAL_CHANNEL.toString()));
super(true, 4, Set.of(AudienceType.PLAYER, AudienceType.CHANNEL), Set.of());
this.ignorePublicMessages = true;
this.sendWarnWhenIgnoring = true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public IgnoreFilter(RedisChat plugin, FiltersConfig.FilterSettings filterSetting

@Override
public FilterResult applyWithPrevious(CommandSender sender, @NotNull ChatMessage message, ChatMessage... previousMessages) {
if (plugin.getChannelManager().getMuteManager().isPlayerIgnored(sender.getName(), message.getSender().getName())) {
if (plugin.getChannelManager().getMuteManager().isPlayerIgnored(sender.getName(), message.getReceiver().getName())) {
return new FilterResult(message, true, Optional.of(
plugin.getComponentProvider().parse(sender, plugin.messages.ignored_player,
true, false, false)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ public boolean isMutedOnChannel(String playerName, String channel) {
* @return true if the "ignorer" is ignoring the "ignored"
*/
public boolean isPlayerIgnored(String ignorer, String ignored) {
if(ignored.equals(KnownChatEntities.SERVER_SENDER.toString())) return false;
final Set<String> mutedPlayers = playersMutedForPlayers.get(ignorer);
boolean isIgnored = mutedPlayers != null && (
mutedPlayers.contains(ignored) || mutedPlayers.contains(KnownChatEntities.ALL_PLAYERS.toString())
Expand Down
8 changes: 8 additions & 0 deletions src/main/java/dev/unnm3d/redischat/settings/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,14 @@ public final class Config implements ConfigValidator {
public String publicDiscordWebhook = "";
@Comment("Whether to filter the public chat")
public boolean isPublicFiltered = true;
@Comment({
"Proximity chat settings",
"Set to -1 to disable proximity chat (normal cross-server chat)",
"Set to 0 to make it work for the whole local server",
"Set to a positive number to check if a player is in the same server, same world and below the specified distance",
"The number is the distance in blocks"
})
public int publicProximityDistance = -1;
@Comment("Rejoin delay in milliseconds")
public int rejoinSendDelay = 500;
@Comment("Quit delay in milliseconds")
Expand Down
3 changes: 3 additions & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ commands:
description: Setchatplaceholder command
permission: redischat.setchatplaceholder
permissions:
redischat.channelgui:
description: Allows to open the /channel GUI
default: true
redischat.chatcolorcommand:
description: Allows to use the /chatcolor command
default: op
Expand Down

0 comments on commit cc66f9b

Please sign in to comment.