diff options
5 files changed, 63 insertions, 14 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt index 6a9bc3d2b..580954dc2 100644 --- a/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt +++ b/src/main/java/at/hannibal2/skyhanni/data/HypixelData.kt @@ -29,6 +29,7 @@ class HypixelData { var bingo = false var profileName = "" + var joinedWorld = 0L fun readSkyBlockArea(): String { return ScoreboardData.sidebarLinesFormatted @@ -43,6 +44,7 @@ class HypixelData { @SubscribeEvent fun onWorldChange(event: WorldEvent.Load) { skyBlock = false + joinedWorld = System.currentTimeMillis() } @SubscribeEvent 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 6fb6887c3..5aa1a4128 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 @@ -21,7 +21,6 @@ import at.hannibal2.skyhanni.utils.StringUtils.removeColor import at.hannibal2.skyhanni.utils.renderables.Renderable import io.github.moulberry.notenoughupdates.events.SlotClickEvent import io.github.moulberry.notenoughupdates.util.MinecraftExecutor -import io.github.moulberry.notenoughupdates.util.SBInfo import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiEditSign import net.minecraft.entity.Entity @@ -399,7 +398,7 @@ class GardenVisitorFeatures { } } if (visitors.keys.removeIf { - val time = System.currentTimeMillis() - SBInfo.getInstance().joinedWorld + val time = System.currentTimeMillis() - LorenzUtils.lastWorldSwitch val removed = it !in visitorsInTab && time > 2_000 if (removed) { logger.log("Removed old visitor: '$it'") @@ -410,16 +409,28 @@ class GardenVisitorFeatures { } for (name in visitorsInTab) { if (!visitors.containsKey(name)) { - visitors[name] = Visitor(name, status = VisitorStatus.NEW) - logger.log("New visitor detected: '$name'") - if (config.visitorNotificationTitle) { - TitleUtils.sendTitle("§eNew Visitor", 5_000) - } - if (config.visitorNotificationChat) { - val displayName = GardenVisitorColorNames.getColoredName(name) - LorenzUtils.chat("§e[SkyHanni] $displayName §eis visiting your garden!") - } - updateDisplay() + addVisitor(name) + } + } + } + + private fun addVisitor(name: String) { + visitors[name] = Visitor(name, status = VisitorStatus.NEW) + logger.log("New visitor detected: '$name'") + + if (config.visitorNotificationTitle) { + TitleUtils.sendTitle("§eNew Visitor", 5_000) + } + if (config.visitorNotificationChat) { + val displayName = GardenVisitorColorNames.getColoredName(name) + LorenzUtils.chat("§e[SkyHanni] $displayName §eis visiting your garden!") + } + updateDisplay() + + if (System.currentTimeMillis() > LorenzUtils.lastWorldSwitch + 2_000) { + if (name.removeColor().contains("Jerry")) { + logger.log("Jerry!") + ItemBlink.setBlink(NEUItems.getItemStackOrNull("JERRY;4"), 5_000) } } } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ItemBlink.kt b/src/main/java/at/hannibal2/skyhanni/utils/ItemBlink.kt new file mode 100644 index 000000000..8afc2a2b7 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/utils/ItemBlink.kt @@ -0,0 +1,31 @@ +package at.hannibal2.skyhanni.utils + +import net.minecraft.item.Item +import net.minecraft.item.ItemStack + +object ItemBlink { + private val offsets = mutableMapOf<Item, Long>() + private var lastOffset = 0L + private var endOfBlink = 0L + private var blinkItem: ItemStack? = null + + fun setBlink(item: ItemStack?, durationMillis: Long) { + endOfBlink = System.currentTimeMillis() + durationMillis + blinkItem = item + } + + fun ItemStack.checkBlinkItem(): ItemStack { + val stack = blinkItem ?: return this + if (System.currentTimeMillis() > endOfBlink) return this + + val offset: Long = if (!offsets.containsKey(item)) { + lastOffset += 200 + val number = lastOffset % 1000 + offsets[item] = number + number + } else { + offsets[item]!! + } + return if ((offset + System.currentTimeMillis()) % 1000 > 500) stack else this + } +}
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt index 526d2a3c7..8047cc61a 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt @@ -51,6 +51,9 @@ object LorenzUtils { val isBingoProfile: Boolean get() = inSkyBlock && HypixelData.bingo + val lastWorldSwitch: Long + get() = HypixelData.joinedWorld + const val DEBUG_PREFIX = "[SkyHanni Debug] §7" private val log = LorenzLogger("chat/mod_sent") diff --git a/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt b/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt index 71bcc2f09..b34462e3e 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/NEUItems.kt @@ -1,5 +1,6 @@ package at.hannibal2.skyhanni.utils +import at.hannibal2.skyhanni.utils.ItemBlink.checkBlinkItem import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName import at.hannibal2.skyhanni.utils.NumberUtil.romanToDecimal import io.github.moulberry.notenoughupdates.NEUManager @@ -122,7 +123,8 @@ object NEUItems { fun isVanillaItem(item: ItemStack) = manager.auctionManager.isVanillaItem(item.getInternalName()) fun ItemStack.renderOnScreen(x: Float, y: Float, scaleMultiplier: Double = 1.0) { - val isSkull = item === Items.skull + val item = checkBlinkItem() + val isSkull = item.item === Items.skull val baseScale = (if (isSkull) 0.8f else 0.6f) val finalScale = baseScale * scaleMultiplier @@ -144,7 +146,7 @@ object NEUItems { GlStateManager.scale(finalScale, finalScale, 1.0) RenderHelper.enableGUIStandardItemLighting() - Minecraft.getMinecraft().renderItem.renderItemIntoGUI(this, 0, 0) + Minecraft.getMinecraft().renderItem.renderItemIntoGUI(item, 0, 0) RenderHelper.disableStandardItemLighting() GlStateManager.popMatrix() |