aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/at/hannibal2/skyhanni/events/VisitorArrivalEvent.kt5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt5
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt22
3 files changed, 28 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/events/VisitorArrivalEvent.kt b/src/main/java/at/hannibal2/skyhanni/events/VisitorArrivalEvent.kt
new file mode 100644
index 000000000..6e92d85cf
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/events/VisitorArrivalEvent.kt
@@ -0,0 +1,5 @@
+package at.hannibal2.skyhanni.events
+
+import at.hannibal2.skyhanni.features.garden.visitor.GardenVisitorFeatures.Visitor
+
+class VisitorArrivalEvent(val visitor: Visitor): LorenzEvent() \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt
index 4025fa9a0..26799eedf 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorFeatures.kt
@@ -416,7 +416,10 @@ class GardenVisitorFeatures {
}
private fun addVisitor(name: String) {
- visitors[name] = Visitor(name, status = VisitorStatus.NEW)
+ val visitor = Visitor(name, status = VisitorStatus.NEW)
+ visitors[name] = visitor
+ VisitorArrivalEvent(visitor).postAndCatch()
+
logger.log("New visitor detected: '$name'")
if (config.visitorNotificationTitle) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt
index 8e2ba8f9f..3e5ffa6bb 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/visitor/GardenVisitorTimer.kt
@@ -4,12 +4,12 @@ import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.events.BlockClickEvent
import at.hannibal2.skyhanni.events.GuiRenderEvent
import at.hannibal2.skyhanni.events.TabListUpdateEvent
+import at.hannibal2.skyhanni.events.VisitorArrivalEvent
import at.hannibal2.skyhanni.features.garden.CropType.Companion.getCropType
import at.hannibal2.skyhanni.features.garden.GardenAPI
import at.hannibal2.skyhanni.utils.RenderUtils.renderString
import at.hannibal2.skyhanni.utils.TimeUtils
import net.minecraftforge.event.world.WorldEvent
-import net.minecraftforge.fml.common.eventhandler.EventPriority
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.math.roundToLong
@@ -20,11 +20,17 @@ class GardenVisitorTimer {
private var lastMillis = 0L
private var lastVisitors: Int = -1
private var sixthVisitorArrivalTime: Long = 0
+ private var visitorJustArrived: Boolean = false
private var visitorInterval
get() = SkyHanniMod.feature.hidden.visitorInterval
set(value) { SkyHanniMod.feature.hidden.visitorInterval = value }
- @SubscribeEvent(priority = EventPriority.LOW)
+ @SubscribeEvent
+ fun onVisitorArrival(event: VisitorArrivalEvent) {
+ visitorJustArrived = true
+ }
+
+ @SubscribeEvent
fun onTabListUpdate(event: TabListUpdateEvent) {
if (!isEnabled()) return
@@ -53,12 +59,19 @@ class GardenVisitorTimer {
if (!queueFull) {
visitorInterval = ((millis - 1) / 60_000L + 1) * 60_000L
} else {
- sixthVisitorArrivalTime = System.currentTimeMillis() + visitorInterval
+ updateSixthVisitorArrivalTime()
}
}
if (queueFull) {
+ if (sixthVisitorArrivalTime != 0L && visitorJustArrived) {
+ updateSixthVisitorArrivalTime()
+ visitorJustArrived = false
+ }
millis = sixthVisitorArrivalTime - System.currentTimeMillis()
+ if (isSixthVisitorEnabled() && sixthVisitorArrivalTime != 0L && millis < 0) {
+ visitorsAmount++
+ }
}
val diff = lastMillis - millis
@@ -100,6 +113,9 @@ class GardenVisitorTimer {
sixthVisitorArrivalTime -= 100
}
+ private fun updateSixthVisitorArrivalTime() {
+ sixthVisitorArrivalTime = System.currentTimeMillis() + visitorInterval
+ }
private fun isSixthVisitorEnabled() = SkyHanniMod.feature.garden.visitorTimerSixthVisitorEnabled
private fun isEnabled() = GardenAPI.inGarden() && SkyHanniMod.feature.garden.visitorTimerEnabled
} \ No newline at end of file