Skip to content

Commit 147c73a

Browse files
committed
show explicit error when duration format is invalid
1 parent 2486e3a commit 147c73a

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

src/main/java/pro/cloudnode/smp/smpcore/Messages.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -619,6 +619,13 @@ public Messages() {
619619
return MiniMessage.miniMessage().deserialize(Objects.requireNonNull(config.getString("error.duration-zero-or-less")));
620620
}
621621

622+
public @NotNull Component invalidDuration(final @NotNull String duration) {
623+
return MiniMessage.miniMessage().deserialize(
624+
Objects.requireNonNull(config.getString("error.invalid-duration")),
625+
Placeholder.unparsed("duration", duration)
626+
);
627+
}
628+
622629
public record SubCommandArgument(@NotNull String name, boolean required) {
623630
public @NotNull Component component() {
624631
return required ? SMPCore.messages().subCommandArgumentRequired(name) : SMPCore.messages()

src/main/java/pro/cloudnode/smp/smpcore/command/BanCommand.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,12 @@ public boolean run(@NotNull CommandSender sender, @NotNull String label, @NotNul
3333

3434
final @Nullable String durationArg = args.length > 1 ? args[1] : null;
3535
@Nullable Duration duration = null;
36-
if (durationArg != null) try {
36+
if (durationArg != null && durationArg.matches("(?i)^PT\\d.*")) try {
3737
duration = Duration.parse(durationArg);
3838
}
39-
catch (DateTimeParseException ignored) {}
39+
catch (DateTimeParseException ignored) {
40+
return sendMessage(sender, SMPCore.messages().invalidDuration(durationArg));
41+
}
4042

4143
if (duration != null && (duration.isNegative() || duration.isZero()))
4244
return sendMessage(sender, SMPCore.messages().errorDurationZeroOrLess());

src/main/resources/messages.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,3 +117,4 @@ error:
117117
demote-leader: <red>(!) You cannot demote the nation leader.</red>
118118
demote-citizen: <red>(!) Don't make this <i>citizen</i> unworthy of the nation! (To remove from nation, use <click:suggest_command:/nation citizens kick ><gray>/nation citizens kick</gray></click>.)</red>
119119
duration-zero-or-less: <red>(!) Duration must be greater than zero.</red>
120+
invalid-duration: <red>(!) Invalid duration format <gray>‘<duration></gray>’.</red>

0 commit comments

Comments
 (0)