Skip to content

Commit ab392fb

Browse files
committed
Added a username check
Added permissions and defaults in plugin.yml added feedback for /nick reset
1 parent d8eab2c commit ab392fb

File tree

7 files changed

+106
-43
lines changed

7 files changed

+106
-43
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.0</version>
9+
<version>0.0.1</version>
1010
<packaging>jar</packaging>
1111

1212
<name>SimpleNicks</name>

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,30 @@
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 Reload extends SubCommand {
14+
MiniMessage miniMessage = SimpleNicks.getMiniMessage();
1015
public Reload() {
1116
super("reload", "Reloads SimpleNicks Config and Locale", "/nick reload", SimpleNickPermission.NICK_RELOAD);
1217
}
1318

1419
@Override
1520
public void execute(CommandSender sender, String[] args) {
21+
if (!sender.hasPermission(SimpleNickPermission.NICK_RELOAD.getPermission())){
22+
sender.sendMessage(miniMessage.deserialize(Locale.Message.NO_PERMISSION.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage())));
23+
return;
24+
}
25+
Locale.getInstance().reloadConfig();
26+
sender.sendMessage(miniMessage.deserialize(Locale.Message.CONFIG_RELOADED.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage())));
27+
1628

1729
}
1830

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import adhdmc.simplenicks.SimpleNicks;
44
import adhdmc.simplenicks.commands.SubCommand;
5+
import adhdmc.simplenicks.config.Locale;
56
import adhdmc.simplenicks.config.Locale.Message;
67
import adhdmc.simplenicks.util.SimpleNickPermission;
78
import net.kyori.adventure.text.minimessage.MiniMessage;
9+
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
810
import org.bukkit.command.CommandSender;
911
import org.bukkit.entity.Player;
1012
import org.bukkit.persistence.PersistentDataType;
@@ -22,35 +24,36 @@ public void execute(CommandSender sender, String[] args) {
2224

2325
// Player Check
2426
if (!(sender instanceof Player)) {
25-
sender.sendMessage(miniMessage.deserialize(Message.CONSOLE_CANNOT_RUN.getMessage())); // Invalid Usage (Not a Player)
27+
sender.sendMessage(miniMessage.deserialize(Message.CONSOLE_CANNOT_RUN.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage()))); // Invalid Usage (Not a Player)
2628
return;
2729
}
2830
// Arguments Check
2931
if (args.length > 1) {
30-
sender.sendMessage(miniMessage.deserialize(Message.TOO_MANY_ARGUMENTS.getMessage())); // Too Many Arguments
32+
sender.sendMessage(miniMessage.deserialize(Message.TOO_MANY_ARGUMENTS.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage()))); // Too Many Arguments
3133
return;
3234
}
33-
// TODO: Pull permissions from a common place.
35+
// Admin Check
3436
if (args.length == 1 && !sender.hasPermission(SimpleNickPermission.NICK_ADMIN.getPermission())) {
35-
sender.sendMessage(miniMessage.deserialize(Message.NO_PERMISSION.getMessage())); // No Permission
37+
sender.sendMessage(miniMessage.deserialize(Message.NO_PERMISSION.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage()))); // No Permission
3638
return;
3739
}
3840
// Valid Player Check
3941
Player player = (args.length == 0) ? (Player) sender : SimpleNicks.getInstance().getServer().getPlayer(args[0]);
4042
if (player == null) {
41-
sender.sendMessage(miniMessage.deserialize(Message.INVALID_PLAYER.getMessage())); // Invalid Player
43+
sender.sendMessage(miniMessage.deserialize(Message.INVALID_PLAYER.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage()))); // Invalid Player
4244
return;
4345
}
4446
if (sender == player && !sender.hasPermission(SimpleNickPermission.NICK_RESET.getPermission())) {
45-
sender.sendMessage(miniMessage.deserialize(Message.TOO_MANY_ARGUMENTS.getMessage())); // No Permission
47+
sender.sendMessage(miniMessage.deserialize(Message.TOO_MANY_ARGUMENTS.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage()))); // No Permission
4648
return;
4749
}
4850
// Set Nickname
49-
// TODO: Save to Player
51+
// Saved to player
5052
String playerPDCString = player.getPersistentDataContainer().get(Set.nickNameSave, PersistentDataType.STRING);
5153
if (playerPDCString != null)
5254
player.getPersistentDataContainer().remove(Set.nickNameSave); //held name for temp saving option
5355
player.displayName(miniMessage.deserialize(player.getName()));
56+
player.sendMessage(miniMessage.deserialize(Message.NICK_RESET_SELF.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage())));
5457
}
5558

