Skip to content
This repository has been archived by the owner on Nov 29, 2024. It is now read-only.

Commit

Permalink
fix cooldown logic problem; add minus symbol on duration if cooldown …
Browse files Browse the repository at this point in the history
…passed
  • Loading branch information
eric2788 committed Jun 26, 2022
1 parent c8d9c54 commit f614b73
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 4 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.ericlam.mc</groupId>
<artifactId>MinigamesQuests</artifactId>
<version>1.0.7</version>
<version>1.0.8</version>

<properties>
<maven.compiler.source>18</maven.compiler.source>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ public String formatDuration(Duration duration) {
long seconds = duration.getSeconds();
long absSeconds = Math.abs(seconds);
return String.format(
"%d:%02d:%02d",
"%s%d:%02d:%02d",
seconds >= 0 ? "" : "-",
absSeconds / 3600,
(absSeconds % 3600) / 60,
absSeconds % 60);
Expand Down
18 changes: 16 additions & 2 deletions src/main/java/com/ericlam/mc/mgquests/manager/QuestsManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.ericlam.mc.eld.annotations.InjectPool;
import com.ericlam.mc.eld.configurations.GroupConfig;
import com.ericlam.mc.eld.misc.DebugLogger;
import com.ericlam.mc.eld.services.LoggingService;
import com.ericlam.mc.mgquests.QuestException;
import com.ericlam.mc.mgquests.config.QuestMessage;
import com.ericlam.mc.mgquests.config.QuestObject;
Expand Down Expand Up @@ -32,6 +34,12 @@ public class QuestsManager {
@Inject
private QuestMessage message;

private final DebugLogger logger;

@Inject
public QuestsManager(LoggingService loggingService) {
this.logger = loggingService.getLogger(QuestsManager.class);
}

@InjectPool
private GroupConfig<QuestObject> questObjects;
Expand All @@ -46,9 +54,12 @@ public CompletableFuture<PurchaseResult> acceptQuest(UUID player, String questId
quest.quest = questId;
} else if (questObject.coolDown != null && quest.lastFinished != 0){
var coolDownEnd = durationConvertManager.getCoolDownEndTime(quest, questObject.coolDown);
if (coolDownEnd.isBefore(LocalDateTime.now())){
if (coolDownEnd.isAfter(LocalDateTime.now())){
logger.debugF("player %s is cooling down quest %s, cannot accept", player, questId);
var err = message.getLang().get("quest-unavailable", questId);
return CompletableFuture.completedFuture(PurchaseResult.failed(err));
} else {
logger.debugF("player %s is cooled down quest %s, can accept", player, questId);
}
}
final var q = quest;
Expand Down Expand Up @@ -116,7 +127,10 @@ public PurchaseResult tryFinishQuest(UUID player, String questId) throws QuestEx
}
// check deadline is passed
var deadline = durationConvertManager.getDeadline(quest, questObject.timeLimit);
if (deadline.isBefore(LocalDateTime.now())) return PurchaseResult.failed(message.getLang().get("quest-unavailable", questId));
if (deadline.isBefore(LocalDateTime.now())) {
logger.debugF("player %s quest %s deadline is passed", player, questId);
return PurchaseResult.failed(message.getLang().get("quest-unavailable", questId));
}
// check all stats is passed
for (String targetStat : questObject.targets.keySet()) {
var passNum = questObject.targets.get(targetStat);
Expand Down
26 changes: 26 additions & 0 deletions src/test/java/com/ericlam/mc/questtest/DurationTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.ericlam.mc.questtest;

import java.sql.Timestamp;
import java.time.Duration;

public class DurationTest {

public static void main(String[] args) {
var oneDay = Duration.ofDays(1);
var date = new Timestamp(1654247206150L).toLocalDateTime();
System.out.println("last finished: "+date.toString());
var cool = date.plus(oneDay);
System.out.println("cool: "+cool.toString());
System.out.println("diff: "+formatDuration(Duration.between(cool, date)));
}

static String formatDuration(Duration duration) {
long seconds = duration.getSeconds();
long absSeconds = Math.abs(seconds);
return (seconds >= 0 ? "" : "-") + String.format(
"%d:%02d:%02d",
absSeconds / 3600,
(absSeconds % 3600) / 60,
absSeconds % 60);
}
}

0 comments on commit f614b73

Please sign in to comment.