Skip to content

Commit 8b69ac7

Browse files
authored
Merge pull request #269 from UnicacityAddon/feature/mining-booster-widget
feature/mining-booster-widget
2 parents a1a4939 + ceb4983 commit 8b69ac7

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

src/main/java/de/rettichlp/ucutils/common/models/Countdown.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.rettichlp.ucutils.common.models;
22

33
import de.rettichlp.ucutils.common.gui.widgets.CountdownWidget;
4+
import lombok.Getter;
45
import lombok.RequiredArgsConstructor;
56
import net.minecraft.text.Text;
67

@@ -16,6 +17,7 @@
1617
import static net.minecraft.util.Formatting.GRAY;
1718
import static net.minecraft.util.Formatting.WHITE;
1819

20+
@Getter
1921
@RequiredArgsConstructor
2022
public class Countdown {
2123

src/main/java/de/rettichlp/ucutils/listener/impl/job/JobListener.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.rettichlp.ucutils.listener.impl.job;
22

3+
import de.rettichlp.ucutils.common.models.Countdown;
34
import de.rettichlp.ucutils.common.models.Job;
45
import de.rettichlp.ucutils.common.registry.UCUtilsListener;
56
import de.rettichlp.ucutils.listener.IMessageReceiveListener;
@@ -8,6 +9,7 @@
89
import net.minecraft.text.Text;
910
import net.minecraft.util.math.BlockPos;
1011

12+
import java.time.LocalDateTime;
1113
import java.util.Optional;
1214
import java.util.regex.Matcher;
1315
import java.util.regex.Pattern;
@@ -19,6 +21,9 @@
1921
import static de.rettichlp.ucutils.common.models.Job.PIZZA_DELIVERY;
2022
import static de.rettichlp.ucutils.common.models.Job.TOBACCO_PLANTATION;
2123
import static de.rettichlp.ucutils.common.models.Job.URANIUM_TRANSPORT;
24+
import static java.lang.Integer.parseInt;
25+
import static java.time.Duration.between;
26+
import static java.time.LocalDateTime.now;
2227
import static java.util.Arrays.stream;
2328
import static java.util.Objects.isNull;
2429
import static java.util.concurrent.TimeUnit.SECONDS;
@@ -27,9 +32,13 @@
2732
@UCUtilsListener
2833
public class JobListener implements IMessageReceiveListener, IMoveListener, INaviSpotReachedListener {
2934

35+
private static final String MINING_BOOSTER_COUNTDOWN_TITLE = "Mining XP-Booster";
3036
private static final Pattern TRANSPORT_DELIVER_PATTERN = compile("^\\[Transport] Du hast (eine Holz Lieferung|eine Kiste|eine Waffenkiste|ein Weizen Paket|eine Schwarzpulverkiste) abgeliefert( bei .+)?\\.$");
3137
private static final Pattern DRINK_TRANSPORT_DELIVER_PATTERN = compile("^\\[Bar] Du hast eine Flasche abgegeben!$");
3238
private static final Pattern PIZZA_JOB_TRANSPORT_GET_PIZZA_PATTERN = compile("^\\[Pizzalieferant] Sobald du 10 Pizzen dabei hast, wird dir deine erste Route angezeigt\\.$");
39+
private static final Pattern MINING_BOOSTER_PATTERN = compile("^ᴍɪɴɪɴɢ ┃ XP-Booster aktiviert: \\+(?<percent>\\d+)% für (?<seconds>\\d+)s$");
40+
41+
private LocalDateTime miningBoosterExpirationTime;
3342

3443
@Override
3544
public boolean onMessageReceive(Text text, String message) {
@@ -51,6 +60,20 @@ public boolean onMessageReceive(Text text, String message) {
5160
return true;
5261
}
5362

63+
Matcher miningBoosterMatcher = MINING_BOOSTER_PATTERN.matcher(message);
64+
if (miningBoosterMatcher.find()) {
65+
int seconds = parseInt(miningBoosterMatcher.group("seconds"));
66+
LocalDateTime now = now();
67+
68+
this.miningBoosterExpirationTime = this.miningBoosterExpirationTime != null && this.miningBoosterExpirationTime.isAfter(now)
69+
? this.miningBoosterExpirationTime.plusSeconds(seconds)
70+
: now.plusSeconds(seconds);
71+
72+
storage.getCountdowns().removeIf(countdown -> countdown.getTitle().equals(MINING_BOOSTER_COUNTDOWN_TITLE));
73+
storage.getCountdowns().add(new Countdown(MINING_BOOSTER_COUNTDOWN_TITLE, between(now, this.miningBoosterExpirationTime), () -> {}));
74+
return true;
75+
}
76+
5477
// refresh job cooldowns
5578
Optional<Job> optionalJob = stream(Job.values())
5679
.filter(job -> job.getJobStartPattern().matcher(message).find())

0 commit comments

Comments
 (0)