Skip to content

Commit

Permalink
fix: fix broken placeholders (#251)
Browse files Browse the repository at this point in the history
  • Loading branch information
titivermeesch committed Feb 27, 2024
1 parent 40b9b58 commit dea9802
Show file tree
Hide file tree
Showing 8 changed files with 84 additions and 17 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ java {
}

group = 'me.playbosswar.com'
version = '8.5.3'
version = '8.5.4'
description = 'CommandTimer'

repositories {
Expand Down Expand Up @@ -61,7 +61,7 @@ publishing {
maven(MavenPublication) {
groupId = 'me.playbosswar.com'
artifactId = 'commandtimer'
version = '8.5.3'
version = '8.5.4'

from components.java
}
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/placeholders.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ to replace `task` with your actual task name.
- `%commandtimer_task_nextExecution%`: Get the next execution time in seconds
- `%commandtimer_task_nextExecutionFormat%`: Same as previous placeholder, but formatted in `HH:mm:ss`
- `%commandtimer_task_timeFormat%`: Same as previous placeholder, but you can replace `timeFormat` with a format of your
choice. A list of possible combinations is available [here](https://day.js.org/docs/en/display/format). If you want to
choice. You can use `DD`, `HH`, `mm` and `ss` as time selectors in your placeholder. If you want to
escape certain characters you can use `'` around the character you want to escape. For a time format `12h34m03s` you
will need the placeholder `%commandtimer_task_HH'h'mm'm'ss's'%`. Depending on your configuration file, you will need
to change your outer `'` quotes with `"` to keep a valid configuration.
Expand Down
4 changes: 2 additions & 2 deletions java8-build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ java {
}

group = 'me.playbosswar.com'
version = '8.5.3'
version = '8.5.4'
description = 'CommandTimer'

repositories {
Expand Down Expand Up @@ -69,7 +69,7 @@ publishing {
maven(MavenPublication) {
groupId = 'me.playbosswar.com'
artifactId = 'commandtimer'
version = '8.5.3'
version = '8.5.4'

from components.java
}
Expand Down
6 changes: 0 additions & 6 deletions src/main/java/me/playbosswar/com/hooks/PAPIPlaceholders.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import me.playbosswar.com.CommandTimerPlugin;
import me.playbosswar.com.tasks.TaskTime;
import me.playbosswar.com.utils.TaskUtils;
import me.playbosswar.com.utils.Tools;
import me.playbosswar.com.tasks.Task;
import me.playbosswar.com.utils.Messages;
Expand All @@ -14,10 +12,6 @@
import org.joda.time.Duration;
import org.joda.time.Interval;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.ZoneOffset;
import java.time.temporal.TemporalAdjusters;
import java.util.*;

public class PAPIPlaceholders extends PlaceholderExpansion {
Expand Down
29 changes: 26 additions & 3 deletions src/main/java/me/playbosswar/com/utils/Tools.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package me.playbosswar.com.utils;

import org.bukkit.World;
import org.joda.time.Duration;
import org.joda.time.Period;
import org.joda.time.format.PeriodFormatter;
import org.joda.time.format.PeriodFormatterBuilder;

import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.*;
Expand Down Expand Up @@ -66,11 +69,31 @@ public static String calculateWorldTime(World w) {
return realHours + ":" + mm;
}

public static String getTimeString(int seconds, String format) {
LocalDateTime local = LocalDateTime.ofInstant(Instant.ofEpochSecond(seconds), ZoneId.of("GMT"));
private static String getTimeStringLegacy(int seconds, String format) {
LocalDateTime local = LocalDateTime.ofInstant(Instant.ofEpochSecond(seconds), ZoneId.of("GMT"));
return local.format(DateTimeFormatter.ofPattern(format));
}

public static String getTimeString(int seconds, String format) {
// If we don't have days, we don't need to handle it ourselves
if(!format.contains("DD")) {
return getTimeStringLegacy(seconds, format);
}

Duration duration = Duration.standardSeconds(seconds);

int days = (int) duration.getStandardDays();
int hours = (int) duration.getStandardHours();
int minutes = (int) (duration.getStandardMinutes() % 60);
int remainingSeconds = (int) (duration.getStandardSeconds() % 60);

return format
.replace("DD", String.format("%02d", days))
.replace("HH", String.format("%02d", hours))
.replace("mm", String.format("%02d", minutes))
.replace("ss", String.format("%02d", remainingSeconds));
}

private static String getTenthNumeric(long val) {
if(val < 9) {
return "0" + val;
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
main: me.playbosswar.com.CommandTimerPlugin
name: "CommandTimer"
version: "8.5.3"
version: "8.5.4"
description: "Schedule commands like you want"
author: PlayBossWar
api-version: 1.13
Expand Down
5 changes: 3 additions & 2 deletions src/test/java/utils/TaskTimeUtilsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import me.playbosswar.com.tasks.Task;
import me.playbosswar.com.tasks.TaskTime;

import java.time.DayOfWeek;
import java.time.LocalTime;

import me.playbosswar.com.utils.TaskTimeUtils;
Expand All @@ -19,8 +20,8 @@ public void givenTaskTimes_shouldHandleMultipleWeeks_returnSoonestDate() {
final Task task = new Task("test");
List<TaskTime> taskTimes = new ArrayList<>();

List<String> days = new ArrayList<>();
days.add("MONDAY");
List<DayOfWeek> days = new ArrayList<>();
days.add(DayOfWeek.MONDAY);
task.setDays(days);

taskTimes.add(new TaskTime(task, LocalTime.of(14, 0, 0, 0), false));
Expand Down
49 changes: 49 additions & 0 deletions src/test/java/utils/ToolsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package utils;

import me.playbosswar.com.utils.Tools;
import org.junit.Test;
import static org.junit.Assert.assertEquals;

public class ToolsTest {
@Test
public void shouldReturnCorrectPlayer1() {
String result = Tools.getTimeString(59, "HH:mm:ss");
assertEquals("00:00:59", result);
}

@Test
public void shouldReturnCorrectPlayer2() {
String result = Tools.getTimeString(60, "HH:mm:ss");
assertEquals("00:01:00", result);
}

@Test
public void shouldReturnCorrectPlayer3() {
String result = Tools.getTimeString(80, "mm:ss");
assertEquals("01:20", result);
}

@Test
public void shouldReturnCorrectPlayer4() {
String result = Tools.getTimeString(20, "DD:HH:mm:ss");
assertEquals("00:00:00:20", result);
}

@Test
public void shouldReturnCorrectPlayer5() {
String result = Tools.getTimeString(9, "HH:mm:ss");
assertEquals("00:00:09", result);
}

@Test
public void shouldReturnCorrectPlayer6() {
String result = Tools.getTimeString(69, "HH:mm:ss");
assertEquals("00:01:09", result);
}

@Test
public void shouldReturnCorrectPlayer7() {
String result = Tools.getTimeString(3669, "HH:mm:ss");
assertEquals("01:01:09", result);
}
}

0 comments on commit dea9802

Please sign in to comment.