Skip to content

Commit 949fa36

Browse files
committed
fixed plugin.yml to use simplenick.nick.set as the permission for commands, implemented permission check on nick, added /help output
1 parent 2a7c0e9 commit 949fa36

File tree

6 files changed

+54
-9
lines changed

6 files changed

+54
-9
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>adhdmc</groupId>
88
<artifactId>SimpleNicks</artifactId>
9-
<version>0.0.1</version>
9+
<version>0.0.2</version>
1010
<packaging>jar</packaging>
1111

1212
<name>SimpleNicks</name>

src/main/java/adhdmc/simplenicks/commands/subcommands/Help.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
package adhdmc.simplenicks.commands.subcommands;
22

3+
import adhdmc.simplenicks.SimpleNicks;
34
import adhdmc.simplenicks.commands.SubCommand;
5+
import adhdmc.simplenicks.config.Locale;
46
import adhdmc.simplenicks.util.SimpleNickPermission;
7+
import net.kyori.adventure.text.minimessage.MiniMessage;
8+
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
59
import org.bukkit.command.CommandSender;
610

711
import java.util.List;
812

913
public class Help extends SubCommand {
14+
MiniMessage miniMessage = SimpleNicks.getMiniMessage();
1015
public Help() {
1116
super("help", "Help command for SimpleNicks", "/nick help", SimpleNickPermission.NICK_COMMAND);
1217
}
1318

1419
@Override
1520
public void execute(CommandSender sender, String[] args) {
16-
sender.sendMessage("<gray>PLACEHOLDER: HELP COMMAND");
21+
sender.sendMessage(miniMessage.deserialize(Locale.Message.HELP_BASE.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage())));
22+
sender.sendMessage(miniMessage.deserialize(Locale.Message.HELP_SET.getMessage()));
23+
sender.sendMessage(miniMessage.deserialize(Locale.Message.HELP_RESET.getMessage()));
24+
sender.sendMessage(miniMessage.deserialize(Locale.Message.HELP_MINIMESSAGE.getMessage()));
1725
}
1826

1927
@Override

src/main/java/adhdmc/simplenicks/commands/subcommands/Set.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import net.kyori.adventure.text.Component;
99
import net.kyori.adventure.text.minimessage.MiniMessage;
1010
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
11+
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
1112
import org.bukkit.NamespacedKey;
1213
import org.bukkit.command.CommandSender;
1314
import org.bukkit.entity.Player;
@@ -85,7 +86,20 @@ public void execute(CommandSender sender, String[] args) {
8586
// Saves to PDC
8687
//temporary saving option
8788
String nickToSave = args[0];
88-
Component nickname = miniMessage.deserialize(args[0]);
89+
//TODO: config option for admin settings to be restricted to their own permissions
90+
Component nickname = null;
91+
if (sender.hasPermission(SimpleNickPermission.NICK_ADMIN.getPermission())) {
92+
nickname = miniMessage.deserialize(args[0]);
93+
} else {
94+
Component fullyParsed = miniMessage.deserialize(args[0]);
95+
Component permissionParsed = parseMessageContent(player, args[0]);
96+
if (fullyParsed.equals(permissionParsed)){
97+
nickname = permissionParsed;
98+
} else {
99+
sender.sendMessage(miniMessage.deserialize(Message.INVALID_TAGS.getMessage(), Placeholder.parsed("prefix", Message.PREFIX.getMessage())));
100+
return;
101+
}
102+
}
89103
player.getPersistentDataContainer().set(nickNameSave, PersistentDataType.STRING, nickToSave);
90104
//---
91105
player.displayName(nickname);
@@ -118,4 +132,17 @@ private void addValidTabOption(CommandSender sender, String arg, String option,
118132
if (option.startsWith(arg)) list.add(option);
119133
}
120134
}
135+
//Stolen from https://github.com/YouHaveTrouble/JustChat/blob/master/src/main/java/me/youhavetrouble/justchat/JustChatListener.java#L78
136+
private Component parseMessageContent(Player player, String rawMessage) {
137+
TagResolver.Builder tagResolver = TagResolver.builder();
138+
139+
for(SimpleNickPermission perm : SimpleNickPermission.values()) {
140+
if (player.hasPermission(perm.getPermission()) && perm.getTagResolver() != null) {
141+
tagResolver.resolver(perm.getTagResolver());
142+
}
143+
}
144+
MiniMessage nameParser = MiniMessage.builder().tags(tagResolver.build()).build();
145+
return nameParser.deserialize(rawMessage);
146+
}
147+
121148
}

