diff --git a/src/main/java/dev/unnm3d/redischat/Permissions.java b/src/main/java/dev/unnm3d/redischat/Permissions.java index 7608241..fe94907 100644 --- a/src/main/java/dev/unnm3d/redischat/Permissions.java +++ b/src/main/java/dev/unnm3d/redischat/Permissions.java @@ -30,6 +30,7 @@ public enum Permissions { CHANNEL_PREFIX("redischat.channel."), CHANNEL_PUBLIC("redischat.channel.public"), CHANNEL_CREATE("redischat.createchannel"), + CHANNEL_CHANGE_DISPLAYNAME("redischat.changedisplayname"), CHANNEL_DELETE("redischat.deletechannel"), CHANNEL_TOGGLE_PLAYER("redischat.playerchannel"), CHANNEL_LIST("redischat.listchannel"), diff --git a/src/main/java/dev/unnm3d/redischat/channels/ChannelCommand.java b/src/main/java/dev/unnm3d/redischat/channels/ChannelCommand.java index 4811331..6f466ed 100644 --- a/src/main/java/dev/unnm3d/redischat/channels/ChannelCommand.java +++ b/src/main/java/dev/unnm3d/redischat/channels/ChannelCommand.java @@ -19,6 +19,7 @@ public CommandAPICommand getCommand() { return new CommandAPICommand("channel") .withAliases(plugin.config.getCommandAliases("channel")) .withSubcommand(getCreateSubCommand()) + .withSubcommand(getSetDisplayNameCommand()) .withSubcommand(getSetFormatSubCommand()) .withSubcommand(getDeleteSubCommand()) .withSubcommand(getListenSubCommand()) @@ -129,6 +130,24 @@ public CommandAPICommand getSetFormatSubCommand() { }); } + public CommandAPICommand getSetDisplayNameCommand() { + return new CommandAPICommand("setdisplayname") + .withPermission(Permissions.CHANNEL_CHANGE_DISPLAYNAME.getPermission()) + .withArguments(new StringArgument("name") + .replaceSuggestions(ArgumentSuggestions.strings(commandSenderSuggestionInfo -> + plugin.getChannelManager().getRegisteredChannels().keySet().stream() + .filter(s -> s.toLowerCase().startsWith(commandSenderSuggestionInfo.currentArg())) + .toArray(String[]::new) + ))) + .withArguments(new GreedyStringArgument("displayname")) + .executesPlayer((sender, args) -> { + Channel channel = plugin.getChannelManager().getRegisteredChannels().get((String) args.get(0)); + channel.setDisplayName((String) args.get(1)); + plugin.getChannelManager().registerChannel(channel); + plugin.messages.sendMessage(sender, plugin.messages.channelChangedDisplayName.replace("%displayname%", (String) args.get(1))); + }); + } + public CommandAPICommand getListenSubCommand() { return new CommandAPICommand("force-listen") .withPermission(Permissions.CHANNEL_TOGGLE_PLAYER.getPermission()) diff --git a/src/main/java/dev/unnm3d/redischat/settings/Messages.java b/src/main/java/dev/unnm3d/redischat/settings/Messages.java index 60ecee4..0fa1988 100644 --- a/src/main/java/dev/unnm3d/redischat/settings/Messages.java +++ b/src/main/java/dev/unnm3d/redischat/settings/Messages.java @@ -75,6 +75,7 @@ public final class Messages { public String itemSet = "RedisChat » Item set!"; public String noPermission = "RedisChat » You do not have permission to execute this command"; public String channelCreated = "RedisChat » Channel created!"; + public String channelChangedDisplayName = "RedisChat » Channel changed name to %displayname%!"; public String channelRemoved = "RedisChat » Channel removed!"; public String channelListHeader = "Channel list:"; public String channelListTransmitting = "%channel% Status: Transmitting";