Skip to content

Commit 02f5f80

Browse files
committed
Fix Command Parsing and Config Loader
So apparently the config reload was never working cause we never reloaded the plugin instance's config. Oops. Command is now parsed to consider things within double quotes as a single argument. To use double quotes, use \" for escaping quotes. To escape the escape character use \\. Updated API versions.
1 parent b0398e6 commit 02f5f80

3 files changed

Lines changed: 40 additions & 5 deletions

File tree

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,13 @@
7171
<dependency>
7272
<groupId>io.papermc.paper</groupId>
7373
<artifactId>paper-api</artifactId>
74-
<version>1.19.2-R0.1-SNAPSHOT</version>
74+
<version>1.20.4-R0.1-SNAPSHOT</version>
7575
<scope>provided</scope>
7676
</dependency>
7777
<dependency>
7878
<groupId>me.clip</groupId>
7979
<artifactId>placeholderapi</artifactId>
80-
<version>2.11.2</version>
80+
<version>2.11.5</version>
8181
<scope>provided</scope>
8282
</dependency>
8383
</dependencies>

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

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,21 @@ public class CommandHandler implements CommandExecutor, TabCompleter {
1414
@Override
1515
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
1616
MiniMessage miniMessage = SimpleNicks.getMiniMessage();
17+
18+
String[] parsedArgs = parseArgs(args);
19+
1720
// Arguments Check
18-
if (args.length == 0) {
21+
if (parsedArgs.length == 0) {
1922
sender.sendMessage(miniMessage.deserialize(SNMessage.INVALID_COMMAND.getMessage())); // Invalid Arguments
2023
return true;
2124
}
2225
// Execute Command
23-
SubCommand subCommand = SimpleNicks.getSubCommands().getOrDefault(args[0].toLowerCase(Locale.ENGLISH), null);
26+
SubCommand subCommand = SimpleNicks.getSubCommands().getOrDefault(parsedArgs[0].toLowerCase(Locale.ENGLISH), null);
2427
if (subCommand == null) {
2528
sender.sendMessage(miniMessage.deserialize(SNMessage.INVALID_COMMAND.getMessage())); // Invalid SubCommand
2629
return true;
2730
}
28-
subCommand.execute(sender, Arrays.copyOfRange(args, 1, args.length));
31+
subCommand.execute(sender, Arrays.copyOfRange(parsedArgs, 1, parsedArgs.length));
2932
return true;
3033
}
3134

@@ -48,5 +51,36 @@ public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Comman
4851
}
4952
return tabComplete;
5053
}
54+
55+
private String[] parseArgs(String[] args) {
56+
String command = String.join(" ", args);
57+
List<String> arguments = new ArrayList<>();
58+
StringBuilder currentArgument = new StringBuilder();
59+
boolean inQuotes = false;
60+
61+
for (int i = 0; i < command.length(); i++) {
62+
char c = command.charAt(i);
63+
64+
if (c == '\\' && i + 1 < command.length()) {
65+
currentArgument.append(command.charAt(++i));
66+
}
67+
else if (c == '\"') {
68+
inQuotes = !inQuotes;
69+
}
70+
else if (Character.isWhitespace(c) && !inQuotes) {
71+
if (currentArgument.length() > 0) {
72+
arguments.add(currentArgument.toString());
73+
currentArgument.setLength(0);
74+
}
75+
}
76+
else {
77+
currentArgument.append(c);
78+
}
79+
}
80+
81+
if (currentArgument.length() > 0) arguments.add(currentArgument.toString());
82+
83+
return arguments.toArray(new String[0]);
84+
}
5185
}
5286

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public static Config getInstance() {
2626
}
2727

2828
public void reloadConfig() {
29+
SimpleNicks.getInstance().reloadConfig();
2930
// Check the validity of the regex.
3031
try {
3132
String regexSetting = SimpleNicks.getInstance().getConfig().getString("nickname-regex");

0 commit comments

Comments
 (0)