Skip to content

Commit aeee71c

Browse files
committed
committing again
1 parent 15a79d4 commit aeee71c

File tree

7 files changed

+99
-60
lines changed

7 files changed

+99
-60
lines changed

src/main/java/simplexity/simplenicks/SimpleNicks.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.bukkit.plugin.java.JavaPlugin;
66
import simplexity.simplenicks.commands.CommandHandler;
77
import simplexity.simplenicks.commands.Reset;
8+
import simplexity.simplenicks.commands.Save;
89
import simplexity.simplenicks.commands.Set;
910
import simplexity.simplenicks.commands.SubCommand;
1011
import simplexity.simplenicks.config.ConfigHandler;
@@ -69,7 +70,7 @@ private void registerSubCommands() {
6970
subCommands.put("reset", new Reset("reset", Constants.NICK_RESET, Constants.NICK_RESET_OTHERS, false));
7071
//subCommands.put("help", new Help());
7172
subCommands.put("set", new Set("set", Constants.NICK_COMMAND, Constants.NICK_OTHERS_RESTRICTIVE, false));
72-
//subCommands.put("save", new Save());
73+
subCommands.put("save", new Save("save", Constants.NICK_SAVE, Constants.NICK_OTHERS_SAVE, false));
7374
//subCommands.put("delete", new Delete());
7475
}
7576

src/main/java/simplexity/simplenicks/commands/CommandHandler.java

