diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java | 6 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/inventory/experiments/GuardianReminder.kt | 92 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/inventory/experiments/UltraRareBookAlert.kt (renamed from src/main/java/at/hannibal2/skyhanni/features/inventory/UltraRareBookAlert.kt) | 2 |
3 files changed, 99 insertions, 1 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java index f6818d2c8..5f54e707d 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/inventory/helper/HelperConfig.java @@ -74,6 +74,12 @@ public class HelperConfig { @ConfigEditorBoolean @FeatureToggle public boolean ultraRareBookAlert = false; + + @Expose + @ConfigOption(name = "Guardian Reminder", desc = "Sends a warning when opening the Experimentation Table without a §9§lGuardian Pet §7equipped.") + @ConfigEditorBoolean + @FeatureToggle + public boolean guardianReminder = false; } } diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/experiments/GuardianReminder.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/experiments/GuardianReminder.kt new file mode 100644 index 000000000..20c0438c9 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/experiments/GuardianReminder.kt @@ -0,0 +1,92 @@ +package at.hannibal2.skyhanni.features.inventory.experiments + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.data.PetAPI +import at.hannibal2.skyhanni.events.GuiRenderEvent +import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent +import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule +import at.hannibal2.skyhanni.utils.ChatUtils +import at.hannibal2.skyhanni.utils.ColorUtils.withAlpha +import at.hannibal2.skyhanni.utils.HypixelCommands +import at.hannibal2.skyhanni.utils.InventoryUtils +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.RegexUtils.matches +import at.hannibal2.skyhanni.utils.RenderUtils +import at.hannibal2.skyhanni.utils.SimpleTimeMark +import at.hannibal2.skyhanni.utils.SoundUtils +import at.hannibal2.skyhanni.utils.renderables.Renderable +import at.hannibal2.skyhanni.utils.renderables.RenderableUtils.renderXYAligned +import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern +import net.minecraft.client.Minecraft +import net.minecraft.client.gui.inventory.GuiContainer +import net.minecraft.client.renderer.GlStateManager +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import java.awt.Color +import kotlin.time.Duration.Companion.milliseconds +import kotlin.time.Duration.Companion.seconds + +@SkyHanniModule +object GuardianReminder { + + private val config get() = SkyHanniMod.feature.inventory.helper.enchanting + private var lastInventoryOpen = SimpleTimeMark.farPast() + private var lastErrorSound = SimpleTimeMark.farPast() + + private val patternGroup = RepoPattern.group("data.enchanting.inventory.experimentstable") + private val inventoryNamePattern by patternGroup.pattern( + "mainmenu", + "Experimentation Table", + ) + private val petNamePattern by patternGroup.pattern( + "guardianpet", + "§[956d]Guardian", + ) + + @SubscribeEvent + fun onInventory(event: InventoryFullyOpenedEvent) { + if (!isEnabled()) return + if (!inventoryNamePattern.matches(event.inventoryName)) return + if (petNamePattern.matches(PetAPI.currentPet)) return + + lastInventoryOpen = SimpleTimeMark.now() + ChatUtils.clickToActionOrDisable( + "Use a §9§lGuardian Pet §efor more Exp in the Experimentation Table.", + option = config::guardianReminder, + actionName = "open pets menu", + action = { + HypixelCommands.pet() + }, + ) + } + + @SubscribeEvent + fun onRenderOverlay(event: GuiRenderEvent.ChestGuiOverlayRenderEvent) { + if (!isEnabled()) return + if (!inventoryNamePattern.matches(InventoryUtils.openInventoryName())) return + if (lastInventoryOpen.passedSince() > 2.seconds) return + val gui = Minecraft.getMinecraft().currentScreen as? GuiContainer ?: return + + sendTitle(gui.width, gui.height) + if (lastErrorSound.passedSince() > 200.milliseconds) { + lastErrorSound = SimpleTimeMark.now() + SoundUtils.playPlingSound() + } + } + + // TODO rename to "send title in inventory", move to utils + private fun sendTitle(width: Int, height: Int) { + GlStateManager.pushMatrix() + GlStateManager.translate(0f, -150f, 500f) + Renderable.drawInsideRoundedRect( + Renderable.string("§cWrong Pet equipped!", 1.5), + Color(Color.DARK_GRAY.withAlpha(0), true), + horizontalAlign = RenderUtils.HorizontalAlignment.CENTER, + verticalAlign = RenderUtils.VerticalAlignment.CENTER, + ).renderXYAligned(0, 125, width, height) + + GlStateManager.translate(0f, 150f, -500f) + GlStateManager.popMatrix() + } + + private fun isEnabled() = LorenzUtils.inSkyBlock && config.guardianReminder +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/inventory/UltraRareBookAlert.kt b/src/main/java/at/hannibal2/skyhanni/features/inventory/experiments/UltraRareBookAlert.kt index 32f6ebb7e..1cc849cad 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/inventory/UltraRareBookAlert.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/inventory/experiments/UltraRareBookAlert.kt @@ -1,4 +1,4 @@ -package at.hannibal2.skyhanni.features.inventory +package at.hannibal2.skyhanni.features.inventory.experiments import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.events.GuiRenderEvent |