Skip to content

Commit 3aeb0fe

Browse files
committed
use a message context enum instead of possibly conflicting booleans
1 parent 2d02b04 commit 3aeb0fe

File tree

3 files changed

+32
-11
lines changed

3 files changed

+32
-11
lines changed

src/main/java/pro/cloudnode/smp/cloudnodemsg/Message.java

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,26 +47,27 @@ public Message(@NotNull OfflinePlayer sender, @NotNull OfflinePlayer recipient,
4747
}
4848

4949
public void send() throws InvalidPlayerError {
50-
send(false, false);
50+
send(Context.REGULAR);
5151
}
5252

53-
public void send(final boolean channel, final boolean inReply) throws InvalidPlayerError {
53+
public void send(final @NotNull Context context) throws InvalidPlayerError {
5454
final @NotNull String senderUsername = playerOrServerUsername(this.sender);
5555
final @NotNull String recipientUsername = playerOrServerUsername(this.recipient);
5656

5757
final @NotNull Optional<@NotNull Player> senderPlayer = Optional.ofNullable(this.sender.getPlayer());
5858
final @NotNull Optional<@NotNull Player> recipientPlayer = Optional.ofNullable(this.recipient.getPlayer());
5959

6060
if (!recipient.getUniqueId().equals(console.getUniqueId()) && recipientPlayer.isEmpty() || (recipientPlayer.isPresent() && senderPlayer.isPresent() && CloudnodeMSG.isVanished(recipientPlayer.get()) && !senderPlayer.get().hasPermission(Permission.SEND_VANISHED))) {
61-
if (!channel) {
62-
final @NotNull Audience senderAudience = senderPlayer.isPresent() ? senderPlayer.get() : CloudnodeMSG.getInstance().getServer().getConsoleSender();
63-
if (inReply) new ReplyOfflineError(recipientUsername).send(senderAudience);
64-
else new PlayerNotFoundError(recipientUsername).send(senderAudience);
61+
if (context == Context.CHANNEL) {
62+
final @NotNull Player player = Objects.requireNonNull(sender.getPlayer());
63+
Message.exitChannel(player);
64+
new ChannelOfflineError(player.getName(), Optional.ofNullable(recipient.getName())
65+
.orElse("Unknown Player")).send(player);
6566
}
6667
else {
67-
Message.exitChannel(senderPlayer.get());
68-
new ChannelOfflineError(senderPlayer.get().getName(), Optional.ofNullable(recipient.getName())
69-
.orElse("Unknown Player")).send(senderPlayer.get());
68+
final @NotNull Audience senderAudience = senderPlayer.isPresent() ? senderPlayer.get() : CloudnodeMSG.getInstance().getServer().getConsoleSender();
69+
if (context == Context.REPLY) new ReplyOfflineError(recipientUsername).send(senderAudience);
70+
else new PlayerNotFoundError(recipientUsername).send(senderAudience);
7071
}
7172
return;
7273
}
@@ -310,4 +311,24 @@ public static void exitTeamChannel(final @NotNull Player player) {
310311
public static boolean hasTeamChannel(final @NotNull Player player) {
311312
return player.getPersistentDataContainer().getOrDefault(CHANNEL_TEAM, PersistentDataType.BOOLEAN, false);
312313
}
314+
315+
/**
316+
* The context in which this message is sent
317+
*/
318+
public static enum Context {
319+
/**
320+
* Message sent via command (i.e. no special context)
321+
*/
322+
REGULAR,
323+
324+
/**
325+
* Message sent via messaging channel
326+
*/
327+
CHANNEL,
328+
329+
/**
330+
* Message sent as a reply
331+
*/
332+
REPLY;
333+
}
313334
}

src/main/java/pro/cloudnode/smp/cloudnodemsg/command/ReplyCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public boolean run(final @NotNull CommandSender sender, final @NotNull String la
2626
if (recipient.isEmpty()) return new NobodyReplyError().send(sender);
2727

2828
try {
29-
new Message(Message.offlinePlayer(sender), recipient.get(), String.join(" ", args)).send(false, true);
29+
new Message(Message.offlinePlayer(sender), recipient.get(), String.join(" ", args)).send(Message.Context.REPLY);
3030
return true;
3131
}
3232
catch (final @NotNull InvalidPlayerError e) {

src/main/java/pro/cloudnode/smp/cloudnodemsg/listener/AsyncChatListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void channels(final @NotNull AsyncChatEvent event) {
4848
if (channelRecipient.isEmpty()) return;
4949
event.setCancelled(true);
5050
try {
51-
new Message(sender, channelRecipient.get(), event.message()).send(true, false);
51+
new Message(sender, channelRecipient.get(), event.message()).send(Message.Context.CHANNEL);
5252
}
5353
catch (final @NotNull InvalidPlayerError e) {
5454
e.log().send(sender);

0 commit comments

Comments
 (0)