Skip to content

Commit

Permalink
cleanup commands
Browse files Browse the repository at this point in the history
  • Loading branch information
fabianmakila committed Nov 10, 2024
1 parent 527b852 commit d55828f
Show file tree
Hide file tree
Showing 10 changed files with 171 additions and 138 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,20 @@
import fi.fabianadrian.proxychat.common.command.ProxyChatCommand;
import fi.fabianadrian.proxychat.common.command.parser.UserParser;
import fi.fabianadrian.proxychat.common.user.User;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.format.NamedTextColor;
import org.incendo.cloud.context.CommandContext;

import static net.kyori.adventure.text.Component.translatable;

public final class BlockCommand extends ProxyChatCommand {
private static final TranslatableComponent.Builder COMPONENT_BLOCK_SUCCESS = translatable()
.key("proxychat.command.block.success")
.color(NamedTextColor.GREEN);
private static final TranslatableComponent.Builder COMPONENT_BLOCK_ALREADY_BLOCKED = translatable()
.key("proxychat.command.block.already-blocked")
.color(NamedTextColor.RED);

public BlockCommand(ProxyChat proxyChat) {
super(proxyChat, "block", "ignore");
}
Expand All @@ -26,15 +35,9 @@ public void executeBlock(CommandContext<User> ctx) {
User target = ctx.get("player");

if (sender.addBlockedUser(target)) {
sender.sendMessage(Component.translatable(
"proxychat.command.block.success",
NamedTextColor.GREEN
).arguments(Component.text(target.name())));
sender.sendMessage(COMPONENT_BLOCK_SUCCESS.arguments(target.nameAsComponent()));
} else {
sender.sendMessage(Component.translatable(
"proxychat.command.block.already-blocked",
NamedTextColor.RED
).arguments(Component.text(target.name())));
sender.sendMessage(COMPONENT_BLOCK_ALREADY_BLOCKED.arguments(target.nameAsComponent()));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,28 @@
import fi.fabianadrian.proxychat.common.user.User;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
import net.kyori.adventure.text.TranslatableComponent;
import net.kyori.adventure.text.format.NamedTextColor;
import org.incendo.cloud.context.CommandContext;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import static net.kyori.adventure.text.Component.*;

public final class BlockListCommand extends ProxyChatCommand {
private static final Component COMPONENT_BLOCKLIST_EMPTY = translatable()
.key("proxychat.command.blocklist.empty")
.color(NamedTextColor.RED)
.build();
private static final Component COMPONENT_BLOCKLIST_HEADER = translatable()
.key("proxychat.command.blocklist.header")
.color(NamedTextColor.RED)
.appendNewline()
.build();


private final NameService nameService;

public BlockListCommand(ProxyChat proxyChat) {
Expand All @@ -33,20 +47,22 @@ private void executeBlockList(CommandContext<User> ctx) {
User user = ctx.sender();

if (user.blockedUsers().isEmpty()) {
user.sendMessage(Component.translatable("proxychat.command.blocklist.empty", NamedTextColor.RED));
user.sendMessage(COMPONENT_BLOCKLIST_EMPTY);
return;
}

List<Component> resolvedNameComponents = new ArrayList<>();
user.blockedUsers().forEach(uuid -> {
Optional<String> nameOptional = this.nameService.resolve(uuid);
if (nameOptional.isPresent()) {
resolvedNameComponents.add(Component.text(nameOptional.get()));
resolvedNameComponents.add(text(nameOptional.get()));
} else {
resolvedNameComponents.add(Messages.GENERAL_UNKNOWN.hoverEvent(Component.text(uuid.toString())));
resolvedNameComponents.add(Messages.GENERAL_UNKNOWN.hoverEvent(text(uuid.toString())));
}
});

user.sendMessage(Component.translatable("proxychat.command.blocklist.header", NamedTextColor.RED).appendNewline().append(Component.join(JoinConfiguration.commas(true), resolvedNameComponents)).color(NamedTextColor.WHITE));
user.sendMessage(COMPONENT_BLOCKLIST_HEADER.append(
join(JoinConfiguration.commas(true), resolvedNameComponents)).color(NamedTextColor.WHITE)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import fi.fabianadrian.proxychat.common.command.Commander;
import fi.fabianadrian.proxychat.common.command.ProxyChatCommand;
import fi.fabianadrian.proxychat.common.command.parser.ChannelParser;
import fi.fabianadrian.proxychat.common.locale.Messages;
import fi.fabianadrian.proxychat.common.user.User;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.JoinConfiguration;
Expand All @@ -16,30 +15,51 @@
import java.util.List;
import java.util.stream.Stream;

import static net.kyori.adventure.text.Component.translatable;

public final class ChannelCommand extends ProxyChatCommand {
private static final Component COMPONENT_ERROR_ALREADY_MUTED = translatable(
"proxychat.command.channel.already-muted",
NamedTextColor.RED
);
private static final Component COMPONENT_ERROR_NOT_MUTED = translatable(
"proxychat.command.channel.not-muted",
NamedTextColor.RED
);
private static final Component COMPONENT_LIST = translatable()
.key("proxychat.command.channel.list")
.color(NamedTextColor.GREEN)
.appendNewline()
.build();
private static final Component COMPONENT_MUTED = translatable(
"proxychat.command.channel.muted",
NamedTextColor.GREEN
);
private static final Component COMPONENT_UNMUTED = translatable(
"proxychat.command.channel.unmuted",
NamedTextColor.GREEN
);

public ChannelCommand(ProxyChat proxyChat) {
super(proxyChat, "channel", "ch");
}

@Override
public void register() {
this.manager.command(
this.subCommand("list")
.handler(this::executeList)
this.manager.command(this.subCommand("list")
.handler(this::executeList)
);

this.manager.command(
this.subCommand("mute")
.required("channel", ChannelParser.channelParser())
.senderType(User.class)
.handler(this::executeMute)
this.manager.command(this.subCommand("mute")
.required("channel", ChannelParser.channelParser())
.senderType(User.class)
.handler(this::executeMute)
);

this.manager.command(
this.subCommand("unmute")
.required("channel", ChannelParser.channelParser())
.senderType(User.class)
.handler(this::executeUnmute)
this.manager.command(this.subCommand("unmute")
.required("channel", ChannelParser.channelParser())
.senderType(User.class)
.handler(this::executeUnmute)
);
}

Expand All @@ -54,19 +74,19 @@ private void executeList(CommandContext<Commander> ctx) {
channels.forEach(channel -> channelComponents.add(Component.text(channel.name(), NamedTextColor.GREEN)));
}

ctx.sender().sendMessage(
Messages.COMMAND_CHANNEL_LIST.append(Component.newline()).append(Component.join(JoinConfiguration.commas(true), channelComponents))
);
ctx.sender().sendMessage(COMPONENT_LIST.append(
Component.join(JoinConfiguration.commas(true), channelComponents)
));
}

private void executeMute(CommandContext<User> ctx) {
User user = ctx.sender();
Channel channel = ctx.get("channel");

if (user.muteChannel(channel)) {
user.sendMessage(Messages.COMMAND_CHANNEL_MUTED);
user.sendMessage(COMPONENT_MUTED);
} else {
user.sendMessage(Messages.COMMAND_CHANNEL_ERROR_ALREADY_MUTED);
user.sendMessage(COMPONENT_ERROR_ALREADY_MUTED);
}
}

Expand All @@ -75,9 +95,9 @@ private void executeUnmute(CommandContext<User> ctx) {
Channel channel = ctx.get("channel");

if (user.unMuteChannel(channel)) {
user.sendMessage(Messages.COMMAND_CHANNEL_UNMUTED);
user.sendMessage(COMPONENT_UNMUTED);
} else {
user.sendMessage(Messages.COMMAND_CHANNEL_ERROR_NOT_MUTED);
user.sendMessage(COMPONENT_ERROR_NOT_MUTED);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,55 @@

import fi.fabianadrian.proxychat.common.ProxyChat;
import fi.fabianadrian.proxychat.common.command.ProxyChatCommand;
import fi.fabianadrian.proxychat.common.locale.Messages;
import fi.fabianadrian.proxychat.common.user.MessageSettings;
import fi.fabianadrian.proxychat.common.user.User;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.incendo.cloud.context.CommandContext;
import org.incendo.cloud.parser.standard.BooleanParser;
import org.incendo.cloud.parser.standard.EnumParser;

import java.util.Optional;

import static net.kyori.adventure.text.Component.translatable;

public class MessageSettingsCommand extends ProxyChatCommand {
private static final Component COMPONENT_ANNOUNCEMENTS_HIDDEN = translatable(
"proxychat.command.messagesettings.announcements.hidden",
NamedTextColor.RED
);
private static final Component COMPONENT_ANNOUNCEMENTS_VISIBLE = translatable(
"proxychat.command.messagesettings.announcements.visible",
NamedTextColor.GREEN
);
private static final Component COMPONENT_GLOBALCHAT_HIDDEN = translatable(
"proxychat.command.messagesettings.globalchat.hidden",
NamedTextColor.RED
);
private static final Component COMPONENT_GLOBALCHAT_VISIBLE = translatable(
"proxychat.command.messagesettings.globalchat.visible",
NamedTextColor.GREEN
);
private static final Component COMPONENT_PRIVACY_NOBODY = translatable(
"proxychat.command.messagesettings.privacy.nobody",
NamedTextColor.GREEN
);
private static final Component COMPONENT_PRIVACY_FRIENDS = translatable(
"proxychat.command.messagesettings.privacy.friends",
NamedTextColor.GREEN
);
private static final Component COMPONENT_PRIVACY_EVERYONE = translatable(
"proxychat.command.messagesettings.privacy.everyone",
NamedTextColor.GREEN
);
private static final Component COMPONENT_SPY_DISABLE = translatable(
"proxychat.command.messagesettings.spy.disable",
NamedTextColor.RED
);
private static final Component COMPONENT_SPY_ENABLE = translatable(
"proxychat.command.messagesettings.spy.enable",
NamedTextColor.GREEN
);

public MessageSettingsCommand(ProxyChat proxyChat) {
super(proxyChat, "messagesettings", "msgs");
Expand Down Expand Up @@ -47,7 +86,7 @@ private void executeSpy(CommandContext<User> ctx) {
boolean value = enabledOptional.orElseGet(() -> !user.messageSettings().spy());

user.messageSettings().spy(value);
ctx.sender().sendMessage(value ? Messages.COMMAND_MESSAGESETTINGS_SPY_ENABLE : Messages.COMMAND_MESSAGESETTINGS_SPY_DISABLE);
ctx.sender().sendMessage(value ? COMPONENT_SPY_ENABLE : COMPONENT_SPY_DISABLE);
}

private void executeAllow(CommandContext<User> ctx) {
Expand All @@ -58,13 +97,13 @@ private void executeAllow(CommandContext<User> ctx) {

switch (privacySetting) {
case NOBODY:
user.sendMessage(Messages.COMMAND_MESSAGESETTINGS_ALLOW_NOBODY);
user.sendMessage(COMPONENT_PRIVACY_NOBODY);
break;
case FRIENDS:
user.sendMessage(Messages.COMMAND_MESSAGESETTINGS_ALLOW_FRIENDS);
user.sendMessage(COMPONENT_PRIVACY_FRIENDS);
break;
case EVERYONE:
user.sendMessage(Messages.COMMAND_MESSAGESETTINGS_ALLOW_EVERYONE);
user.sendMessage(COMPONENT_PRIVACY_EVERYONE);
break;
}
}
Expand All @@ -76,7 +115,7 @@ private void executeAnnouncement(CommandContext<User> ctx) {
boolean visible = visibleOptional.orElseGet(() -> !user.messageSettings().announcements());

user.messageSettings().announcements(visible);
user.sendMessage(visible ? Messages.COMMAND_MESSAGESETTINGS_ANNOUNCEMENTS_VISIBLE : Messages.COMMAND_MESSAGESETTINGS_ANNOUNCEMENTS_HIDDEN);
user.sendMessage(visible ? COMPONENT_ANNOUNCEMENTS_VISIBLE : COMPONENT_ANNOUNCEMENTS_HIDDEN);
}

private void executeGlobalChat(CommandContext<User> ctx) {
Expand All @@ -86,6 +125,6 @@ private void executeGlobalChat(CommandContext<User> ctx) {
boolean visible = visibleOptional.orElseGet(() -> !user.messageSettings().globalChat());

user.messageSettings().globalChat(visible);
user.sendMessage(visible ? Messages.COMMAND_MESSAGESETTINGS_GLOBALCHAT_VISIBLE : Messages.COMMAND_MESSAGESETTINGS_GLOBALCHAT_HIDDEN);
user.sendMessage(visible ? COMPONENT_GLOBALCHAT_VISIBLE : COMPONENT_GLOBALCHAT_HIDDEN);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,27 @@

import fi.fabianadrian.proxychat.common.ProxyChat;
import fi.fabianadrian.proxychat.common.command.ProxyChatCommand;
import fi.fabianadrian.proxychat.common.locale.Messages;
import fi.fabianadrian.proxychat.common.user.User;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.incendo.cloud.context.CommandContext;
import org.incendo.cloud.parser.standard.StringParser;

import java.util.Optional;
import java.util.UUID;

import static net.kyori.adventure.text.Component.translatable;

public final class ReplyCommand extends ProxyChatCommand {
private static final Component COMPONENT_ERROR_NO_LAST_MESSAGED = translatable(
"proxychat.command.reply.no-last-messaged",
NamedTextColor.RED
);
private static final Component COMPONENT_ERROR_LAST_MESSAGED_OFFLINE = translatable(
"proxychat.command.reply.offline",
NamedTextColor.RED
);

public ReplyCommand(ProxyChat proxyChat) {
super(proxyChat, "reply", "r");
}
Expand All @@ -30,13 +42,13 @@ private void executeReply(CommandContext<User> ctx) {

UUID lastMessaged = user.lastMessaged();
if (lastMessaged == null) {
user.sendMessage(Messages.COMMAND_REPLY_ERROR_NO_LAST_MESSAGED);
user.sendMessage(COMPONENT_ERROR_NO_LAST_MESSAGED);
return;
}

Optional<User> receiver = this.proxyChat.userManager().user(lastMessaged);
if (receiver.isEmpty()) {
user.sendMessage(Messages.COMMAND_REPLY_ERROR_LAST_MESSAGED_OFFLINE);
user.sendMessage(COMPONENT_ERROR_LAST_MESSAGED_OFFLINE);
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,18 @@
import fi.fabianadrian.proxychat.common.ProxyChat;
import fi.fabianadrian.proxychat.common.command.Commander;
import fi.fabianadrian.proxychat.common.command.ProxyChatCommand;
import fi.fabianadrian.proxychat.common.locale.Messages;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.incendo.cloud.context.CommandContext;

import static net.kyori.adventure.text.Component.translatable;

public final class RootCommand extends ProxyChatCommand {
private static final Component COMPONENT_RELOAD_SUCCESS = translatable(
"proxychat.command.proxychat.reload.success",
NamedTextColor.GREEN
);

public RootCommand(ProxyChat proxyChat) {
super(proxyChat, "proxychat");
}
Expand All @@ -18,15 +26,14 @@ public void register() {
);

var debugBuilder = subCommand("debug");
this.manager.command(
debugBuilder.literal("announcement")
.handler(this::executeDebugAnnouncement)
this.manager.command(debugBuilder.literal("announcement")
.handler(this::executeDebugAnnouncement)
);
}

private void executeReload(CommandContext<Commander> ctx) {
this.proxyChat.reload();
ctx.sender().sendMessage(Messages.COMMAND_PROXYCHAT_RELOAD_SUCCESS);
ctx.sender().sendMessage(COMPONENT_RELOAD_SUCCESS);
}

private void executeDebugAnnouncement(CommandContext<Commander> ctx) {
Expand Down
Loading

0 comments on commit d55828f

Please sign in to comment.