diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features')
3 files changed, 68 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt new file mode 100644 index 000000000..3125cfc36 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenVisitorTimer.kt @@ -0,0 +1,64 @@ +package at.hannibal2.skyhanni.features.garden + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.data.IslandType +import at.hannibal2.skyhanni.events.TabListUpdateEvent +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.RenderUtils.renderString +import at.hannibal2.skyhanni.utils.TimeUtils +import net.minecraftforge.client.event.RenderGameOverlayEvent +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import java.util.regex.Pattern + +class GardenVisitorTimer { + private val patternNextVisitor = Pattern.compile(" Next Visitor: §r§b(.*)") + private val patternVisitors = Pattern.compile("§b§lVisitors: §r§f\\((\\d)\\)") + private var render = "" + private var lastMillis = 0L + + @SubscribeEvent + fun onTick(event: TabListUpdateEvent) { + if (!isEnabled()) return + + var visitorsAmount = 0 + var millis = 15 * 60_000L + for (line in event.tabList) { + var matcher = patternNextVisitor.matcher(line) + if (matcher.matches()) { + val rawTime = matcher.group(1) + millis = TimeUtils.getMillis(rawTime) + } + + matcher = patternVisitors.matcher(line) + if (matcher.matches()) { + visitorsAmount = matcher.group(1).toInt() + } + } + + val diff = lastMillis - millis + if (diff == 0L) return + lastMillis = millis + + 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 formatDuration = TimeUtils.formatDuration(millis) + render = "§b$visitorsAmount $visitorLabel §f(Next in §e$formatDuration$extraSpeed§f)" + } + + @SubscribeEvent + fun onRenderOverlay(event: RenderGameOverlayEvent.Post) { + if (event.type != RenderGameOverlayEvent.ElementType.ALL) return + if (!isEnabled()) return + + SkyHanniMod.feature.garden.visitorHelperTimerPos.renderString(render) + } + + private fun isEnabled() = + LorenzUtils.inSkyBlock && + SkyHanniMod.feature.garden.visitorHelperTimerEnabled && + LorenzUtils.skyBlockIsland == IslandType.GARDEN +}
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt index c4d5d311e..887df0617 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/CrimsonIsleReputationHelper.kt @@ -10,7 +10,7 @@ import at.hannibal2.skyhanni.features.nether.reputationhelper.miniboss.DailyMini import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.LorenzVec import at.hannibal2.skyhanni.utils.RenderUtils.renderStringsAndItems -import at.hannibal2.skyhanni.utils.TabListUtils +import at.hannibal2.skyhanni.utils.TabListData import com.google.gson.JsonObject import net.minecraftforge.client.event.RenderGameOverlayEvent import net.minecraftforge.fml.common.eventhandler.EventPriority @@ -59,7 +59,7 @@ class CrimsonIsleReputationHelper(skyHanniMod: SkyHanniMod) { tick++ if (tick % 60 == 0) { - TabListUtils.getTabList() + TabListData.getTabList() .filter { it.contains("Reputation:") } .forEach { factionType = if (it.contains("Mage")) { diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt index e4bba6494..2444cb0be 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/nether/reputationhelper/dailyquest/QuestLoader.kt @@ -5,7 +5,7 @@ import at.hannibal2.skyhanni.features.nether.reputationhelper.dailyquest.quest.* import at.hannibal2.skyhanni.utils.InventoryUtils.getInventoryName import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.LorenzUtils -import at.hannibal2.skyhanni.utils.TabListUtils +import at.hannibal2.skyhanni.utils.TabListData import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiChest import net.minecraft.inventory.ContainerChest @@ -14,7 +14,7 @@ class QuestLoader(private val dailyQuestHelper: DailyQuestHelper) { fun loadFromTabList() { var i = -1 - for (line in TabListUtils.getTabList()) { + for (line in TabListData.getTabList()) { if (line.contains("Faction Quests:")) { i = 0 continue |
