Skip to content

Commit 0b3f395

Browse files
committed
add ODurationHelper
1 parent e495658 commit 0b3f395

File tree

2 files changed

+37
-29
lines changed

2 files changed

+37
-29
lines changed

src/main/java/net/oceanias/opal/cooldown/OCooldown.java

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

33
import net.oceanias.opal.plugin.OPlugin;
44
import net.oceanias.opal.utility.extension.OCommandSenderExtension;
5+
import net.oceanias.opal.utility.helper.ODurationHelper;
56
import net.oceanias.opal.utility.helper.OTaskHelper;
67
import java.time.Duration;
7-
import java.util.List;
88
import java.util.Map;
99
import java.util.concurrent.ConcurrentHashMap;
1010
import org.bukkit.Sound;
@@ -63,7 +63,7 @@ public void setCooldown(@NotNull final CommandSender sender, final boolean coold
6363
}
6464

6565
public void showReminder(@NotNull final CommandSender sender) {
66-
final String message = "&fPlease wait &6" + formatDuration(getRemaining(sender)) + "&f.";
66+
final String message = "&fPlease wait &6" + ODurationHelper.formatFullDuration(getRemaining(sender)) + "&f.";
6767

6868
if (sender instanceof ConsoleCommandSender) {
6969
sender.messageDSR(message);
@@ -112,31 +112,4 @@ public void withCooldown(final CommandSender sender, final Runnable execute) {
112112

113113
showReminder(sender);
114114
}
115-
116-
private static String formatDuration(@NotNull final Duration duration) {
117-
final List<Pair<String, Long>> units = List.of(
118-
Pair.of("day", duration.toDays()),
119-
Pair.of("hour", duration.toHours() % 24),
120-
Pair.of("minute", duration.toMinutes() % 60),
121-
Pair.of("second", duration.toSeconds() % 60)
122-
);
123-
124-
final List<String> parts = units.stream()
125-
.filter(unit -> unit.getRight() > 0)
126-
.map(unit -> {
127-
final String extension = (unit.getRight() == 1L)
128-
? ""
129-
: "s";
130-
131-
return unit.getRight() + " " + unit.getLeft() + extension;
132-
})
133-
.toList();
134-
135-
return switch (parts.size()) {
136-
case 0 -> "less than a second";
137-
case 1 -> parts.get(0);
138-
case 2 -> parts.get(0) + " and " + parts.get(1);
139-
default -> String.join(", ", parts.subList(0, parts.size() - 1)) + ", and " + parts.getLast();
140-
};
141-
}
142115
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package net.oceanias.opal.utility.helper;
2+
3+
import java.time.Duration;
4+
import java.util.List;
5+
import org.apache.commons.lang3.tuple.Pair;
6+
import org.jetbrains.annotations.NotNull;
7+
8+
public final class ODurationHelper {
9+
public static String formatFullDuration(final @NotNull Duration duration) {
10+
final List<Pair<String, Long>> units = List.of(
11+
Pair.of("day", duration.toDays()),
12+
Pair.of("hour", duration.toHours() % 24),
13+
Pair.of("minute", duration.toMinutes() % 60),
14+
Pair.of("second", duration.toSeconds() % 60)
15+
);
16+
17+
final List<String> parts = units.stream()
18+
.filter(unit -> unit.getRight() > 0)
19+
.map(unit -> {
20+
final String extension = (unit.getRight() == 1L)
21+
? ""
22+
: "s";
23+
24+
return unit.getRight() + " " + unit.getLeft() + extension;
25+
})
26+
.toList();
27+
28+
return switch (parts.size()) {
29+
case 0 -> "less than a second";
30+
case 1 -> parts.get(0);
31+
case 2 -> parts.get(0) + " and " + parts.get(1);
32+
default -> String.join(", ", parts.subList(0, parts.size() - 1)) + ", and " + parts.getLast();
33+
};
34+
}
35+
}

0 commit comments

Comments
 (0)