Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions NOTICE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Third-Party Code Attributions

This project includes code adapted from the following third-party projects.
This project includes code adapted from the following third-party projects.
The listed files under each project retain the original license of the source project.

### Firmament
Expand All @@ -24,11 +24,10 @@ The listed files under each project retain the original license of the source pr
- **License**: [GNU Lesser General Public License v2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt)
- **Files**:
- `src/main/java/me/nobaboy/nobaaddons/init/AutoDiscoveryMixinPlugin.java`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/SkyBlockTime.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/Timestamp.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/hypixel/SkyBlockTime.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/math/BezierCurve.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/math/BezierFitter.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/math/Matrix.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/math/ParticlePathFitter.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/math/PolynomialFitter.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/math/PolynomialUtils.kt`
- `src/main/kotlin/me/nobaboy/nobaaddons/utils/math/PolynomialUtils.kt`
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
import me.nobaboy.nobaaddons.events.impl.chat.ChatMessageEvents;
import me.nobaboy.nobaaddons.utils.chat.Message;
import me.nobaboy.nobaaddons.utils.mc.chat.Message;
import net.minecraft.client.gui.hud.ChatHud;
import net.minecraft.client.gui.hud.ChatHudLine;
import net.minecraft.client.gui.hud.MessageIndicator;
Expand Down
11 changes: 5 additions & 6 deletions src/main/kotlin/me/nobaboy/nobaaddons/NobaAddons.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@ import me.nobaboy.nobaaddons.generated.NobaAddonsCoreModules
import me.nobaboy.nobaaddons.generated.NobaAddonsModules
import me.nobaboy.nobaaddons.utils.CommonText
import me.nobaboy.nobaaddons.utils.ErrorManager
import me.nobaboy.nobaaddons.utils.TextUtils.blue
import me.nobaboy.nobaaddons.utils.TextUtils.bold
import me.nobaboy.nobaaddons.utils.TextUtils.buildText
import me.nobaboy.nobaaddons.utils.TextUtils.darkGray
import me.nobaboy.nobaaddons.utils.TextUtils.literal
import me.nobaboy.nobaaddons.utils.mc.TextUtils.blue
import me.nobaboy.nobaaddons.utils.mc.TextUtils.bold
import me.nobaboy.nobaaddons.utils.mc.TextUtils.buildText
import me.nobaboy.nobaaddons.utils.mc.TextUtils.darkGray
import me.nobaboy.nobaaddons.utils.mc.TextUtils.literal
import net.fabricmc.api.ClientModInitializer
import net.fabricmc.loader.api.FabricLoader
import net.fabricmc.loader.api.Version
Expand Down Expand Up @@ -62,5 +62,4 @@ object NobaAddons : ClientModInitializer {
NobaAddonsApis
NobaAddonsModules
}

}
2 changes: 1 addition & 1 deletion src/main/kotlin/me/nobaboy/nobaaddons/api/HypixelAPI.kt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package me.nobaboy.nobaaddons.api

import me.nobaboy.nobaaddons.events.impl.HypixelEvents
import me.nobaboy.nobaaddons.utils.MCUtils
import me.nobaboy.nobaaddons.utils.annotations.ApiModule
import me.nobaboy.nobaaddons.utils.mc.MCUtils
import net.hypixel.data.type.ServerType
import net.hypixel.modapi.HypixelModAPI
import net.hypixel.modapi.handler.ClientboundPacketHandler
Expand Down
20 changes: 11 additions & 9 deletions src/main/kotlin/me/nobaboy/nobaaddons/api/InventoryAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,19 @@ package me.nobaboy.nobaaddons.api
/*import me.nobaboy.nobaaddons.mixins.accessors.PlayerInventoryAccessor
*///?}

import kotlinx.datetime.Instant
import me.nobaboy.nobaaddons.api.skyblock.SkyBlockAPI
import me.nobaboy.nobaaddons.config.NobaConfig
import me.nobaboy.nobaaddons.data.InventoryData
import me.nobaboy.nobaaddons.events.impl.client.InventoryEvents
import me.nobaboy.nobaaddons.events.impl.client.PacketEvents
import me.nobaboy.nobaaddons.events.impl.client.TickEvents
import me.nobaboy.nobaaddons.events.impl.client.WorldEvents
import me.nobaboy.nobaaddons.utils.MCUtils
import me.nobaboy.nobaaddons.utils.TextUtils.buildLiteral
import me.nobaboy.nobaaddons.utils.Timestamp
import me.nobaboy.nobaaddons.utils.TimeUtils.elapsedSince
import me.nobaboy.nobaaddons.utils.TimeUtils.now
import me.nobaboy.nobaaddons.utils.annotations.ApiModule
import me.nobaboy.nobaaddons.utils.mc.MCUtils
import me.nobaboy.nobaaddons.utils.mc.TextUtils.buildLiteral
import net.minecraft.client.gui.screen.ChatScreen
import net.minecraft.entity.player.PlayerInventory
import net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket
Expand All @@ -34,11 +36,11 @@ object InventoryAPI {
private var currentInventory: InventoryData? = null
private var currentWindow: Window? = null

private var inventorySuppressTime = Timestamp.distantPast()
private var inventorySuppressTime = Instant.DISTANT_PAST
private var previousItemCounts: Map<Text, Int>? = null
val itemLog = ConcurrentHashMap<Text, ItemDiff>()

private fun shouldSuppressItemLogUpdate(): Boolean = inventorySuppressTime.elapsedSeconds() < 2
private fun shouldSuppressItemLogUpdate(): Boolean = inventorySuppressTime.elapsedSince().inWholeSeconds < 2

init {
TickEvents.every(5, this::onQuarterSecond)
Expand All @@ -62,7 +64,7 @@ object InventoryAPI {
}

itemLog.entries.removeIf { (_, diff) ->
diff.timestamp.elapsedSeconds() > NobaConfig.inventory.itemPickupLog.timeoutSeconds
diff.timestamp.elapsedSince().inWholeSeconds > NobaConfig.inventory.itemPickupLog.timeoutSeconds
}
}

Expand Down Expand Up @@ -121,7 +123,7 @@ object InventoryAPI {

private fun debounceItemLog() {
previousItemCounts = null
inventorySuppressTime = Timestamp.now()
inventorySuppressTime = Instant.now
}

private fun close(sameName: Boolean = false) {
Expand All @@ -145,7 +147,7 @@ object InventoryAPI {
if(diff.change == 0) continue
val logDiff = itemLog.getOrPut(name) { ItemDiff(name) }
logDiff.change += diff.change
logDiff.timestamp = Timestamp.now()
logDiff.timestamp = Instant.now
}
}

Expand Down Expand Up @@ -191,6 +193,6 @@ object InventoryAPI {
data class ItemDiff(
val name: Text,
var change: Int = 0,
var timestamp: Timestamp = Timestamp.now(),
var timestamp: Instant = Instant.now,
)
}
18 changes: 9 additions & 9 deletions src/main/kotlin/me/nobaboy/nobaaddons/api/PartyAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@ import me.nobaboy.nobaaddons.events.impl.client.TickEvents
import me.nobaboy.nobaaddons.repo.Repo
import me.nobaboy.nobaaddons.repo.Repo.fromRepo
import me.nobaboy.nobaaddons.utils.CooldownManager
import me.nobaboy.nobaaddons.utils.MCUtils
import me.nobaboy.nobaaddons.utils.TextUtils.buildText
import me.nobaboy.nobaaddons.utils.TextUtils.hoverText
import me.nobaboy.nobaaddons.utils.TextUtils.toText
import me.nobaboy.nobaaddons.utils.annotations.ApiModule
import me.nobaboy.nobaaddons.utils.annotations.UntranslatedMessage
import me.nobaboy.nobaaddons.utils.chat.ChatUtils
import me.nobaboy.nobaaddons.utils.mc.MCUtils
import me.nobaboy.nobaaddons.utils.mc.TextUtils.buildText
import me.nobaboy.nobaaddons.utils.mc.TextUtils.hoverText
import me.nobaboy.nobaaddons.utils.mc.TextUtils.toText
import me.nobaboy.nobaaddons.utils.mc.chat.ChatUtils
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents
import net.hypixel.modapi.HypixelModAPI
import net.hypixel.modapi.packet.impl.clientbound.ClientboundPartyInfoPacket
Expand Down Expand Up @@ -73,10 +73,6 @@ object PartyAPI {
HypixelModAPI.getInstance().listen(this::onPartyData)
}

fun refreshPartyList() {
refreshPartyList = true
}

private fun onTick(cooldownManager: CooldownManager) {
if(refreshPartyList && HypixelAPI.onHypixel) {
getPartyInfo()
Expand Down Expand Up @@ -148,4 +144,8 @@ object PartyAPI {
ChatUtils.addMessage(text, prefix = false)
}
}

fun refreshPartyList() {
refreshPartyList = true
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import me.nobaboy.nobaaddons.events.impl.chat.ChatMessageEvents
import me.nobaboy.nobaaddons.events.impl.client.TickEvents
import me.nobaboy.nobaaddons.events.impl.skyblock.SkyBlockEvents
import me.nobaboy.nobaaddons.repo.Repo.fromRepo
import me.nobaboy.nobaaddons.utils.MCUtils
import me.nobaboy.nobaaddons.utils.RegexUtils.onFullMatch
import me.nobaboy.nobaaddons.utils.ScoreboardUtils
import me.nobaboy.nobaaddons.utils.StringUtils.cleanFormatting
import me.nobaboy.nobaaddons.utils.annotations.ApiModule
import me.nobaboy.nobaaddons.utils.mc.MCUtils
import me.nobaboy.nobaaddons.utils.mc.ScoreboardUtils

@ApiModule
object DungeonsAPI {
Expand Down
30 changes: 16 additions & 14 deletions src/main/kotlin/me/nobaboy/nobaaddons/api/skyblock/MayorAPI.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package me.nobaboy.nobaaddons.api.skyblock

import kotlinx.datetime.Instant
import me.nobaboy.nobaaddons.NobaAddons
import me.nobaboy.nobaaddons.core.mayor.Mayor
import me.nobaboy.nobaaddons.core.mayor.MayorPerk
Expand All @@ -8,19 +9,20 @@ import me.nobaboy.nobaaddons.events.impl.chat.ChatMessageEvents
import me.nobaboy.nobaaddons.events.impl.client.InventoryEvents
import me.nobaboy.nobaaddons.events.impl.client.TickEvents
import me.nobaboy.nobaaddons.repo.Repo.fromRepo
import me.nobaboy.nobaaddons.utils.CollectionUtils.nextAfter
import me.nobaboy.nobaaddons.utils.HTTPUtils
import me.nobaboy.nobaaddons.utils.RegexUtils.getGroupFromFullMatch
import me.nobaboy.nobaaddons.utils.SkyBlockTime
import me.nobaboy.nobaaddons.utils.SkyBlockTime.Companion.SKYBLOCK_YEAR_MILLIS
import me.nobaboy.nobaaddons.utils.StringUtils.cleanFormatting
import me.nobaboy.nobaaddons.utils.TextUtils.runCommand
import me.nobaboy.nobaaddons.utils.Timestamp
import me.nobaboy.nobaaddons.utils.Timestamp.Companion.asTimestamp
import me.nobaboy.nobaaddons.utils.TimeUtils.elapsedSince
import me.nobaboy.nobaaddons.utils.TimeUtils.isFuture
import me.nobaboy.nobaaddons.utils.TimeUtils.now
import me.nobaboy.nobaaddons.utils.annotations.ApiModule
import me.nobaboy.nobaaddons.utils.chat.ChatUtils
import me.nobaboy.nobaaddons.utils.collections.CollectionUtils.nextAfter
import me.nobaboy.nobaaddons.utils.hypixel.SkyBlockTime
import me.nobaboy.nobaaddons.utils.hypixel.SkyBlockTime.Companion.SKYBLOCK_YEAR_MILLIS
import me.nobaboy.nobaaddons.utils.items.ItemUtils.lore
import me.nobaboy.nobaaddons.utils.items.ItemUtils.stringLines
import me.nobaboy.nobaaddons.utils.mc.TextUtils.runCommand
import me.nobaboy.nobaaddons.utils.mc.chat.ChatUtils
import me.nobaboy.nobaaddons.utils.tr
import kotlin.time.Duration.Companion.hours
import kotlin.time.Duration.Companion.milliseconds
Expand All @@ -42,21 +44,21 @@ object MayorAPI {
var suppressAutoUpdate: Boolean = false
set(value) {
field = value
lastUpdate = Timestamp.distantPast()
lastUpdate = Instant.DISTANT_PAST
}

var currentMayor: ActiveMayor = Mayor.UNKNOWN.withNone()
internal set
var currentMinister: ActiveMayor = Mayor.UNKNOWN.withNone()
internal set

var jerryMayor: Pair<ActiveMayor, Timestamp> = Mayor.UNKNOWN.withNone() to Timestamp.distantPast()
var jerryMayor: Pair<ActiveMayor, Instant> = Mayor.UNKNOWN.withNone() to Instant.DISTANT_PAST
internal set

private var lastMayor: ActiveMayor? = null
private var nextMayorTimestamp = Timestamp.distantPast()
private var nextMayorTimestamp = Instant.DISTANT_PAST

private var lastUpdate = Timestamp.distantPast()
private var lastUpdate = Instant.DISTANT_PAST
private val shouldUpdate: Boolean get() = !suppressAutoUpdate && lastUpdate.elapsedSince() > 20.minutes

fun Mayor.isElected(): Boolean = currentMayor.mayor == this
Expand All @@ -75,13 +77,13 @@ object MayorAPI {
if(!SkyBlockAPI.inSkyBlock) return

if(shouldUpdate) NobaAddons.runAsync { getCurrentMayor() }
nextMayorTimestamp = SkyBlockTime(SkyBlockTime.now().getElectionYear() + 1, ELECTION_END_MONTH, ELECTION_END_DAY).asTimestamp()
nextMayorTimestamp = SkyBlockTime(SkyBlockTime.now().getElectionYear() + 1, ELECTION_END_MONTH, ELECTION_END_DAY).toInstant()

if(!Mayor.JERRY.isElected()) return
if(jerryMayor.first.mayor == Mayor.UNKNOWN) return
if(jerryMayor.second.isFuture()) return

jerryMayor = Mayor.UNKNOWN.withNone() to Timestamp.distantPast()
jerryMayor = Mayor.UNKNOWN.withNone() to Instant.DISTANT_PAST
ChatUtils.addMessage(tr("nobaaddons.mayorApi.jerryMayorExpired", "The Perkpocalypse Mayor has expired! Click here to get the new mayor.").runCommand("/calendar"))
}

Expand Down Expand Up @@ -118,7 +120,7 @@ object MayorAPI {
}

private suspend fun getCurrentMayor() {
lastUpdate = Timestamp.now()
lastUpdate = Instant.now

val election = HTTPUtils.fetchJson<Election>(ELECTION_API_URL).await()
val mayor = election.mayor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ import me.nobaboy.nobaaddons.utils.RegexUtils.forEachFullMatch
import me.nobaboy.nobaaddons.utils.RegexUtils.getGroupFromFirstFullMatch
import me.nobaboy.nobaaddons.utils.RegexUtils.getGroupFromFullMatch
import me.nobaboy.nobaaddons.utils.Scheduler
import me.nobaboy.nobaaddons.utils.ScoreboardUtils
import me.nobaboy.nobaaddons.utils.SkyBlockSeason
import me.nobaboy.nobaaddons.utils.SkyBlockTime
import me.nobaboy.nobaaddons.utils.annotations.ApiModule
import me.nobaboy.nobaaddons.utils.hypixel.SkyBlockSeason
import me.nobaboy.nobaaddons.utils.hypixel.SkyBlockTime
import me.nobaboy.nobaaddons.utils.items.ItemUtils.lore
import me.nobaboy.nobaaddons.utils.items.ItemUtils.stringLines
import me.nobaboy.nobaaddons.utils.mc.ScoreboardUtils
import net.hypixel.data.type.GameType
import java.util.UUID
import kotlin.uuid.ExperimentalUuidApi
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ import me.nobaboy.nobaaddons.events.impl.client.TickEvents
import me.nobaboy.nobaaddons.events.impl.skyblock.SkyBlockEvents
import me.nobaboy.nobaaddons.events.impl.skyblock.SlayerEvents
import me.nobaboy.nobaaddons.repo.Repo.fromRepo
import me.nobaboy.nobaaddons.utils.CollectionUtils.nextAfter
import me.nobaboy.nobaaddons.utils.CommonPatterns
import me.nobaboy.nobaaddons.utils.EntityUtils
import me.nobaboy.nobaaddons.utils.MCUtils
import me.nobaboy.nobaaddons.utils.RegexUtils.onFullMatch
import me.nobaboy.nobaaddons.utils.ScoreboardUtils
import me.nobaboy.nobaaddons.utils.annotations.ApiModule
import me.nobaboy.nobaaddons.utils.collections.CollectionUtils.nextAfter
import me.nobaboy.nobaaddons.utils.mc.EntityUtils
import me.nobaboy.nobaaddons.utils.mc.MCUtils
import me.nobaboy.nobaaddons.utils.mc.ScoreboardUtils
import net.minecraft.entity.LivingEntity
import net.minecraft.entity.decoration.ArmorStandEntity
import net.minecraft.network.packet.s2c.play.EntityTrackerUpdateS2CPacket
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package me.nobaboy.nobaaddons.api.skyblock.events.hoppity
import me.nobaboy.nobaaddons.api.skyblock.SkyBlockAPI.inIsland
import me.nobaboy.nobaaddons.api.skyblock.SkyBlockAPI.isSeason
import me.nobaboy.nobaaddons.core.SkyBlockIsland
import me.nobaboy.nobaaddons.utils.InventoryUtils
import me.nobaboy.nobaaddons.utils.MCUtils
import me.nobaboy.nobaaddons.utils.SkyBlockSeason
import me.nobaboy.nobaaddons.utils.mc.InventoryUtils
import me.nobaboy.nobaaddons.utils.mc.MCUtils
import me.nobaboy.nobaaddons.utils.hypixel.SkyBlockSeason
import me.nobaboy.nobaaddons.utils.items.ItemUtils.skyBlockId

object HoppityAPI {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package me.nobaboy.nobaaddons.api.skyblock.events.mythological

import kotlinx.datetime.Instant
import me.nobaboy.nobaaddons.config.NobaConfig
import me.nobaboy.nobaaddons.core.events.MythologicalMobs
import me.nobaboy.nobaaddons.events.impl.chat.ChatMessageEvents
Expand All @@ -9,13 +10,14 @@ import me.nobaboy.nobaaddons.events.impl.skyblock.MythologicalEvents
import me.nobaboy.nobaaddons.events.impl.skyblock.SkyBlockEvents
import me.nobaboy.nobaaddons.features.events.mythological.BurrowType
import me.nobaboy.nobaaddons.repo.Repo.fromRepo
import me.nobaboy.nobaaddons.utils.BlockUtils.getBlockAt
import me.nobaboy.nobaaddons.utils.NobaVec
import me.nobaboy.nobaaddons.utils.RegexUtils.onFullMatch
import me.nobaboy.nobaaddons.utils.Scheduler
import me.nobaboy.nobaaddons.utils.TimedSet
import me.nobaboy.nobaaddons.utils.Timestamp
import me.nobaboy.nobaaddons.utils.TimeUtils.elapsedSince
import me.nobaboy.nobaaddons.utils.TimeUtils.now
import me.nobaboy.nobaaddons.utils.annotations.ApiModule
import me.nobaboy.nobaaddons.utils.collections.TimedSet
import me.nobaboy.nobaaddons.utils.mc.BlockUtils.getBlockAt
import net.minecraft.block.Blocks
import net.minecraft.particle.ParticleTypes
import kotlin.time.Duration.Companion.minutes
Expand All @@ -38,7 +40,7 @@ object BurrowAPI {
private var fakeBurrow: NobaVec? = null
var mobBurrow: NobaVec? = null

private var lastBurrowChatMessage = Timestamp.distantPast()
private var lastBurrowChatMessage = Instant.DISTANT_PAST

init {
SkyBlockEvents.ISLAND_CHANGE.register { reset() }
Expand Down Expand Up @@ -95,17 +97,17 @@ object BurrowAPI {

val message = event.cleaned

if(message == DEFEAT_MOBS_MESSAGE) lastBurrowChatMessage = Timestamp.now()
if(message == DEFEAT_MOBS_MESSAGE) lastBurrowChatMessage = Instant.now

DIG_BURROW_PATTERN.onFullMatch(message) {
lastBurrowChatMessage = Timestamp.now()
lastBurrowChatMessage = Instant.now
if(lastDugBurrow?.let { tryDigBurrow(it) } != true) return
fakeBurrow = lastDugBurrow
return
}

DIG_MOB_PATTERN.onFullMatch(message) {
lastBurrowChatMessage = Timestamp.now()
lastBurrowChatMessage = Instant.now
mobBurrow = lastDugBurrow

val mob = MythologicalMobs.getByName(groups["mob"]?.value ?: return) ?: return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import me.nobaboy.nobaaddons.api.skyblock.MayorAPI.isActive
import me.nobaboy.nobaaddons.api.skyblock.SkyBlockAPI.inIsland
import me.nobaboy.nobaaddons.core.SkyBlockIsland
import me.nobaboy.nobaaddons.core.mayor.MayorPerk
import me.nobaboy.nobaaddons.utils.InventoryUtils
import me.nobaboy.nobaaddons.utils.mc.InventoryUtils
import me.nobaboy.nobaaddons.utils.items.ItemUtils.skyBlockId
import net.minecraft.entity.player.PlayerEntity

Expand Down
Loading