src/main/java/adhdmc/simplenicks/config/Locale.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public enum Message {
2828
INVALID_PLAYER("<prefix><red>Invalid player specified"),
2929
INVALID_NICK_REGEX("<prefix><red>Not a valid nickname, must follow regex: " + Set.NICKNAME_REGEX),
3030
INVALID_NICK_TOO_LONG("<prefix><red>Nickname is too long, must be <=" + Set.MAX_NICKNAME_LENGTH),
31+
INVALID_TAGS("<prefix><red>You have used a color or formatting tag you do not have permission to use. Please try again"),
3132
//plugin messages
3233
PREFIX("<aqua>SimpleNicks <white>» "),
3334
NICK_CHANGED_SELF("<prefix><green>Changed your own nickname to <nickname>!"),
@@ -36,6 +37,10 @@ public enum Message {
3637
NICK_RESET_OTHER("<prefix><green>Reset <username>'s nickname."),
3738
//other
3839
VERSION("<prefix>yes"),
40+
HELP_BASE("<prefix><green>--------"),
41+
HELP_SET("<aqua>· <yellow>Setting a nickname: \n <gray>/nick set <nickname>"),
42+
HELP_RESET("<aqua>· <yellow>removing a nickname: \n <gray>/nick reset"),
43+
HELP_MINIMESSAGE("<aqua>· <yellow>Formatting: \n <gray>This plugin uses minimessage formatting. You can find a format viewer <aqua><u><click:open_url:'https://webui.adventure.kyori.net/'>here</click></u></aqua>"),
3944
CONFIG_RELOADED("<prefix><gold>SimpleNicks config and locale reloaded");
4045

4146
String message;
@@ -130,7 +135,12 @@ public void setLocaleDefaults() {
130135
locale.addDefault("invalid-player", "<prefix><red>Invalid player specified");
131136
locale.addDefault("invalid-nick-regex", "<prefix><red>Not a valid nickname, must follow regex: ");
132137
locale.addDefault("invalid-nick-too-long", "<prefix><red>Nickname is too long, must be <=");
138+
locale.addDefault("invalid-tags", "<prefix><red>You have used a color or formatting tag you do not have permission to use. Please try again");
133139
locale.addDefault("prefix", "<aqua>SimpleNicks <white>» ");
140+
locale.addDefault("help-base", "<prefix><green>--------");
141+
locale.addDefault("help-set","<aqua>· <yellow>Setting a nickname: \n <gray>/nick set <nickname>");
142+
locale.addDefault("help-reset","<aqua>· <yellow>removing a nickname: \n <gray>/nick reset");
143+
locale.addDefault("help-minimessage", "<aqua>· <yellow>Formatting: \n <gray>This plugin uses minimessage formatting. You can find a format viewer <aqua><u><click:open_url:'https://webui.adventure.kyori.net/'>here</click></u></aqua>");
134144
locale.addDefault("config-reload", "<prefix><gold>SimpleNicks config and locale reloaded");
135145
locale.addDefault("nick-changed-self", "<prefix><green>Changed your own nickname to <nickname>!");
136146
locale.addDefault("nick-changed-other", "<prefix><green>Changed <username>'s nickname to <nickname>");

src/main/java/adhdmc/simplenicks/util/SimpleNickPermission.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@ public enum SimpleNickPermission {
1515
NICK_BOLD("simplenick.nick.format.bold", StandardTags.decorations(TextDecoration.BOLD)),
1616
NICK_OBFUSCATED("simplenick.nick.format.obfuscated", StandardTags.decorations(TextDecoration.OBFUSCATED)),
1717
//Command Perms
18-
NICK_COMMAND("simplenick.nick.set"),
19-
NICK_ADMIN("simplenick.admin"),
20-
NICK_RESET("simplenick.nick.reset"),
21-
NICK_RELOAD("simplenick.reload"),
22-
NICK_USERNAME_BYPASS("simplenick.usernamebypass");
18+
NICK_COMMAND("simplenick.nick.set", null),
19+
NICK_ADMIN("simplenick.admin", null),
20+
NICK_RESET("simplenick.nick.reset", null),
21+
NICK_RELOAD("simplenick.reload", null),
22+
NICK_USERNAME_BYPASS("simplenick.usernamebypass", null);
2323

2424
private final String permission;
2525
private final TagResolver resolver;

src/main/resources/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ commands:
88
description: "Base command for SimpleNicks, Admin permission required to alter other's names."
99
aliases: [simplenicks, simplenick, snick]
1010
usage: "Usage: /nick [set|reset|help|reload] <name> [player]"
11-
permission: simplenick.nick
11+
permission: simplenick.nick.set
1212
permissions:
1313
simplenick.admin:
1414
description: allows user to set and reset other players' nicknames

0 commit comments

Comments
 (0)