5659
@Override

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import adhdmc.simplenicks.SimpleNicks;
44
import adhdmc.simplenicks.commands.SubCommand;
5+
import adhdmc.simplenicks.config.Locale;
56
import adhdmc.simplenicks.config.Locale.Message;
67
import adhdmc.simplenicks.util.SimpleNickPermission;
78
import net.kyori.adventure.text.Component;
@@ -10,6 +11,7 @@
1011
import org.bukkit.NamespacedKey;
1112
import org.bukkit.command.CommandSender;
1213
import org.bukkit.entity.Player;
14+
import org.bukkit.permissions.Permission;
1315
import org.bukkit.persistence.PersistentDataType;
1416

1517
import java.util.ArrayList;
@@ -46,7 +48,6 @@ public void execute(CommandSender sender, String[] args) {
4648
sender.sendMessage(miniMessage.deserialize(Message.TOO_MANY_ARGUMENTS.getMessage())); // Too Many Arguments
4749
return;
4850
}
49-
// TODO: Pull permissions from a common place.
5051
if (args.length == 2 && !sender.hasPermission(SimpleNickPermission.NICK_ADMIN.getPermission())) {
5152
sender.sendMessage(miniMessage.deserialize(Message.NO_PERMISSION.getMessage())); // No Permission
5253
return;
@@ -61,30 +62,34 @@ public void execute(CommandSender sender, String[] args) {
6162
// TODO: Allow regex to be modifiable by config.
6263
// TODO: Check if the person has permissions to use the tags, perms & their connected tags are in ConfigDefaults - RhythmicSys
6364
if (!nicknameStripped.matches(NICKNAME_REGEX)) {
64-
sender.sendMessage(miniMessage.deserialize(Message.INVALID_NICK_REGEX.getMessage())); // Non-Alphanumeric Nickname
65+
sender.sendMessage(miniMessage.deserialize(Message.INVALID_NICK_REGEX.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage()))); // Non-Alphanumeric Nickname
6566
return;
6667
}
6768
if (nicknameStripped.length() > MAX_NICKNAME_LENGTH) {
68-
sender.sendMessage(miniMessage.deserialize(Message.INVALID_NICK_TOO_LONG.getMessage())); // Nickname Too Long
69+
sender.sendMessage(miniMessage.deserialize(Message.INVALID_NICK_TOO_LONG.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage()))); // Nickname Too Long
6970
return;
7071
}
71-
7272
// Valid Player Check
7373
Player player = (args.length == 1) ? (Player) sender : SimpleNicks.getInstance().getServer().getPlayer(args[1]);
7474
if (player == null) {
75-
sender.sendMessage(miniMessage.deserialize(Message.INVALID_PLAYER.getMessage())); // Invalid Player
75+
sender.sendMessage(miniMessage.deserialize(Message.INVALID_PLAYER.getMessage(), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage()))); // Invalid Player
76+
return;
77+
}
78+
// Check against cached usernames
79+
if (!player.hasPermission(SimpleNickPermission.NICK_USERNAME_BYPASS.getPermission()) && (SimpleNicks.getInstance().getServer().getOfflinePlayerIfCached(nicknameStripped) != null) && !(nicknameStripped.equals(player.getName()))){
80+
sender.sendMessage(miniMessage.deserialize(Message.CANNOT_NICK_USERNAME.getMessage(), Placeholder.parsed("name", nicknameStripped), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage())));
7681
return;
7782
}
7883

7984
// Set Nickname
80-
// TODO: Save to Player
85+
// Saves to PDC
8186
//temporary saving option
8287
String nickToSave = args[0];
8388
Component nickname = miniMessage.deserialize(args[0]);
8489
player.getPersistentDataContainer().set(nickNameSave, PersistentDataType.STRING, nickToSave);
8590
//---
8691
player.displayName(nickname);
87-
player.sendMessage(miniMessage.deserialize(Message.NICK_CHANGED_SELF.getMessage(), Placeholder.component("nickname", nickname)));
92+
player.sendMessage(miniMessage.deserialize(Message.NICK_CHANGED_SELF.getMessage(), Placeholder.component("nickname", nickname), Placeholder.parsed("prefix", Locale.Message.PREFIX.getMessage())));
8893
}
8994

