diff options
Diffstat (limited to 'src/main')
6 files changed, 102 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt index 938e9ce61..867a2bca9 100644 --- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt +++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt @@ -266,6 +266,7 @@ class SkyHanniMod { loadModule(GardenYawAndPitch()) loadModule(MovementSpeedDisplay()) loadModule(ChumBucketHider()) + loadModule(GardenRecentTeleportPadsDisplay()) init() diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java b/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java index 93b25e726..168ed0ca0 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/Garden.java @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.config.features; import at.hannibal2.skyhanni.config.core.config.Position; import com.google.gson.annotations.Expose; import io.github.moulberry.moulconfig.annotations.*; +import io.github.moulberry.moulconfig.observer.Property; import net.minecraft.client.Minecraft; import org.lwjgl.input.Keyboard; @@ -826,6 +827,33 @@ public class Garden { public boolean teleportPadsInventoryNumbers = false; @Expose + @ConfigOption(name = "Recent Teleport Pad Display", desc = "") + @Accordion + @ConfigAccordionId(id = 19) + public RecentTeleportPads teleportPadsRecentDisplay = new RecentTeleportPads(); + + public static class RecentTeleportPads { + + @Expose + @ConfigOption(name = "Enabled", desc = "Show the recent teleport pads used in a display.") + @ConfigEditorBoolean + public boolean enabled = false; + + @Expose + @ConfigOption(name = "Only Target", desc = "Hide the 'From' part of the display.") + @ConfigEditorBoolean + public Property<Boolean> onlyTarget = Property.of(false); + + @Expose + @ConfigOption(name = "Hide Chat", desc = "Hide teleport pad chat messages.") + @ConfigEditorBoolean + public boolean hideChat = false; + + @Expose + public Position pos = new Position(206, 158, false, true); + } + + @Expose @ConfigOption(name = "Anita Medal Profit", desc = "") @ConfigEditorAccordion(id = 16) public boolean anitaMedalProfit = false; diff --git a/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoCardDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoCardDisplay.kt index 681b422fe..f49bcf1ed 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoCardDisplay.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/bingo/BingoCardDisplay.kt @@ -11,6 +11,7 @@ import at.hannibal2.skyhanni.utils.ItemUtils import at.hannibal2.skyhanni.utils.ItemUtils.getLore import at.hannibal2.skyhanni.utils.ItemUtils.name import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.LorenzUtils.onToggle import at.hannibal2.skyhanni.utils.RenderUtils.renderStrings import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.StringUtils.removeColor @@ -164,6 +165,6 @@ class BingoCardDisplay { @SubscribeEvent fun onConfigLoad(event: ConfigLoadEvent) { - config.hideCommunityGoals.whenChanged { _, _ -> update() } + config.hideCommunityGoals.onToggle { update() } } }
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/GardenRecentTeleportPadsDisplay.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenRecentTeleportPadsDisplay.kt new file mode 100644 index 000000000..0577088bd --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/GardenRecentTeleportPadsDisplay.kt @@ -0,0 +1,64 @@ +package at.hannibal2.skyhanni.features.garden + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.events.ConfigLoadEvent +import at.hannibal2.skyhanni.events.GuiRenderEvent +import at.hannibal2.skyhanni.events.LorenzChatEvent +import at.hannibal2.skyhanni.utils.LorenzUtils.onToggle +import at.hannibal2.skyhanni.utils.RenderUtils.renderStrings +import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +class GardenRecentTeleportPadsDisplay { + private val config get() = SkyHanniMod.feature.garden.teleportPadsRecentDisplay + private var display = listOf<String>() + private var recentTeleports = mutableListOf<Pair<String, String>>() + private val pattern = + "§aWarped from the §r(?<from>.*) Teleport Pad§r§a to the §r(?<to>.*) Teleport Pad§r§a!".toPattern() + + @SubscribeEvent + fun onChat(event: LorenzChatEvent) { + if (!GardenAPI.inGarden()) return + + pattern.matchMatcher(event.message) { + if (config.enabled) { + recentTeleports.add(Pair(group("from"), group("to"))) + if (recentTeleports.size > 3) recentTeleports.removeFirst() + update() + } + + if (config.hideChat) { + event.blockedReason = "recent_teleport_pads" + } + } + } + + private fun update() { + display = buildList { + add("§6Recent TPs") + for ((from, to) in recentTeleports) { + if (config.onlyTarget.get()) { + add(to) + } else { + add(" $from §7-> $to") + } + } + } + } + + @SubscribeEvent + fun onConfigLoad(event: ConfigLoadEvent) { + config.onlyTarget.onToggle { + update() + } + } + + @SubscribeEvent + fun onRenderOverlay(event: GuiRenderEvent.GameOverlayRenderEvent) { + if (!isEnabled()) return + + config.pos.renderStrings(display, posLabel = "Recent Teleport Pads Display") + } + + fun isEnabled() = GardenAPI.inGarden() && config.enabled +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/update/UpdateManager.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/update/UpdateManager.kt index fc97a4b51..3dbba1cfb 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/update/UpdateManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/update/UpdateManager.kt @@ -5,6 +5,7 @@ import at.hannibal2.skyhanni.config.features.About import at.hannibal2.skyhanni.events.ConfigLoadEvent import at.hannibal2.skyhanni.utils.LorenzLogger import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.LorenzUtils.onToggle import io.github.moulberry.moulconfig.processor.MoulConfigProcessor import io.github.moulberry.notenoughupdates.util.MinecraftExecutor import moe.nea.libautoupdate.* @@ -34,8 +35,7 @@ object UpdateManager { @SubscribeEvent fun onConfigLoad(event: ConfigLoadEvent) { - SkyHanniMod.feature.about.updateStream.whenChanged { oldValue, newValue -> - if (oldValue != newValue) + SkyHanniMod.feature.about.updateStream.onToggle { reset() } } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt index 60062ed3c..84807dcca 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt @@ -256,6 +256,10 @@ object LorenzUtils { } fun <T> onToggle(vararg properties: Property<out T>, observer: Runnable) { - onChange(*properties) { _, _ -> observer.run() } + onChange(*properties) { _, _ -> observer.run() } + } + + fun <T> Property<out T>.onToggle(observer: Runnable) { + whenChanged { _, _ -> observer.run() } } }
\ No newline at end of file |