Lines changed: 56 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ public class CommandHandler implements TabExecutor {
2222
@Override
2323
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
2424
if (args.length < 1) {
25-
sender.sendMessage(miniMessage.deserialize(LocaleHandler.getInstance().getNotEnoughArgs(),
26-
Placeholder.parsed("prefix", LocaleHandler.getInstance().getPluginPrefix())));
27-
25+
sendMessage(sender, LocaleHandler.getInstance().getNotEnoughArgs());
2826
return false;
2927
}
3028
if (args.length >= 2) {
31-
if (runningOnOther(sender, args)) {
29+
Player player = getPlayerFromArgs(args);
30+
if (player != null) {
31+
commandOnOther(sender, args, player);
3232
return true;
3333
}
3434
}
@@ -37,51 +37,41 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
3737

3838
}
3939

40-
private boolean runningOnOther(CommandSender sender, String[] args) {
41-
Player player = SimpleNicks.getInstance().getServer().getPlayer(args[1]);
42-
if (player != null) {
43-
commandOnOther(sender, args, player);
44-
return true;
45-
}
46-
return false;
40+
private Player getPlayerFromArgs(String[] args) {
41+
return SimpleNicks.getInstance().getServer().getPlayer(args[1]);
4742
}
4843

4944
private void commandOnOther(CommandSender sender, String[] args, Player player) {
5045
String command = args[0].toLowerCase();
51-
if (!SimpleNicks.getSubCommands().containsKey(command)) {
52-
sender.sendMessage(miniMessage.deserialize(LocaleHandler.getInstance().getInvalidCommand(),
53-
Placeholder.parsed("prefix", LocaleHandler.getInstance().getPluginPrefix())));
46+
SubCommand subCommand = SimpleNicks.getSubCommands().get(command);
47+
if (subCommand == null) {
48+
sendMessage(sender, LocaleHandler.getInstance().getInvalidCommand());
5449
return;
5550
}
56-
SubCommand subCommand = SimpleNicks.getSubCommands().get(command);
5751
if (!sender.hasPermission(subCommand.adminPermission)) {
58-
sender.sendMessage(miniMessage.deserialize(LocaleHandler.getInstance().getNoPermission(),
59-
Placeholder.parsed("prefix", LocaleHandler.getInstance().getPluginPrefix())));
52+
sendMessage(sender, LocaleHandler.getInstance().getNoPermission());
6053
return;
6154
}
6255
subCommand.executeOnOther(sender, player, args);
6356
}
6457

6558
private void commandOnSelf(CommandSender sender, String[] args) {
6659
String command = args[0].toLowerCase();
67-
Player player = null;
68-
if (!SimpleNicks.getSubCommands().containsKey(command)) {
69-
sender.sendMessage(miniMessage.deserialize(LocaleHandler.getInstance().getInvalidCommand(),
70-
Placeholder.parsed("prefix", LocaleHandler.getInstance().getPluginPrefix())));
60+
SubCommand subCommand = SimpleNicks.getSubCommands().get(command);
61+
if (subCommand == null) {
62+
sendMessage(sender, LocaleHandler.getInstance().getInvalidCommand());
7163
return;
7264
}
73-
SubCommand subCommand = SimpleNicks.getSubCommands().get(command);
7465
if (!sender.hasPermission(subCommand.basicPermission)) {
75-
sender.sendMessage(miniMessage.deserialize(LocaleHandler.getInstance().getNoPermission(),
76-
Placeholder.parsed("prefix", LocaleHandler.getInstance().getPluginPrefix())));
66+
sendMessage(sender, LocaleHandler.getInstance().getNoPermission());
7767
return;
7868
}
69+
Player player = null;
7970
if (sender instanceof Player) {
8071
player = (Player) sender;
8172
}
8273
if (player == null && !subCommand.canRunWithoutPlayer()) {
83-
sender.sendMessage(miniMessage.deserialize(LocaleHandler.getInstance().getMustBePlayer(),
84-
Placeholder.parsed("prefix", LocaleHandler.getInstance().getPluginPrefix())));
74+
sendMessage(sender, LocaleHandler.getInstance().getMustBePlayer());
8575
return;
8676
}
8777
subCommand.executeOnSelf(sender, player, args);
@@ -91,31 +81,58 @@ private void commandOnSelf(CommandSender sender, String[] args) {
9181
@Override
9282
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
9383
tabComplete.clear();
94-
int argsLength = args.length;
95-
switch (argsLength) {
84+
Player player = getPlayerForTabComplete(sender, args);
85+
switch (args.length) {
9686
case 0, 1 -> {
97-
for (String key : SimpleNicks.getSubCommands().keySet()) {
98-
if (sender.hasPermission(SimpleNicks.getSubCommands().get(key).basicPermission) ||
99-
sender.hasPermission(SimpleNicks.getSubCommands().get(key).getAdminPermission())) {
100-
tabComplete.add(key);
101-
}
102-
}
87+
addSubCommandsToTabComplete(sender);
10388
}
10489
case 2 -> {
90+
SubCommand subCommand = SimpleNicks.getSubCommands().get(args[0].toLowerCase());
10591
if (SimpleNicks.getSubCommands().containsKey(args[0].toLowerCase())) {
106-
SubCommand subCommand = SimpleNicks.getSubCommands().get(args[0].toLowerCase());
107-
if (sender.hasPermission(subCommand.adminPermission)) {
92+
if (sender.hasPermission(subCommand.adminPermission) && (player != null)) {
10893
return null;
94+
} else {
95+
return subCommand.tabComplete(sender, args, player);
10996
}
11097
}
11198
}
11299
case 3 -> {
113-
if (SimpleNicks.getSubCommands().containsKey(args[0].toLowerCase())) {
114-
SubCommand subCommand = SimpleNicks.getSubCommands().get(args[0].toLowerCase());
115-
return subCommand.tabComplete(sender);
100+
SubCommand subCommand = SimpleNicks.getSubCommands().get(args[0].toLowerCase());
101+
if (subCommand == null) {
102+
return null;
116103
}
104+
return subCommand.tabComplete(sender, args, player);
117105
}
118106
}
107+
119108
return tabComplete;
120109
}
110+
111+
private Player getPlayerForTabComplete(CommandSender sender, String[] args) {
112+
if (args.length < 2) {
113+
return null;
114+
}
115+
Player player = getPlayerFromArgs(args);
116+
if (player != null) {
117+
return player;
118+
}
119+
if (sender instanceof Player playerSender) {
120+
return playerSender;
121+
}
122+
return null;
123+
}
124+
125+
private void addSubCommandsToTabComplete(CommandSender sender) {
126+
for (String key : SimpleNicks.getSubCommands().keySet()) {
127+
SubCommand subCommand = SimpleNicks.getSubCommands().get(key);
128+
if (sender.hasPermission(subCommand.basicPermission) || sender.hasPermission(subCommand.adminPermission)) {
129+
tabComplete.add(key);
130+
}
131+
}
132+
}
133+
134+
private void sendMessage(CommandSender sender, String message) {
135+
sender.sendMessage(miniMessage.deserialize(message,
136+
Placeholder.parsed("prefix", LocaleHandler.getInstance().getPluginPrefix())));
137+
}
121138
}

src/main/java/simplexity/simplenicks/commands/Reset.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public void resetName(Player player) {
3535
}
3636

3737
@Override
38-
public ArrayList<String> tabComplete(CommandSender sender) {
38+
public ArrayList<String> tabComplete(CommandSender sender, String[] args, Player playerPlaceholder) {
3939
return null;
4040
}
4141
}

src/main/java/simplexity/simplenicks/commands/Save.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public boolean savePlayerNick(Player player) {
4848
}
4949

5050
@Override
51-
public ArrayList<String> tabComplete(CommandSender sender) {
51+
public ArrayList<String> tabComplete(CommandSender sender, String[] args, Player playerPlaceholder) {
5252
return null;
5353
}
5454
}

src/main/java/simplexity/simplenicks/commands/Set.java

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
import org.bukkit.entity.Player;
99
import org.bukkit.permissions.Permission;
1010
import simplexity.simplenicks.config.LocaleHandler;
11+
import simplexity.simplenicks.util.Constants;
1112
import simplexity.simplenicks.util.NickHandler;
1213
import simplexity.simplenicks.util.TagPermission;
1314

1415
import java.util.ArrayList;
16+
import java.util.List;
1517

1618
public class Set extends SubCommand {
1719
MiniMessage serializer = MiniMessage.builder().tags(TagResolver.empty()).build();
@@ -22,12 +24,19 @@ public Set(String commandName, Permission basicPermission, Permission adminPermi
2224

2325
@Override
2426
public void executeOnOther(CommandSender sender, Player player, String[] args) {
25-
if (args.length < 3) {
26-
sender.sendMessage(parsedMessage(sender, player, LocaleHandler.getInstance().getNotEnoughArgs(), ""));
27+
if (!validateArgsLength(sender, player, args, 3)) {
2728
return;
2829
}
2930
String nickname = args[2];
30-
if (setPlayerNick(player, nickname)){
31+
Component nickComponent = Component.empty();
32+
if (sender.hasPermission(Constants.NICK_OTHERS_FULL)) {
33+
nickComponent = miniMessage.deserialize(nickname);
34+
} else if (sender.hasPermission(Constants.NICK_OTHERS_BASIC)) {
35+
nickComponent = getNickComponent(sender, nickname);
36+
} else if (sender.hasPermission(Constants.NICK_OTHERS_RESTRICTIVE)){
37+
nickComponent = getNickComponent(player, nickname);
38+
}
39+
if (setPlayerNick(player, nickComponent)) {
3140
sender.sendMessage(parsedMessage(sender, player, LocaleHandler.getInstance().getChangedOther(), nickname));
3241
player.sendMessage(parsedMessage(sender, player, LocaleHandler.getInstance().getChangedByOther(), nickname));
3342
} else {
@@ -37,20 +46,17 @@ public void executeOnOther(CommandSender sender, Player player, String[] args) {
3746

3847
@Override
3948
public void executeOnSelf(CommandSender sender, Player player, String[] args) {
40-
if (args.length < 2) {
41-
player.sendMessage(parsedMessage(sender, player, LocaleHandler.getInstance().getNotEnoughArgs(), ""));
42-
return;
43-
}
49+
if (!validateArgsLength(sender, player, args, 2)) return;
4450
String nickname = args[1];
45-
if (setPlayerNick(player, nickname)){
51+
Component nickComponent = getNickComponent(sender, nickname);
52+
if (setPlayerNick(player, nickComponent)) {
4653
player.sendMessage(parsedMessage(sender, player, LocaleHandler.getInstance().getChangedSelf(), nickname));
4754
} else {
4855
player.sendMessage(parsedMessage(sender, player, LocaleHandler.getInstance().getInvalidTags(), nickname));
4956
}
5057
}
5158

52-
private boolean setPlayerNick(Player player, String nickname) {
53-
Component nickComponent = getNickComponent(player, nickname);
59+
private boolean setPlayerNick(Player player, Component nickComponent) {
5460
if (nickComponent == null) {
5561
return false;
5662
}
@@ -59,25 +65,38 @@ private boolean setPlayerNick(Player player, String nickname) {
5965
return true;
6066
}
6167

68+
private boolean validateArgsLength(CommandSender sender, Player player, String[] args, int minArgsLength) {
69+
if (args.length < minArgsLength) {
70+
parsedMessage(sender, player, LocaleHandler.getInstance().getNotEnoughArgs(), "");
71+
return false;
72+
}
73+
return true;
74+
}
75+
76+
6277
@Override
63-
public ArrayList<String> tabComplete(CommandSender sender) {
64-
return null;
78+
public ArrayList<String> tabComplete(CommandSender sender, String[] args, Player playerPlaceholder) {
79+
if (playerPlaceholder == null) {
80+
return null;
81+
}
82+
List<String> savedNickNames = NickHandler.getInstance().getSavedNicknames(playerPlaceholder);
83+
return (ArrayList<String>) savedNickNames;
6584
}
6685

67-
private Component getNickComponent(Player player, String nick) {
68-
int i = 0;
86+
private Component getNickComponent(CommandSender user, String nick) {
87+
int permissionCount = 0;
6988
String strippedMessage = miniMessage.stripTags(nick);
7089
TagResolver.Builder resolverBuilder = TagResolver.builder();
7190
Component finalNick = null;
7291
for (TagPermission tagPermission : TagPermission.values()) {
73-
if (!player.hasPermission(tagPermission.getPermission())) {
92+
if (!user.hasPermission(tagPermission.getPermission())) {
7493
continue;
7594
}
76-
i++;
95+
permissionCount++;
7796
resolverBuilder.resolver(tagPermission.getTagResolver());
7897
finalNick = serializer.deserialize(nick, tagPermission.getTagResolver());
7998
}
80-
if (i == 0) {
99+
if (permissionCount == 0) {
81100
return Component.text(strippedMessage);
82101
}
83102
String plainNick = PlainTextComponentSerializer.plainText().serialize(finalNick);
@@ -86,4 +105,5 @@ private Component getNickComponent(Player player, String nick) {
86105
}
87106
return finalNick;
88107
}
108+
89109
}

src/main/java/simplexity/simplenicks/commands/SubCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public SubCommand(String commandName, Permission basicPermission, Permission adm
2929

3030
public abstract void executeOnSelf(CommandSender sender, Player player, String[] args);
3131

32-
public abstract ArrayList<String> tabComplete(CommandSender sender);
32+
public abstract ArrayList<String> tabComplete(CommandSender sender, String[] args, Player playerPlaceholder);
3333

3434
public String getCommandName() {
3535
return commandName;

src/main/java/simplexity/simplenicks/util/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class Constants {
1010
public static Permission NICK_RESET_OTHERS = new Permission("simplenick.admin.reset");
1111
public static Permission NICK_RESET = new Permission("simplenick.nick.reset");
1212
public static Permission NICK_SAVE = new Permission("simplenick.save");
13+
public static Permission NICK_OTHERS_SAVE = new Permission("simplenick.admin.save");
1314
public static Permission NICK_DELETE = new Permission("simplenick.delete");
1415
public static Permission NICK_RELOAD = new Permission("simplenick.reload");
1516
public static Permission NICK_USERNAME_BYPASS = new Permission("simplenick.usernamebypass");

0 commit comments

Comments
 (0)