9095
@Override
@@ -103,6 +108,7 @@ public List<String> getSubcommandArguments(CommandSender sender, String[] args)
103108
addValidTabOption(sender, args[0], "<gradient:dark_purple:blue>" + name, SimpleNickPermission.NICK_GRADIENT, tabComplete);
104109
addValidTabOption(sender, args[0], "<#FFC0CB>" + name, SimpleNickPermission.NICK_COLOR, tabComplete);
105110
addValidTabOption(sender, args[0], "<blue>" + name, SimpleNickPermission.NICK_COLOR, tabComplete);
111+
addValidTabOption(sender, args[0], "<rainbow>" + name, SimpleNickPermission.NICK_RAINBOW, tabComplete);
106112
}
107113
return tabComplete;
108114
}

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

Lines changed: 29 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,24 @@ public class Locale {
1919

2020
public enum Message {
2121
//errors
22-
INVALID_COMMAND("<red>Invalid Command."),
23-
NO_ARGUMENTS("<red>No arguments provided."),
24-
TOO_MANY_ARGUMENTS("<red>Too many arguments provided."),
25-
NO_PERMISSION("<red>You do not have permission to run this command"),
26-
CONSOLE_CANNOT_RUN("<red>This command cannot be run on the Console."),
27-
INVALID_PLAYER("<red>Invalid player specified"),
28-
INVALID_NICK_REGEX("<red>Not a valid nickname, must follow regex: " + Set.NICKNAME_REGEX),
29-
INVALID_NICK_TOO_LONG("<red>Nickname is too long, must be <=" + Set.MAX_NICKNAME_LENGTH),
22+
INVALID_COMMAND("<prefix><red>Invalid Command."),
23+
NO_ARGUMENTS("<prefix><red>No arguments provided."),
24+
TOO_MANY_ARGUMENTS("<prefix><red>Too many arguments provided."),
25+
CANNOT_NICK_USERNAME("<prefix><red>You cannot name yourself <name>, as that is the username of another player on this server. Pick another name"),
26+
NO_PERMISSION("<prefix><red>You do not have permission to run this command"),
27+
CONSOLE_CANNOT_RUN("<prefix><red>This command cannot be run on the Console."),
28+
INVALID_PLAYER("<prefix><red>Invalid player specified"),
29+
INVALID_NICK_REGEX("<prefix><red>Not a valid nickname, must follow regex: " + Set.NICKNAME_REGEX),
30+
INVALID_NICK_TOO_LONG("<prefix><red>Nickname is too long, must be <=" + Set.MAX_NICKNAME_LENGTH),
3031
//plugin messages
3132
PREFIX("<aqua>SimpleNicks <white>» "),
32-
NICK_CHANGED_SELF("<green>Changed your own nickname to <nickname>!"),
33-
NICK_CHANGED_OTHER("<green>Changed <username>'s nickname to <nickname>"),
34-
NICK_RESET_SELF("<green>Reset your own nickname!"),
35-
NICK_RESET_OTHER("<green>Reset <username>'s nickname."),
33+
NICK_CHANGED_SELF("<prefix><green>Changed your own nickname to <nickname>!"),
34+
NICK_CHANGED_OTHER("<prefix><green>Changed <username>'s nickname to <nickname>"),
35+
NICK_RESET_SELF("<prefix><green>Reset your own nickname!"),
36+
NICK_RESET_OTHER("<prefix><green>Reset <username>'s nickname."),
3637
//other
37-
VERSION("yes");
38+
VERSION("<prefix>yes"),
39+
CONFIG_RELOADED("<prefix><gold>SimpleNicks config and locale reloaded");
3840

3941
String message;
4042

@@ -119,19 +121,21 @@ public void loadLocaleMessages() {
119121

120122
public void setLocaleDefaults() {
121123
FileConfiguration locale = getLocaleConfig();
122-
locale.addDefault("invalid-command", "<red>Invalid command.");
123-
locale.addDefault("no-arguments", "<red>No arguments provided.");
124-
locale.addDefault("too-many-arguments", "<red>Too many arguments provided.");
125-
locale.addDefault("no-permission", "<red>You do not have permission to run this command");
126-
locale.addDefault("console-cannot-run", "<red>This command cannot be run on the Console.");
127-
locale.addDefault("invalid-player", "<red>Invalid player specified");
128-
locale.addDefault("invalid-nick-regex", "<red>Not a valid nickname, must follow regex: ");
129-
locale.addDefault("invalid-nick-too-long", "<red>Nickname is too long, must be <=");
124+
locale.addDefault("invalid-command", "<prefix><red>Invalid command.");
125+
locale.addDefault("no-arguments", "<prefix><red>No arguments provided.");
126+
locale.addDefault("too-many-arguments", "<prefix><red>Too many arguments provided.");
127+
locale.addDefault("cant-nick-username", "<prefix><red>You cannot name yourself <name>, as that is the username of another player on this server. Pick another name");
128+
locale.addDefault("no-permission", "<prefix><red>You do not have permission to run this command");
129+
locale.addDefault("console-cannot-run", "<prefix><red>This command cannot be run on the Console.");
130+
locale.addDefault("invalid-player", "<prefix><red>Invalid player specified");
131+
locale.addDefault("invalid-nick-regex", "<prefix><red>Not a valid nickname, must follow regex: ");
132+
locale.addDefault("invalid-nick-too-long", "<prefix><red>Nickname is too long, must be <=");
130133
locale.addDefault("prefix", "<aqua>SimpleNicks <white>» ");
131-
locale.addDefault("nick-changed-self", "<green>Changed your own nickname to <nickname>!");
132-
locale.addDefault("nick-changed-other", "<green>Changed <username>'s nickname to <nickname>");
133-
locale.addDefault("nick-reset-self", "<green>Reset your own nickname!");
134-
locale.addDefault("nick-reset-other", "<green>Reset <username>'s nickname.");
134+
locale.addDefault("config-reload", "<prefix><gold>SimpleNicks config and locale reloaded");
135+
locale.addDefault("nick-changed-self", "<prefix><green>Changed your own nickname to <nickname>!");
136+
locale.addDefault("nick-changed-other", "<prefix><green>Changed <username>'s nickname to <nickname>");
137+
locale.addDefault("nick-reset-self", "<prefix><green>Reset your own nickname!");
138+
locale.addDefault("nick-reset-other", "<prefix><green>Reset <username>'s nickname.");
135139
}
136140
}
137141

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ public enum SimpleNickPermission {
99
NICK_COLOR("simplenick.nick.color", StandardTags.color()),
1010
NICK_GRADIENT("simplenick.nick.gradient", StandardTags.gradient()),
1111
NICK_RAINBOW("simplenick.nick.rainbow", StandardTags.rainbow()),
12-
NICK_FORMAT("simplenick.nick.format"),
1312
NICK_UNDERLINE("simplenick.nick.format.underline", StandardTags.decorations(TextDecoration.UNDERLINED)),
1413
NICK_ITALIC("simplenick.nick.format.italic", StandardTags.decorations(TextDecoration.ITALIC)),
1514
NICK_STRIKETHROUGH("simplenick.nick.format.strikethrough", StandardTags.decorations(TextDecoration.STRIKETHROUGH)),
@@ -19,7 +18,8 @@ public enum SimpleNickPermission {
1918
NICK_COMMAND("simplenick.nick"),
2019
NICK_ADMIN("simplenick.admin"),
2120
NICK_RESET("simplenick.nick.reset"),
22-
NICK_RELOAD("simplenick.reload");
21+
NICK_RELOAD("simplenick.reload"),
22+
NICK_USERNAME_BYPASS("simplenick.usernamebypass");
2323

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

src/main/resources/plugin.yml

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,42 @@ commands:
77
nick:
88
description: "Base command for SimpleNicks, Admin permission required to alter other's names."
99
aliases: [simplenicks, simplenick, snick]
10-
usage: "Usage: /nick [set|reset|help|reload] <name> [player]"
10+
usage: "Usage: /nick [set|reset|help|reload] <name> [player]"
11+
permission: simplenick.nick
12+
permissions:
13+
simplenick.admin:
14+
description: allows user to set and reset other players' nicknames
15+
default: op
16+
simplenick.reload:
17+
description: allows a user to reload the locale and config of this plugin
18+
default: op
19+
simplenick.usernamebypass:
20+
description: allows user to nickname themselves another person's username
21+
default: false
22+
simplenick.nick:
23+
description: allows usage of the /nick command
24+
default: op
25+
simplenick.nick.reset:
26+
description: allows a user to reset their own nickname
27+
default: op
28+
simplenick.nick.color:
29+
description: allows color codes to be used in a nickname
30+
default: op
31+
simplenick.nick.gradient:
32+
description: allows gradients to be used in a nickname
33+
default: op
34+
simplenick.nick.rainbow:
35+
description: allows the rainbow tag to be used in a nickname
36+
default: op
37+
simplenicks.nick.format.italic:
38+
description: allows the italic formatting tag to be used in a nickname
39+
default: op
40+
simplenicks.nick.format.strikethrough:
41+
description: allows the strikethrough formatting tag to be used in a nickname
42+
default: op
43+
simplenicks.nick.format.bold:
44+
description: allows the bold format tag to be used in a nickname
45+
default: op
46+
simplenicks.nick.format.obfuscated:
47+
description: allows the obfuscated format tag to be used in a nickname
48+
default: op

0 commit comments

Comments
 (0)