Skip to content

Commit 583073d

Browse files
authored
Merge pull request #233 from BlitzOffline/fix/messages-and-mentions
Fix issues introduced in PR #232
2 parents 09e14f2 + 69bf385 commit 583073d

File tree

15 files changed

+89
-42
lines changed

15 files changed

+89
-42
lines changed

api/src/main/java/at/helpch/chatchat/api/user/ChatUser.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,6 @@ public interface ChatUser extends User {
1818
*/
1919
@NotNull Optional<Player> player();
2020

21-
/**
22-
* Gets the player that this user is backed by. If the player is not present, an exception is thrown.
23-
*
24-
* @return The player that this user is backed by.
25-
* @throws NullPointerException If the player is not present.
26-
*/
27-
@NotNull Player playerNotNull() throws NullPointerException;
28-
2921
/**
3022
* Gets the user that this user has last sent a private message to.
3123
*

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
spigot = "1.20.1-R0.1-SNAPSHOT"
44

55
# Adventure
6-
minimessage = "4.15.0"
7-
adventure-platform = "4.3.2"
6+
minimessage = "4.16.0"
7+
adventure-platform = "4.3.3-SNAPSHOT"
88

99
# Other
1010
configurate = "4.1.2"

plugin/src/main/java/at/helpch/chatchat/command/FormatTestCommand.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ public void testFormat(
2929
@NotNull final PriorityFormat format,
3030
@Join @NotNull final String message
3131
) {
32+
var player = sender.player();
33+
if (player.isEmpty()) {
34+
sender.sendMessage(plugin.configManager().messages().genericError());
35+
return;
36+
}
37+
3238
if (message.isBlank()) {
3339
sender.sendMessage(plugin.configManager().messages().emptyMessage());
3440
return;
@@ -37,8 +43,8 @@ public void testFormat(
3743
sender.sendMessage(
3844
FormatUtils.parseFormat(
3945
format,
40-
sender.playerNotNull(),
41-
sender.playerNotNull(),
46+
player.get(),
47+
player.get(),
4248
MessageProcessor.processMessage(plugin, sender, ConsoleUser.INSTANCE, message),
4349
plugin.miniPlaceholdersManager().compileTags(MiniPlaceholderContext.builder().inMessage(false).sender(sender).recipient(sender).build())
4450
)

plugin/src/main/java/at/helpch/chatchat/command/IgnoreCommand.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,20 @@ public void ignore(ChatUser sender, ChatUser target) {
2626
return;
2727
}
2828

29+
var targetPlayer = target.player();
30+
if (targetPlayer.isEmpty()) {
31+
sender.sendMessage(plugin.configManager().messages().userOffline());
32+
return;
33+
}
34+
2935
if (sender.ignoredUsers().contains(target.uuid())) {
3036
sender.sendMessage(plugin.configManager().messages().alreadyIgnored()
31-
.replaceText(builder -> builder.matchLiteral("<player>").replacement(target.playerNotNull().getDisplayName())));
37+
.replaceText(builder -> builder.matchLiteral("<player>").replacement(targetPlayer.get().getDisplayName())));
3238
return;
3339
}
3440

3541
sender.ignoreUser(target);
3642
sender.sendMessage(plugin.configManager().messages().ignoredPlayer()
37-
.replaceText(builder -> builder.matchLiteral("<player>").replacement(target.playerNotNull().getDisplayName())));
43+
.replaceText(builder -> builder.matchLiteral("<player>").replacement(targetPlayer.get().getDisplayName())));
3844
}
3945
}

plugin/src/main/java/at/helpch/chatchat/command/UnignoreCommand.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,20 @@ public UnignoreCommand(final ChatChatPlugin plugin) {
2020
@Permission(IGNORE_PERMISSION)
2121
@Default
2222
public void unignore(ChatUser sender, ChatUser target) {
23+
var targetPlayer = target.player();
24+
if (targetPlayer.isEmpty()) {
25+
sender.sendMessage(plugin.configManager().messages().userOffline());
26+
return;
27+
}
28+
2329
if (!sender.ignoredUsers().contains(target.uuid())) {
2430
sender.sendMessage(plugin.configManager().messages().notIgnored()
25-
.replaceText(builder -> builder.matchLiteral("<player>").replacement(target.playerNotNull().getDisplayName())));
31+
.replaceText(builder -> builder.matchLiteral("<player>").replacement(targetPlayer.get().getDisplayName())));
2632
return;
2733
}
2834

2935
sender.unignoreUser(target);
3036
sender.sendMessage(plugin.configManager().messages().unignoredPlayer()
31-
.replaceText(builder -> builder.matchLiteral("<player>").replacement(target.playerNotNull().getDisplayName())));
37+
.replaceText(builder -> builder.matchLiteral("<player>").replacement(targetPlayer.get().getDisplayName())));
3238
}
3339
}

plugin/src/main/java/at/helpch/chatchat/command/WhisperCommand.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,13 @@ public void whisperCommand(
3737
@Suggestion(value = "recipients") final ChatUser recipient,
3838
@Join final String message
3939
) {
40+
var senderPlayer = sender.player();
41+
var recipientPlayer = recipient.player();
42+
if (senderPlayer.isEmpty() || recipientPlayer.isEmpty()) {
43+
sender.sendMessage(plugin.configManager().messages().userOffline());
44+
return;
45+
}
46+
4047
if (!plugin.configManager().settings().privateMessagesSettings().enabled()) {
4148
sender.sendMessage(plugin.configManager().messages().unknownCommand());
4249
return;
@@ -123,8 +130,8 @@ public void whisperCommand(
123130
formats.forEach((Audience audience, Format format) ->
124131
audience.sendMessage(FormatUtils.parseFormat(
125132
format,
126-
sender.playerNotNull(),
127-
recipient.playerNotNull(),
133+
senderPlayer.get(),
134+
recipientPlayer.get(),
128135
pmSendEvent.message()
129136
))
130137
);

plugin/src/main/java/at/helpch/chatchat/config/holder/MessagesHolder.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,9 @@ public final class MessagesHolder {
7373
// format related
7474
private Component invalidFormat = text("Invalid format.", RED);
7575

76+
// generic
77+
private Component genericError = text("An unexpected error occurred!", RED);
78+
7679
public @NotNull Component consoleOnly() {
7780
return consoleOnly;
7881
}
@@ -237,4 +240,8 @@ public final class MessagesHolder {
237240
return chatDisabled;
238241
}
239242

243+
public @NotNull Component genericError() {
244+
return genericError;
245+
}
246+
240247
}

plugin/src/main/java/at/helpch/chatchat/hooks/dsrv/DsrvListener.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,14 @@ public void broadcastMessageToChannel(final String channelName, final Component
4343

4444
@EventHandler(priority = EventPriority.MONITOR)
4545
public void onChat(ChatChatEvent event) {
46+
var player = event.user().player();
47+
if (player.isEmpty()) {
48+
return;
49+
}
50+
4651
final var message = github.scarsz.discordsrv.dependencies.kyori.adventure.text.serializer.gson.GsonComponentSerializer.gson().deserialize(
4752
GsonComponentSerializer.gson().serialize(event.message())
4853
);
49-
DiscordSRV.getPlugin().processChatMessage(event.user().playerNotNull(), message,
50-
event.channel().name(), event.isCancelled());
54+
DiscordSRV.getPlugin().processChatMessage(player.get(), message, event.channel().name(), event.isCancelled());
5155
}
5256
}

plugin/src/main/java/at/helpch/chatchat/listener/ChatListener.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,12 @@ public void onChat(final AsyncPlayerChatEvent event) {
9999
"format are installed and work properly.");
100100
}
101101

102+
var sent = MessageProcessor.process(plugin, user, channel, message, event.isAsynchronous());
102103
// Cancel the event if the message doesn't end up being sent
103104
// This only happens if the message contains illegal characters or if the ChatChatEvent is canceled.
104-
event.setCancelled(!MessageProcessor.process(plugin, user, channel, message, event.isAsynchronous()));
105+
if (!event.isCancelled() && !sent) {
106+
event.setCancelled(false);
107+
}
105108
user.channel(oldChannel);
106109
}
107110

plugin/src/main/java/at/helpch/chatchat/placeholder/PlaceholderAPIPlaceholders.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
88
import net.kyori.adventure.identity.Identity;
99
import org.bukkit.OfflinePlayer;
10+
import org.bukkit.entity.Player;
1011
import org.jetbrains.annotations.NotNull;
1112

1213
import java.util.List;
14+
import java.util.Optional;
1315

1416
public final class PlaceholderAPIPlaceholders extends PlaceholderExpansion {
1517
private final ChatChatPlugin plugin;
@@ -85,7 +87,7 @@ public String onRequest(final OfflinePlayer offlinePlayer, @NotNull final String
8587
case "private_messages_enabled":
8688
return formatBoolean(chatUser.privateMessages());
8789
case "private_messages_recipient":
88-
return chatUser.lastMessagedUser().map(value -> value.playerNotNull().getName()).orElse("");
90+
return chatUser.lastMessagedUser().map(value -> value.player().map(Player::getName).orElse("")).orElse("");
8991
}
9092

9193
return null;

0 commit comments

Comments
 (0)