diff options
author | Wyvest <45589059+Wyvest@users.noreply.github.com> | 2022-08-16 21:54:31 +0700 |
---|---|---|
committer | Wyvest <45589059+Wyvest@users.noreply.github.com> | 2022-08-16 21:54:31 +0700 |
commit | 794dcf0a1312b58cf1247c0907414fd1eb88e06d (patch) | |
tree | 7f3d608a901a0ac8164ca6a29a69410de7701dc8 /src/main/kotlin/cc/woverflow/chatting | |
parent | 89938d618307955ac1218b0f286bb1b1ce252e35 (diff) | |
download | Chatting-794dcf0a1312b58cf1247c0907414fd1eb88e06d.tar.gz Chatting-794dcf0a1312b58cf1247c0907414fd1eb88e06d.tar.bz2 Chatting-794dcf0a1312b58cf1247c0907414fd1eb88e06d.zip |
new: completely remove Essential
fix: fix copy chat button not rendering when patcher transparent chat is enabled
Diffstat (limited to 'src/main/kotlin/cc/woverflow/chatting')
9 files changed, 51 insertions, 264 deletions
diff --git a/src/main/kotlin/cc/woverflow/chatting/Chatting.kt b/src/main/kotlin/cc/woverflow/chatting/Chatting.kt index 3b7eb8b..3aa6302 100644 --- a/src/main/kotlin/cc/woverflow/chatting/Chatting.kt +++ b/src/main/kotlin/cc/woverflow/chatting/Chatting.kt @@ -1,7 +1,10 @@ package cc.woverflow.chatting +import cc.polyfrost.oneconfig.libs.universal.UDesktop import cc.polyfrost.oneconfig.libs.universal.UResolution import cc.polyfrost.oneconfig.utils.commands.CommandManager +import cc.polyfrost.oneconfig.utils.dsl.browseLink +import cc.polyfrost.oneconfig.utils.notifications.Notifications import cc.woverflow.chatting.chat.ChatSearchingManager import cc.woverflow.chatting.chat.ChatShortcuts import cc.woverflow.chatting.chat.ChatSpamBlock @@ -42,7 +45,7 @@ import java.util.* modid = Chatting.ID, name = Chatting.NAME, version = Chatting.VER, - modLanguageAdapter = "gg.essential.api.utils.KotlinAdapter" + modLanguageAdapter = "cc.polyfrost.oneconfig.utils.KotlinLanguageAdapter" ) object Chatting { @@ -92,9 +95,9 @@ object Chatting { fun onForgeLoad(event: FMLLoadCompleteEvent) { if (ChattingConfig.informForAlternatives) { if (isHychat) { - //sendBrandedNotification(NAME, "Hychat can be removed as it is replaced by Chatting. Click here for more information.", action = { - // UDesktop.browseURL("https://microcontrollersdev.github.io/Alternatives/1.8.9/hychat") - //}) + Notifications.INSTANCE.send(NAME, "Hychat can be removed as it is replaced by Chatting. Click here for more information.") { + UDesktop.browseLink("https://microcontrollersdev.github.io/Alternatives/1.8.9/hychat") + } } if (isSkytils) { try { @@ -116,23 +119,23 @@ object Chatting { val chatTabs = skytilsClass.getDeclaredField("chatTabs") chatTabs.isAccessible = true if (chatTabs.getBoolean(instance)) { - //sendBrandedNotification(NAME, "Skytils' chat tabs can be disabled as it is replace by Chatting.\nClick here to automatically do this.", 6F, action = { - // chatTabs.setBoolean(instance, false) - // ChattingConfig.chatTabs = true - // ChattingConfig.hypixelOnlyChatTabs = true - // ChattingConfig.save() - // skytilsClass.getMethod("markDirty").invoke(instance) - // skytilsClass.getMethod("writeData").invoke(instance) - //}) + Notifications.INSTANCE.send(NAME, "Skytils' chat tabs can be disabled as it is replace by Chatting.\nClick here to automatically do this.", 6F) { + chatTabs.setBoolean(instance, false) + ChattingConfig.chatTabs = true + ChattingConfig.hypixelOnlyChatTabs = true + ChattingConfig.save() + skytilsClass.getMethod("markDirty").invoke(instance) + skytilsClass.getMethod("writeData").invoke(instance) + } } val copyChat = skytilsClass.getDeclaredField("chatTabs") copyChat.isAccessible = true if (copyChat.getBoolean(instance)) { - //sendBrandedNotification(NAME, "Skytils' copy chat messages can be disabled as it is replace by Chatting.\nClick here to automatically do this.", 6F, action = { - // copyChat.setBoolean(instance, false) - // skytilsClass.getMethod("markDirty").invoke(instance) - // skytilsClass.getMethod("writeData").invoke(instance) - //}) + Notifications.INSTANCE.send(NAME, "Skytils' copy chat messages can be disabled as it is replace by Chatting.\nClick here to automatically do this.", 6F) { + copyChat.setBoolean(instance, false) + skytilsClass.getMethod("markDirty").invoke(instance) + skytilsClass.getMethod("writeData").invoke(instance) + } } } @@ -197,11 +200,11 @@ object Chatting { private fun screenshot(messages: List<String>): BufferedImage? { if (messages.isEmpty()) { - //sendBrandedNotification("Chatting", "Chat window is empty.") + Notifications.INSTANCE.send("Chatting", "Chat window is empty.") return null } if (!OpenGlHelper.isFramebufferEnabled()) { - //sendBrandedNotification("Chatting", "Screenshot failed, please disable “Fast Render” in OptiFine’s “Performance” tab.") + Notifications.INSTANCE.send("Chatting", "Screenshot failed, please disable “Fast Render” in OptiFine’s “Performance” tab.") return null } @@ -220,11 +223,11 @@ object Chatting { val image = fb.screenshot(file) Minecraft.getMinecraft().entityRenderer.setupOverlayRendering() Minecraft.getMinecraft().framebuffer.bindFramebuffer(true) - //sendBrandedNotification("Chatting", "Chat screenshotted successfully." + (if (ChattingConfig.copyMode != 1) "\nClick to open." else ""), action = { - // if (!UDesktop.open(file)) { - // sendBrandedNotification("Chatting", "Could not browse!") - // } - // }) + Notifications.INSTANCE.send("Chatting", "Chat screenshotted successfully." + (if (ChattingConfig.copyMode != 1) "\nClick to open." else "")) { + if (!UDesktop.open(file)) { + Notifications.INSTANCE.send("Chatting", "Could not browse!") + } + } return image } } diff --git a/src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt b/src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt index 9704e29..40ebd9a 100644 --- a/src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt +++ b/src/main/kotlin/cc/woverflow/chatting/config/ChattingConfig.kt @@ -1,26 +1,18 @@ package cc.woverflow.chatting.config import cc.polyfrost.oneconfig.config.Config -import cc.polyfrost.oneconfig.config.annotations.Button -import cc.polyfrost.oneconfig.config.annotations.Checkbox -import cc.polyfrost.oneconfig.config.annotations.Dropdown -import cc.polyfrost.oneconfig.config.annotations.Info -import cc.polyfrost.oneconfig.config.annotations.Slider -import cc.polyfrost.oneconfig.config.annotations.Switch +import cc.polyfrost.oneconfig.config.annotations.* import cc.polyfrost.oneconfig.config.core.OneColor import cc.polyfrost.oneconfig.config.data.InfoType import cc.polyfrost.oneconfig.config.data.Mod import cc.polyfrost.oneconfig.config.data.ModType import cc.polyfrost.oneconfig.config.migration.VigilanceMigrator -import cc.polyfrost.oneconfig.utils.dsl.openScreen import cc.polyfrost.oneconfig.utils.hypixel.HypixelUtils import cc.woverflow.chatting.Chatting import cc.woverflow.chatting.chat.ChatShortcuts import cc.woverflow.chatting.chat.ChatTab import cc.woverflow.chatting.chat.ChatTabs -import cc.woverflow.chatting.gui.ChatShortcutViewGui import cc.woverflow.chatting.gui.components.TabButton - import java.io.File object ChattingConfig : @@ -48,14 +40,14 @@ object ChattingConfig : ) var removeScrollBar = false - @cc.polyfrost.oneconfig.config.annotations.Color( + @Color( name = "Chat Background Color", category = "General", allowAlpha = false ) var chatBackgroundColor = OneColor(0, 0, 0, 128) - @cc.polyfrost.oneconfig.config.annotations.Color( + @Color( name = "Copy Chat Message Background Color", category = "General", allowAlpha = false @@ -197,12 +189,6 @@ object ChattingConfig : ) var hypixelOnlyChatShortcuts = true - @Button( - name = "Open Chat Shortcuts Editor GUI", - category = "Shortcuts", text = "Open" - ) - var openChatShortcutsGUI = Runnable { ChatShortcutViewGui().openScreen() } - init { initialize() addListener("chatTabs") { diff --git a/src/main/kotlin/cc/woverflow/chatting/gui/ChatShortcutEditGui.kt b/src/main/kotlin/cc/woverflow/chatting/gui/ChatShortcutEditGui.kt deleted file mode 100644 index 983e2ed..0000000 --- a/src/main/kotlin/cc/woverflow/chatting/gui/ChatShortcutEditGui.kt +++ /dev/null @@ -1,88 +0,0 @@ -package cc.woverflow.chatting.gui - -import cc.woverflow.chatting.chat.ChatShortcuts -import gg.essential.api.EssentialAPI -import gg.essential.api.gui.buildConfirmationModal -import gg.essential.elementa.ElementaVersion -import gg.essential.elementa.WindowScreen -import gg.essential.elementa.components.UIBlock -import gg.essential.elementa.constraints.CenterConstraint -import gg.essential.elementa.constraints.SiblingConstraint -import gg.essential.elementa.dsl.* -import gg.essential.vigilance.gui.VigilancePalette -import gg.essential.vigilance.gui.settings.ButtonComponent -import gg.essential.vigilance.gui.settings.TextComponent - -class ChatShortcutEditGui(private var alias: String, private var command: String, private val editing: Boolean) : - WindowScreen(restoreCurrentGuiOnClose = true, version = ElementaVersion.V1) { - - private val initialAlias = alias - private val initialCommand = command - - override fun initScreen(width: Int, height: Int) { - super.initScreen(width, height) - window.clearChildren() // make sure everything is cleared, sometimes the shortcuts duplicated - val block by UIBlock(VigilancePalette.getBackground()).constrain { - this.x = CenterConstraint() - this.y = CenterConstraint() - this.width = 100.pixels() - this.height = 100.pixels() - } childOf window - TextComponent(initialAlias, "Alias", wrap = false, protected = false).constrain { - x = CenterConstraint() - y = 10.percent() - }.childOf(block).onValueChange { - if (it is String) alias = it - } - TextComponent(initialCommand, "Command", wrap = false, protected = false).constrain { - x = CenterConstraint() - y = SiblingConstraint() - }.childOf(block).onValueChange { - if (it is String) command = it - } - if (editing) { - ButtonComponent("Reset") { - EssentialAPI.getGuiUtil().openScreen(ChatShortcutEditGui(initialAlias, initialCommand, editing)) - } constrain { - x = CenterConstraint() - y = 70.percent() - } childOf window - } - ButtonComponent("Save") { - alias = alias.substringAfter("/") - command = command.substringAfter("/") - if (editing) { - ChatShortcuts.removeShortcut(initialAlias) - } - if (alias.isBlank() || command.isBlank()) { - return@ButtonComponent - } - if (ChatShortcuts.shortcuts.any { it.first == alias }) { - EssentialAPI.getGuiUtil().openScreen(ChatShortcutConfirmGui(alias, command)) - return@ButtonComponent - } - ChatShortcuts.writeShortcut(alias, command) - restorePreviousScreen() - } constrain { - x = CenterConstraint() - y = 80.percent() - } childOf window - } - - inner class ChatShortcutConfirmGui(private var alias: String, private var command: String) : - WindowScreen(restoreCurrentGuiOnClose = true, version = ElementaVersion.V1) { - override fun initScreen(width: Int, height: Int) { - super.initScreen(width, height) - EssentialAPI.getEssentialComponentFactory().buildConfirmationModal { - text = "An alias with this name already exists, are you sure you want to overwrite it?" - onConfirm = { - ChatShortcuts.writeShortcut(alias, command) - EssentialAPI.getGuiUtil().openScreen(null) - } - onDeny = { - restorePreviousScreen() - } - } childOf this@ChatShortcutConfirmGui.window - } - } -} diff --git a/src/main/kotlin/cc/woverflow/chatting/gui/ChatShortcutViewGui.kt b/src/main/kotlin/cc/woverflow/chatting/gui/ChatShortcutViewGui.kt deleted file mode 100644 index 0fa2ef7..0000000 --- a/src/main/kotlin/cc/woverflow/chatting/gui/ChatShortcutViewGui.kt +++ /dev/null @@ -1,65 +0,0 @@ -package cc.woverflow.chatting.gui - -import cc.woverflow.chatting.chat.ChatShortcuts -import cc.woverflow.chatting.gui.components.TextBlock -import gg.essential.api.EssentialAPI -import gg.essential.elementa.ElementaVersion -import gg.essential.elementa.WindowScreen -import gg.essential.elementa.components.ScrollComponent -import gg.essential.elementa.components.UIBlock -import gg.essential.elementa.constraints.CenterConstraint -import gg.essential.elementa.constraints.RelativeWindowConstraint -import gg.essential.elementa.constraints.SiblingConstraint -import gg.essential.elementa.dsl.* -import gg.essential.vigilance.gui.VigilancePalette -import gg.essential.vigilance.gui.settings.ButtonComponent - -class ChatShortcutViewGui : WindowScreen(version = ElementaVersion.V1) { - override fun initScreen(width: Int, height: Int) { - super.initScreen(width, height) - window.clearChildren() // make sure everything is cleared, sometimes the shortcuts duplicated - val container by ScrollComponent() constrain { - x = 0.pixels() - y = 0.pixels() - this.width = 85.percent() - this.height = 85.percent() - } childOf window - for ((index, shortcut) in ChatShortcuts.shortcuts.withIndex()) { - val block = UIBlock(VigilancePalette.getBackground()).constrain { - x = 3.percent() - y = (index * 12).percent() - this.width = 94.percent() - this.height = 25.pixels() - } childOf container - TextBlock(shortcut.first).constrain { - x = RelativeWindowConstraint(0.05F) - y = CenterConstraint() - } childOf block - TextBlock(shortcut.second).constrain { - x = SiblingConstraint(10F) - y = CenterConstraint() - } childOf block - ButtonComponent("Edit") { - println("${shortcut.first} ${shortcut.second}") - EssentialAPI.getGuiUtil().openScreen(ChatShortcutEditGui(shortcut.first, shortcut.second, true)) - } constrain { - x = SiblingConstraint(20F) - y = CenterConstraint() - } childOf block - ButtonComponent("Delete") { - println("${shortcut.first} ${shortcut.second}") - ChatShortcuts.removeShortcut(shortcut.first) - EssentialAPI.getGuiUtil().openScreen(ChatShortcutViewGui()) - } constrain { - x = SiblingConstraint(5F) - y = CenterConstraint() - } childOf block - } - ButtonComponent("New") { - EssentialAPI.getGuiUtil().openScreen(ChatShortcutEditGui("", "", false)) - } constrain { - x = CenterConstraint() - y = 90.percent() - } childOf window - } -}
\ No newline at end of file diff --git a/src/main/kotlin/cc/woverflow/chatting/gui/components/ClearButton.kt b/src/main/kotlin/cc/woverflow/chatting/gui/components/ClearButton.kt index 2e46974..6ac3d34 100644 --- a/src/main/kotlin/cc/woverflow/chatting/gui/components/ClearButton.kt +++ b/src/main/kotlin/cc/woverflow/chatting/gui/components/ClearButton.kt @@ -1,41 +1,33 @@ package cc.woverflow.chatting.gui.components +import cc.polyfrost.oneconfig.libs.universal.ChatColor +import cc.polyfrost.oneconfig.libs.universal.UChat +import cc.polyfrost.oneconfig.libs.universal.UResolution +import cc.polyfrost.oneconfig.utils.Multithreading import cc.woverflow.chatting.Chatting -import gg.essential.api.EssentialAPI -import gg.essential.api.gui.buildConfirmationModal -import gg.essential.elementa.ElementaVersion -import gg.essential.elementa.WindowScreen -import gg.essential.elementa.components.UIBlock -import gg.essential.elementa.dsl.childOf -import gg.essential.elementa.utils.withAlpha -import gg.essential.universal.ChatColor -import gg.essential.universal.UResolution import net.minecraft.client.Minecraft import net.minecraft.client.gui.Gui import net.minecraft.client.renderer.GlStateManager import net.minecraft.util.ResourceLocation -import java.awt.Color class ClearButton : CleanButton(13379014, { UResolution.scaledWidth - 28 }, { UResolution.scaledHeight - 27 }, 12, 12, "", { RenderType.NONE }) { - override fun onMousePress() { - EssentialAPI.getGuiUtil().openScreen(object : WindowScreen(ElementaVersion.V1, restoreCurrentGuiOnClose = true, drawDefaultBackground = false) { - init { - UIBlock(Color.BLACK.withAlpha(0.3f)) childOf window - EssentialAPI.getEssentialComponentFactory().buildConfirmationModal { - text = "${ChatColor.RED}Are ${ChatColor.RED}you ${ChatColor.RED}sure ${ChatColor.RED}you ${ChatColor.RED}want ${ChatColor.RED}to ${ChatColor.RED}clear ${ChatColor.RED}the ${ChatColor.RED}chat?${ChatColor.RESET}" - secondaryText = "${ChatColor.BOLD}This${ChatColor.BOLD} ${ChatColor.BOLD}is${ChatColor.BOLD} ${ChatColor.BOLD}irreversible.${ChatColor.RESET}" + var times = 0 - onConfirm = { - Minecraft.getMinecraft().ingameGUI.chatGUI.clearChatMessages() - restorePreviousScreen() - } - onDeny = { restorePreviousScreen() } - } childOf window + override fun onMousePress() { + ++times + if (times > 1) { + times = 0 + Minecraft.getMinecraft().ingameGUI.chatGUI.clearChatMessages() + } else { + UChat.chat(ChatColor.RED + ChatColor.BOLD.toString() + "Click again to clear the chat!") + Multithreading.runAsync { + Thread.sleep(3000) + times = 0 } - }) + } } override fun drawButton(mc: Minecraft, mouseX: Int, mouseY: Int) { diff --git a/src/main/kotlin/cc/woverflow/chatting/gui/components/ScreenshotButton.kt b/src/main/kotlin/cc/woverflow/chatting/gui/components/ScreenshotButton.kt index 9fc5e8d..4f65427 100644 --- a/src/main/kotlin/cc/woverflow/chatting/gui/components/ScreenshotButton.kt +++ b/src/main/kotlin/cc/woverflow/chatting/gui/components/ScreenshotButton.kt @@ -1,9 +1,9 @@ package cc.woverflow.chatting.gui.components +import cc.polyfrost.oneconfig.libs.universal.UResolution +import cc.polyfrost.oneconfig.libs.universal.UScreen import cc.woverflow.chatting.Chatting import cc.woverflow.chatting.mixin.GuiNewChatAccessor -import gg.essential.api.utils.GuiUtil -import gg.essential.universal.UResolution import net.minecraft.client.Minecraft import net.minecraft.client.gui.Gui import net.minecraft.client.gui.GuiChat @@ -16,7 +16,7 @@ class ScreenshotButton : override fun onMousePress() { val chat = Minecraft.getMinecraft().ingameGUI.chatGUI - if (GuiUtil.getOpenedScreen() is GuiChat) { + if (UScreen.currentScreen is GuiChat) { Chatting.screenshotChat((chat as GuiNewChatAccessor).scrollPos) } } diff --git a/src/main/kotlin/cc/woverflow/chatting/gui/components/SearchButton.kt b/src/main/kotlin/cc/woverflow/chatting/gui/components/SearchButton.kt index 819eac0..2194bbb 100644 --- a/src/main/kotlin/cc/woverflow/chatting/gui/components/SearchButton.kt +++ b/src/main/kotlin/cc/woverflow/chatting/gui/components/SearchButton.kt @@ -1,8 +1,8 @@ package cc.woverflow.chatting.gui.components +import cc.polyfrost.oneconfig.libs.universal.UResolution import cc.woverflow.chatting.Chatting import cc.woverflow.chatting.hook.GuiNewChatHook -import gg.essential.universal.UResolution import net.minecraft.client.Minecraft import net.minecraft.client.gui.Gui import net.minecraft.client.gui.GuiTextField diff --git a/src/main/kotlin/cc/woverflow/chatting/gui/components/TabButton.kt b/src/main/kotlin/cc/woverflow/chatting/gui/components/TabButton.kt index da20eed..f320925 100644 --- a/src/main/kotlin/cc/woverflow/chatting/gui/components/TabButton.kt +++ b/src/main/kotlin/cc/woverflow/chatting/gui/components/TabButton.kt @@ -1,9 +1,9 @@ package cc.woverflow.chatting.gui.components +import cc.polyfrost.oneconfig.libs.universal.UResolution import cc.woverflow.chatting.chat.ChatTab import cc.woverflow.chatting.chat.ChatTabs import cc.woverflow.chatting.config.ChattingConfig -import gg.essential.universal.UResolution class TabButton(buttonId: Int, x: Int, widthIn: Int, heightIn: Int, private val chatTab: ChatTab) : CleanButton(buttonId, { x }, { diff --git a/src/main/kotlin/cc/woverflow/chatting/gui/components/TextBlock.kt b/src/main/kotlin/cc/woverflow/chatting/gui/components/TextBlock.kt deleted file mode 100644 index 8a4f32a..0000000 --- a/src/main/kotlin/cc/woverflow/chatting/gui/components/TextBlock.kt +++ /dev/null @@ -1,41 +0,0 @@ -package cc.woverflow.chatting.gui.components - -import gg.essential.elementa.components.UIBlock -import gg.essential.elementa.components.UIText -import gg.essential.elementa.constraints.ChildBasedSizeConstraint -import gg.essential.elementa.dsl.* -import gg.essential.elementa.effects.OutlineEffect -import gg.essential.elementa.state.BasicState -import gg.essential.vigilance.gui.VigilancePalette -import gg.essential.vigilance.gui.settings.SettingComponent - -/** - * Heavily modified from Vigilance under LGPLv3 (modified to be just a text block) - * https://github.com/Sk1erLLC/Vigilance/blob/master/LICENSE - */ -class TextBlock( - text: String -) : SettingComponent() { - private val textHolder = UIBlock() constrain { - width = ChildBasedSizeConstraint() + 6.pixels() - height = ChildBasedSizeConstraint() + 6.pixels() - color = VigilancePalette.getDarkHighlight().toConstraint() - } childOf this effect OutlineEffect( - VigilancePalette.getDivider(), - 1f - ).bindColor(BasicState(VigilancePalette.getDivider())) - - private val text: UIText = UIText(text) constrain { - x = 3.pixels() - y = 3.pixels() - } - - init { - this.text childOf textHolder - - constrain { - width = ChildBasedSizeConstraint() - height = ChildBasedSizeConstraint() - } - } -}
\ No newline at end of file |