diff options
Diffstat (limited to 'src/main/kotlin/skytils/skytilsmod/features/impl/handlers/ChatTabs.kt')
-rw-r--r-- | src/main/kotlin/skytils/skytilsmod/features/impl/handlers/ChatTabs.kt | 37 |
1 files changed, 32 insertions, 5 deletions
diff --git a/src/main/kotlin/skytils/skytilsmod/features/impl/handlers/ChatTabs.kt b/src/main/kotlin/skytils/skytilsmod/features/impl/handlers/ChatTabs.kt index e62a2129..eebf24b0 100644 --- a/src/main/kotlin/skytils/skytilsmod/features/impl/handlers/ChatTabs.kt +++ b/src/main/kotlin/skytils/skytilsmod/features/impl/handlers/ChatTabs.kt @@ -22,6 +22,7 @@ import gg.essential.universal.UResolution import net.minecraft.client.gui.GuiChat import net.minecraft.network.play.server.S02PacketChat import net.minecraft.util.IChatComponent +import net.minecraftforge.client.event.GuiOpenEvent import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.fml.common.eventhandler.EventPriority import net.minecraftforge.fml.common.eventhandler.SubscribeEvent @@ -31,6 +32,7 @@ import skytils.skytilsmod.Skytils.Companion.mc import skytils.skytilsmod.events.PacketEvent import skytils.skytilsmod.gui.elements.CleanButton import skytils.skytilsmod.mixins.extensions.ExtensionChatStyle +import skytils.skytilsmod.mixins.transformers.accessors.AccessorGuiChat import skytils.skytilsmod.mixins.transformers.accessors.AccessorGuiNewChat import skytils.skytilsmod.utils.Utils @@ -59,6 +61,19 @@ object ChatTabs { } @SubscribeEvent + fun onOpenGui(event: GuiOpenEvent) { + if (!Skytils.config.chatTabs || !Skytils.config.preFillChatTabCommands || !Utils.isOnHypixel || event.gui !is GuiChat) return + if ((event.gui as AccessorGuiChat).defaultInputFieldText.isBlank()) { + (event.gui as AccessorGuiChat).defaultInputFieldText = when (selectedTab) { + ChatTab.ALL -> "/ac " + ChatTab.PARTY -> "/pc " + ChatTab.GUILD -> "/gc " + ChatTab.PRIVATE -> "/r " + } + } + } + + @SubscribeEvent fun onScreenEvent(event: GuiScreenEvent) { if (!Skytils.config.chatTabs || !Utils.isOnHypixel || event.gui !is GuiChat) return val chat = mc.ingameGUI.chatGUI @@ -73,6 +88,16 @@ object ChatTabs { }?.let { selectedTab = it.key mc.ingameGUI.chatGUI.refreshChat() + if (Skytils.config.autoSwitchChatChannel) { + Skytils.sendMessageQueue.addFirst( + when (selectedTab) { + ChatTab.ALL -> "/chat a" + ChatTab.PARTY -> "/chat p" + ChatTab.GUILD -> "/chat g" + else -> "" + } + ) + } } } is GuiScreenEvent.DrawScreenEvent.Pre -> { @@ -90,21 +115,23 @@ object ChatTabs { mc.ingameGUI.chatGUI.refreshChat() } - enum class ChatTab(val button: CleanButton, val isValid: (IChatComponent) -> Boolean) { - ALL(CleanButton(-69420, 2, 0, 20, 20, "A"), { true }), - PARTY(CleanButton(-69420, 24, 0, 20, 20, "P"), { + enum class ChatTab(text: String, val isValid: (IChatComponent) -> Boolean) { + ALL("A", { true }), + PARTY("P", { val formatted = it.formattedText formatted.startsWith("§r§9Party §8> ") || formatted.startsWith("§r§9P §8> ") }), - GUILD(CleanButton(-69420, 46, 0, 20, 20, "G"), { + GUILD("G", { val formatted = it.formattedText formatted.startsWith("§r§2Guild > ") || formatted.startsWith("§r§2G > ") }), - PRIVATE(CleanButton(-69420, 68, 0, 20, 20, "PM"), { + PRIVATE("PM", { val formatted = it.formattedText formatted.startsWith("§dTo ") || formatted.startsWith("§dFrom ") }); + val button = CleanButton(-69420, 2 + 20 * ordinal, 0, 20, 20, text) + companion object { val buttons by lazy { values().associateWith { it.button } } } |