Skip to content

Commit afbfd44

Browse files
authored
Merge branch 'main' into resolve-228
2 parents 1848d3c + 583073d commit afbfd44

22 files changed

+138
-49
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public interface ChatUser extends User {
1616
*
1717
* @return The player that this user is backed by.
1818
*/
19-
@NotNull Player player();
19+
@NotNull Optional<Player> player();
2020

2121
/**
2222
* Gets the user that this user has last sent a private message to.

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/ChatChatPlugin.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252

5353
import java.util.ArrayList;
5454
import java.util.List;
55+
import java.util.Objects;
5556
import java.util.stream.Collectors;
5657

5758
@BukkitMain
@@ -226,8 +227,8 @@ private void registerSuggestions() {
226227
.filter(ChatUser.class::isInstance)
227228
.map(ChatUser.class::cast)
228229
.filter(sender::canSee)
229-
.map(ChatUser::player)
230-
.map(Player::getName)
230+
.map(user -> user.player().map(Player::getName).orElse(null))
231+
.filter(Objects::nonNull)
231232
.collect(Collectors.toUnmodifiableList())
232233
);
233234
commandManager.registerSuggestion(SuggestionKey.of("files"), (sender, context) -> DumpUtils.FILES);

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.player(),
41-
sender.player(),
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.player().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.player().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.player().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.player().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.player(),
127-
recipient.player(),
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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ public final class MessagesHolder {
7676
// format related
7777
private Component invalidFormat = text("Invalid format.", RED);
7878

79+
// generic
80+
private Component genericError = text("An unexpected error occurred!", RED);
81+
7982
public @NotNull Component consoleOnly() {
8083
return consoleOnly;
8184
}
@@ -240,12 +243,15 @@ public final class MessagesHolder {
240243
return chatDisabled;
241244
}
242245

246+
243247
public @NotNull Component rangedChatEnabledSuccessfully() {
244248
return rangedChatEnabledSuccessfully;
245249
}
246250

247251
public @NotNull Component rangedChatDisabledSuccessfully() {
248252
return rangedChatDisabledSuccessfully;
249-
}
250253

254+
public @NotNull Component genericError() {
255+
return genericError;
256+
}
251257
}

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().player(), 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/hooks/vanish/EssentialsVanishHook.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ public void enable() {
4545

4646
@Override
4747
public boolean canSee(@NotNull final ChatUser user, @NotNull final ChatUser target) {
48-
return user.player().canSee(target.player());
48+
return user.player()
49+
.map(player -> target.player().map(player::canSee).orElse(true))
50+
.orElse(true);
4951
}
5052
}

0 commit comments

Comments
 (0)