aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-02-21 13:37:58 +0100
committerhannibal2 <24389977+hannibal00212@users.noreply.github.com>2023-02-21 13:37:58 +0100
commit51f4ed20276b2ab75d5766dd4556c76f9e5eb415 (patch)
treeb8fb751b5777d85da7f3da50d8647301f844b3c4 /src/main
parent7dc53e46d9816799d713a52015a986291c24f84b (diff)
downloadskyhanni-51f4ed20276b2ab75d5766dd4556c76f9e5eb415.tar.gz
skyhanni-51f4ed20276b2ab75d5766dd4556c76f9e5eb415.tar.bz2
skyhanni-51f4ed20276b2ab75d5766dd4556c76f9e5eb415.zip
Show new visitors and fixed bugs.
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt84
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt6
2 files changed, 61 insertions, 29 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt
index 06dbd10ab..3d58a9714 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorFeatures.kt
@@ -2,10 +2,7 @@ package at.hannibal2.skyhanni.features.garden
import at.hannibal2.skyhanni.SkyHanniMod
import at.hannibal2.skyhanni.data.IslandType
-import at.hannibal2.skyhanni.events.GuiRenderEvent
-import at.hannibal2.skyhanni.events.InventoryOpenEvent
-import at.hannibal2.skyhanni.events.PacketEvent
-import at.hannibal2.skyhanni.events.withAlpha
+import at.hannibal2.skyhanni.events.*
import at.hannibal2.skyhanni.mixins.hooks.RenderLivingEntityHelper
import at.hannibal2.skyhanni.utils.*
import at.hannibal2.skyhanni.utils.ItemUtils.getLore
@@ -16,7 +13,6 @@ import io.github.moulberry.notenoughupdates.NotEnoughUpdates
import net.minecraft.client.Minecraft
import net.minecraft.entity.EntityLivingBase
import net.minecraft.network.play.client.C02PacketUseEntity
-import net.minecraft.network.play.server.S13PacketDestroyEntities
import net.minecraftforge.event.entity.player.ItemTooltipEvent
import net.minecraftforge.fml.common.eventhandler.EventPriority
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@@ -70,17 +66,33 @@ class GardenVisitorFeatures {
display.clear()
val requiredItems = mutableMapOf<String, Int>()
- for ((_, visitor) in visitors) {
- for ((itemName, amount) in visitor.items) {
+ val newVisitors = mutableListOf<String>()
+ for ((visitorName, visitor) in visitors) {
+ val items = visitor.items
+ if (items.isEmpty()) {
+ newVisitors.add(visitorName)
+ }
+ for ((itemName, amount) in items) {
val old = requiredItems.getOrDefault(itemName, 0)
requiredItems[itemName] = old + amount
}
}
- if (requiredItems.isEmpty()) return
-
- display.add("Visitor Items Needed:")
- for ((name, amount) in requiredItems) {
- display.add(" -$name §8x$amount")
+ if (requiredItems.isNotEmpty()) {
+ display.add("Visitor items needed:")
+ for ((name, amount) in requiredItems) {
+ display.add(" -$name §8x$amount")
+ }
+ }
+ if (newVisitors.isNotEmpty()) {
+ if (requiredItems.isNotEmpty()) {
+ display.add("")
+ }
+ val amount = newVisitors.size
+ val visitorLabel = if (amount == 1) "visitor" else "visitors"
+ display.add("$amount new $visitorLabel:")
+ for (visitor in newVisitors) {
+ display.add(" -$visitor")
+ }
}
}
@@ -158,6 +170,39 @@ class GardenVisitorFeatures {
}
}
+ @SubscribeEvent
+ fun onTick(event: TabListUpdateEvent) {
+ if (!isEnabled()) return
+ var found = false
+ val visitorsInTab = mutableListOf<String>()
+ for (line in event.tabList) {
+ if (line.startsWith("§b§lVisitors:")) {
+ found = true
+ continue
+ }
+ if (found) {
+ if (line.isEmpty()) {
+ found = false
+ continue
+ }
+ val name = line.substring(3)
+ visitorsInTab.add(name)
+ }
+ }
+ if (visitors.keys.removeIf { it !in visitorsInTab }) {
+ println("removed an npc")
+ update()
+ }
+ for (name in visitorsInTab) {
+ if (!visitors.containsKey(name)) {
+ visitors[name] = Visitor(-1)
+ // todo notification? (check world age first)
+ println("found an npc: '$name'")
+ update()
+ }
+ }
+ }
+
private fun checkVisitorsReady() {
for (visitor in visitors.values) {
var ready = true
@@ -181,21 +226,6 @@ class GardenVisitorFeatures {
}
}
- @SubscribeEvent
- fun onReceiveEvent(event: PacketEvent.ReceiveEvent) {
- val packet = event.packet
- if (packet is S13PacketDestroyEntities) {
- for (entityID in packet.entityIDs) {
- for ((name, visitor) in visitors.toMutableMap()) {
- if (visitor.entityId == entityID) {
- visitors.remove(name)
- update()
- }
- }
- }
- }
- }
-
// TODO make event
@SubscribeEvent
fun onSendEvent(event: PacketEvent.SendEvent) {
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt
index d8bbe2d6f..9ca5c4b13 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt
@@ -15,6 +15,7 @@ class GardenVisitorTimer {
private val patternVisitors = Pattern.compile("§b§lVisitors: §r§f\\((\\d)\\)")
private var render = ""
private var lastMillis = 0L
+ private var lastVisitors = 0
@SubscribeEvent
fun onTick(event: TabListUpdateEvent) {
@@ -36,15 +37,16 @@ class GardenVisitorTimer {
}
val diff = lastMillis - millis
- if (diff == 0L) return
+ if (diff == 0L && visitorsAmount == lastVisitors) return
lastMillis = millis
+ lastVisitors = visitorsAmount
val extraSpeed = if (diff in 1001..10_000) {
val factor = diff / 1000
"§f/§e" + TimeUtils.formatDuration(millis / factor)
} else ""
- val visitorLabel = if (visitorsAmount == 1) "Visitor" else "Visitors"
+ val visitorLabel = if (visitorsAmount == 1) "visitor" else "visitors"
val formatDuration = TimeUtils.formatDuration(millis)
render = "§b$visitorsAmount $visitorLabel §f(Next in §e$formatDuration$extraSpeed§f)"
}