aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/com/raeids/stratus/hook
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/com/raeids/stratus/hook')
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/ChatRegexes.kt11
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/ChatSearching.kt41
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/ChatShortcuts.kt58
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/ChatTab.kt86
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/ChatTabs.kt171
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/ChatTabsJson.kt11
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/CleanButton.kt70
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/CleanSearchButton.kt60
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/CleanTabButton.kt17
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/ModCompatHooks.kt20
-rw-r--r--src/main/kotlin/com/raeids/stratus/hook/ScreenshotButton.kt34
11 files changed, 0 insertions, 579 deletions
diff --git a/src/main/kotlin/com/raeids/stratus/hook/ChatRegexes.kt b/src/main/kotlin/com/raeids/stratus/hook/ChatRegexes.kt
deleted file mode 100644
index fd743ea..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/ChatRegexes.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.raeids.stratus.hook
-
-data class ChatRegexes(val regexList: List<String>?) {
- val compiledRegexList: MutableList<Regex> = arrayListOf()
-
- init {
- regexList?.forEach {
- compiledRegexList.add(Regex(it))
- }
- }
-}
diff --git a/src/main/kotlin/com/raeids/stratus/hook/ChatSearching.kt b/src/main/kotlin/com/raeids/stratus/hook/ChatSearching.kt
deleted file mode 100644
index 6dd4904..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/ChatSearching.kt
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.raeids.stratus.hook
-
-import gg.essential.lib.caffeine.cache.Cache
-import gg.essential.lib.caffeine.cache.Caffeine
-import gg.essential.universal.wrappers.message.UTextComponent
-import net.minecraft.client.Minecraft
-import net.minecraft.client.gui.ChatLine
-import java.util.concurrent.LinkedBlockingQueue
-import java.util.concurrent.ThreadPoolExecutor
-import java.util.concurrent.TimeUnit
-import java.util.concurrent.atomic.AtomicInteger
-
-private var counter: AtomicInteger = AtomicInteger(0)
-private var POOL: ThreadPoolExecutor = ThreadPoolExecutor(
- 50, 50,
- 0L, TimeUnit.SECONDS,
- LinkedBlockingQueue()
-) { r ->
- Thread(
- r,
- "Chat Filter Cache Thread ${counter.incrementAndGet()}"
- )
-}
-
-val cache: Cache<String, List<ChatLine>> = Caffeine.newBuilder().executor(POOL).maximumSize(5000).build()
-
-fun filterMessages(text: String, list: List<ChatLine>): List<ChatLine>? {
- if (text.isBlank()) return list
- val cached = cache.getIfPresent(text)
- return cached ?: run {
- cache.put(text, list.filter {
- UTextComponent.stripFormatting(it.chatComponent.unformattedText).lowercase()
- .contains(text.lowercase())
- })
- cache.getIfPresent(text)
- }
-}
-
-fun setPrevText(text: String) {
- (Minecraft.getMinecraft().ingameGUI.chatGUI as GuiNewChatHook).prevText = text
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/raeids/stratus/hook/ChatShortcuts.kt b/src/main/kotlin/com/raeids/stratus/hook/ChatShortcuts.kt
deleted file mode 100644
index 10a2af9..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/ChatShortcuts.kt
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.raeids.stratus.hook
-
-import com.google.gson.JsonObject
-import com.google.gson.JsonParser
-import com.raeids.stratus.Stratus
-import java.io.File
-
-object ChatShortcuts {
- private val shortcutsFile = File(Stratus.modDir, "chatshortcuts.json")
- private val PARSER = JsonParser()
-
- private var initialized = false
-
- val shortcuts = mutableSetOf<Pair<String, String>>()
-
-
- fun initialize() {
- if (initialized) {
- return
- } else {
- initialized = true
- }
- if (!shortcutsFile.exists()) {
- shortcutsFile.createNewFile()
- shortcutsFile.writeText(
- JsonObject().toString()
- )
- } else {
- val jsonObj = PARSER.parse(shortcutsFile.readText()).asJsonObject
- for (shortcut in jsonObj.entrySet()) {
- shortcuts.add(shortcut.key to shortcut.value.asString)
- }
- }
- }
-
- fun removeShortcut(key: String) {
- shortcuts.removeIf { it.first == key }
- val jsonObj = PARSER.parse(shortcutsFile.readText()).asJsonObject
- jsonObj.remove(key)
- shortcutsFile.writeText(jsonObj.toString())
- }
-
- fun writeShortcut(key: String, value: String) {
- shortcuts.add(key to value)
- val jsonObj = PARSER.parse(shortcutsFile.readText()).asJsonObject
- jsonObj.addProperty(key, value)
- shortcutsFile.writeText(jsonObj.toString())
- }
-
- fun handleSentCommand(command: String): String {
- shortcuts.forEach {
- if (command == it.first || (command.startsWith(it.first) && command.substringAfter(it.first).startsWith(" "))) {
- return command.replaceFirst(it.first, it.second)
- }
- }
- return command
- }
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/raeids/stratus/hook/ChatTab.kt b/src/main/kotlin/com/raeids/stratus/hook/ChatTab.kt
deleted file mode 100644
index fa56a54..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/ChatTab.kt
+++ /dev/null
@@ -1,86 +0,0 @@
-package com.raeids.stratus.hook
-
-import com.google.gson.annotations.SerializedName
-import kotlinx.coroutines.runBlocking
-import net.minecraft.client.Minecraft
-import net.minecraft.util.EnumChatFormatting
-import net.minecraft.util.IChatComponent
-
-data class ChatTab(
- val enabled: Boolean,
- val name: String,
- val unformatted: Boolean,
- @SerializedName("starts") val startsWith: List<String>?,
- val contains: List<String>?,
- @SerializedName("ends") val endsWith: List<String>?,
- val equals: List<String>?,
- @SerializedName("regex") val uncompiledRegex: List<String>?,
- val prefix: String
-) {
- lateinit var button: CleanTabButton
- lateinit var compiledRegex: ChatRegexes
-
- //Ugly hack to make GSON not make button / regex null
- fun initialize() {
- compiledRegex = ChatRegexes(uncompiledRegex)
- val width = Minecraft.getMinecraft().fontRendererObj.getStringWidth(name)
- button = CleanTabButton(653452, runBlocking {
- val returnValue = x - 2
- x += 6 + width
- return@runBlocking returnValue
- }, width + 4, 12, this)
- }
-
- fun shouldRender(chatComponent: IChatComponent): Boolean {
- if (startsWith == null && equals == null && endsWith == null && contains == null && uncompiledRegex == null) {
- return true
- }
- val message = if (unformatted) EnumChatFormatting.getTextWithoutFormattingCodes(chatComponent.unformattedText) else chatComponent.formattedText
- equals?.forEach {
- if (message == it) {
- return true
- }
- }
- startsWith?.forEach {
- if (message.startsWith(it)) {
- return true
- }
- }
- endsWith?.forEach {
- if (message.endsWith(it)) {
- return true
- }
- }
- contains?.forEach {
- if (message.contains(it)) {
- return true
- }
- }
- compiledRegex.compiledRegexList.forEach {
- if (it.matches(message)) {
- return true
- }
- }
- return false
- }
-
- override fun equals(other: Any?): Boolean {
- return other is ChatTab && name == other.name && startsWith == other.startsWith && contains == other.contains && endsWith == other.endsWith && equals == other.equals && compiledRegex == other.compiledRegex
- }
-
- override fun hashCode(): Int {
- var result = name.hashCode()
- result = 31 * result + (startsWith?.hashCode() ?: 0)
- result = 31 * result + (contains?.hashCode() ?: 0)
- result = 31 * result + (endsWith?.hashCode() ?: 0)
- result = 31 * result + (equals?.hashCode() ?: 0)
- result = 31 * result + (uncompiledRegex?.hashCode() ?: 0)
- result = 31 * result + prefix.hashCode()
- result = 31 * result + button.hashCode()
- return result
- }
-
- companion object {
- private var x = 4
- }
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/raeids/stratus/hook/ChatTabs.kt b/src/main/kotlin/com/raeids/stratus/hook/ChatTabs.kt
deleted file mode 100644
index 8d03ed6..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/ChatTabs.kt
+++ /dev/null
@@ -1,171 +0,0 @@
-package com.raeids.stratus.hook
-
-import com.google.gson.*
-import com.raeids.stratus.Stratus
-import net.minecraft.client.Minecraft
-import net.minecraft.util.IChatComponent
-import java.io.File
-
-object ChatTabs {
- private val GSON = GsonBuilder().setPrettyPrinting().create()
- private val PARSER = JsonParser()
- val tabs = arrayListOf<ChatTab>()
- var currentTab: ChatTab? = null
- set(value) {
- if (value != null) {
- field = value
- if (Minecraft.getMinecraft().theWorld != null) {
- Minecraft.getMinecraft().ingameGUI.chatGUI.refreshChat()
- }
- }
- }
- private var initialized = false
-
- private val tabFile = File(Stratus.modDir, "chattabs.json")
-
- fun initialize() {
- if (initialized) {
- return
- } else {
- initialized = true
- }
- if (!tabFile.exists()) {
- generateNewFile()
- } else {
- try {
- val chatTabJson = GSON.fromJson(tabFile.readText(), ChatTabsJson::class.java)
- if (chatTabJson.version == 1) {
- // ver 2 adds `enabled`
- chatTabJson.tabs.forEach {
- it.asJsonObject.addProperty("enabled", true)
- }
- chatTabJson.version = 2
- tabFile.writeText(chatTabJson.toString())
- }
- chatTabJson.tabs.forEach {
- val chatTab = GSON.fromJson(it.toString(), ChatTab::class.java)
- if (chatTab.enabled) {
- tabs.add(chatTab)
- }
- }
- } catch (e: Throwable) {
- e.printStackTrace()
- tabFile.delete()
- generateNewFile()
- }
- }
- tabs.forEach {
- it.initialize()
- }
- currentTab = tabs[0]
- }
-
- fun shouldRender(message: IChatComponent): Boolean {
- return currentTab?.shouldRender(message) ?: true
- }
-
- private fun generateNewFile() {
- tabFile.createNewFile()
- val jsonObject = JsonObject()
- val defaultTabs = generateDefaultTabs()
- jsonObject.add("tabs", defaultTabs)
- jsonObject.addProperty("version", 1)
- tabFile.writeText(jsonObject.toString())
- }
-
- private fun generateDefaultTabs(): JsonArray {
- val all = ChatTab(true, "ALL", false, null, null, null, null, null, "")
- val party = ChatTab(
- true,
- "PARTY",
- false,
- listOf("§r§9Party §8> ", "§r§9P §8> ", "§eThe party was transferred to §r", "§eKicked §r"),
- null,
- listOf(
- "§r§ehas invited you to join their party!",
- "§r§eto the party! They have §r§c60 §r§eseconds to accept.§r",
- "§r§ehas disbanded the party!§r",
- "§r§ehas disconnected, they have §r§c5 §r§eminutes to rejoin before they are removed from the party.§r",
- " §r§ejoined the party.§r",
- " §r§ehas left the party.§r",
- " §r§ehas been removed from the party.§r",
- "§r§e because they were offline.§r"
- ),
- listOf("§cThe party was disbanded because all invites expired and the party was empty§r"),
- listOf( //regexes from https://github.com/kwevin/Hychat-Tabs/blob/main/tabs/re-add%20prefixes%20%26%20fix%20shortened%20tags/chat.json cause i cant write regex
- "(§r)*(§9Party §8\u003e)+(.*)",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§einvited §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§eto the party! They have §r§c60 §r§eseconds to accept\\.§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§ehas left the party\\.§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§ejoined the party\\.§r",
- "§eYou left the party\\.§r",
- "§eYou have joined §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)\u0027s §r§eparty!§r",
- "§cThe party was disbanded because all invites expired and the party was empty§r",
- "§cYou cannot invite that player since they\u0027re not online\\.§r",
- "§eThe party leader, §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r§e, warped you to §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r§e\u0027s house\\.§r",
- "§eSkyBlock Party Warp §r§7\\([0-9]+ players?\\)§r",
- "§a. §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r§f §r§awarped to your server§r",
- "§eYou summoned §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r§f §r§eto your server\\.§r",
- "§eThe party leader, §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r§e, warped you to their house\\.§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§aenabled Private Game§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§cdisabled Private Game§r",
- "§cThe party is now muted\\. §r",
- "§aThe party is no longer muted\\.§r",
- "§cThere are no offline players to remove\\.§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§ehas been removed from the party\\.§r",
- "§eThe party was transferred to §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§eby §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r§e has promoted §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§eto Party Leader§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r§e has promoted §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§eto Party Moderator§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§eis now a Party Moderator§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r§e has demoted §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§eto Party Member§r",
- "§cYou can\u0027t demote yourself!§r",
- "§6Party Members \\([0-9]+\\)§r",
- "§eParty Leader: §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) ?§r(?:§[a-zA-Z0-9]).§r",
- "§eParty Members: §r(?:(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r(?:§[a-zA-Z0-9]) . §r)+",
- "§eParty Moderators: §r(?:(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+)§r(?:§[a-zA-Z0-9]) . §r)+",
- "§eThe party invite to §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§ehas expired§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§cdisabled All Invite§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§aenabled All Invite§r",
- "§cYou cannot invite that player\\.§r",
- "§cYou are not allowed to invite players\\.§r",
- "§eThe party leader, §r(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§ehas disconnected, they have §r§c5 §r§eminutes to rejoin before the party is disbanded\\.§r",
- "(?:(?:§[a-zA-Z0-9])*\\[(?:(?:VIP)|(?:VIP§r§6\\+)|(?:MVP)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+)|(?:MVP(?:§r)?(?:§[a-zA-Z0-9])\\+\\+)|(?:(?:§r)?§fYOUTUBE))(?:§r)?(?:(?:§[a-zA-Z0-9]))?\\] [a-zA-Z0-9_]+|§7[a-zA-Z0-9_]+) §r§ehas disconnected, they have §r§c5 §r§eminutes to rejoin before they are removed from the party.§r",
- "§cYou are not in a party right now\\.§r",
- "§cThis party is currently muted\\.§r",
- "(§r)*(§9P §8\u003e)+(.*)"
- ),
- "/pc "
- )
- val guild = ChatTab(
- true,
- "GUILD",
- true,
- listOf("Guild >", "G >"),
- null,
- null,
- null,
- null,
- "/gc "
- )
- val pm = ChatTab(
- true,
- "PM",
- true,
- listOf("To ", "From "),
- null,
- null,
- null,
- null,
- "/r "
- )
- tabs.add(all)
- tabs.add(party)
- tabs.add(guild)
- tabs.add(pm)
- val jsonArray = JsonArray()
- jsonArray.add(PARSER.parse(GSON.toJson(all)).asJsonObject)
- jsonArray.add(PARSER.parse(GSON.toJson(party)).asJsonObject)
- jsonArray.add(PARSER.parse(GSON.toJson(guild)).asJsonObject)
- jsonArray.add(PARSER.parse(GSON.toJson(pm)).asJsonObject)
- return jsonArray
- }
-}
diff --git a/src/main/kotlin/com/raeids/stratus/hook/ChatTabsJson.kt b/src/main/kotlin/com/raeids/stratus/hook/ChatTabsJson.kt
deleted file mode 100644
index b3a5e4c..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/ChatTabsJson.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.raeids.stratus.hook
-
-import com.google.gson.JsonArray
-import com.google.gson.annotations.SerializedName
-
-data class ChatTabsJson(@SerializedName("tabs") val tabs: JsonArray, @SerializedName("version") var version: Int) {
-
- override fun toString(): String {
- return "{\"tabs\": $tabs, \"version\": \"$version\"}"
- }
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/raeids/stratus/hook/CleanButton.kt b/src/main/kotlin/com/raeids/stratus/hook/CleanButton.kt
deleted file mode 100644
index bc4db34..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/CleanButton.kt
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.raeids.stratus.hook
-
-import club.sk1er.patcher.config.PatcherConfig
-import com.raeids.stratus.Stratus
-import net.minecraft.client.Minecraft
-import net.minecraft.client.gui.GuiButton
-import net.minecraft.client.renderer.GlStateManager
-import java.awt.Color
-
-/**
- * Taken from ChatShortcuts under MIT License
- * https://github.com/P0keDev/ChatShortcuts/blob/master/LICENSE
- * @author P0keDev
- */
-open class CleanButton(buttonId: Int, private val x: () -> Int, private val y: () -> Int, widthIn: Int, heightIn: Int, name: String) :
- GuiButton(buttonId, x.invoke(), 0, widthIn, heightIn, name) {
-
- open fun isEnabled(): Boolean {
- return false
- }
-
- open fun onMousePress() {
-
- }
-
- override fun mousePressed(mc: Minecraft, mouseX: Int, mouseY: Int): Boolean {
- val isPressed =
- visible && mouseX >= xPosition && mouseY >= yPosition && mouseX < xPosition + width && mouseY < yPosition + height
- if (isPressed) {
- onMousePress()
- }
- return isPressed
- }
-
- override fun drawButton(mc: Minecraft, mouseX: Int, mouseY: Int) {
- enabled = isEnabled()
- xPosition = x.invoke()
- yPosition = y.invoke()
- if (visible) {
- val fontrenderer = mc.fontRendererObj
- GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f)
- hovered =
- mouseX >= xPosition && mouseY >= yPosition && mouseX < xPosition + width && mouseY < yPosition + height
- if (!Stratus.isPatcher || !PatcherConfig.transparentChatInputField) {
- drawRect(
- xPosition,
- yPosition,
- xPosition + width,
- yPosition + height,
- if (hovered) hoveredColor else color
- )
- }
- mouseDragged(mc, mouseX, mouseY)
- var j = 14737632
- if (packedFGColour != 0) {
- j = packedFGColour
- } else if (!enabled) {
- j = 10526880
- } else if (hovered) {
- j = 16777120
- }
- drawCenteredString(fontrenderer, displayString, xPosition + width / 2, yPosition + (height - 8) / 2, j)
- }
- }
-
- companion object {
- private val hoveredColor = Color(255, 255, 255, 128).rgb
- private val color = Color(0, 0, 0, 128).rgb
- }
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/raeids/stratus/hook/CleanSearchButton.kt b/src/main/kotlin/com/raeids/stratus/hook/CleanSearchButton.kt
deleted file mode 100644
index 7a68c75..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/CleanSearchButton.kt
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.raeids.stratus.hook
-
-import com.raeids.stratus.Stratus
-import gg.essential.universal.UResolution
-import net.minecraft.client.Minecraft
-import net.minecraft.client.gui.Gui
-import net.minecraft.client.gui.GuiTextField
-import net.minecraft.client.renderer.GlStateManager
-import net.minecraft.util.ResourceLocation
-
-class CleanSearchButton: CleanButton(3993935, {UResolution.scaledWidth - 14}, {UResolution.scaledHeight - 27}, 12, 12, "") {
- val inputField = SearchTextField()
- private var chatBox = false
-
- override fun isEnabled(): Boolean {
- return chatBox
- }
-
- override fun onMousePress() {
- chatBox = !chatBox
- inputField.setEnabled(chatBox)
- inputField.isFocused = chatBox
- (Minecraft.getMinecraft().ingameGUI.chatGUI as GuiNewChatHook).prevText = ""
- inputField.text = ""
- }
-
- override fun drawButton(mc: Minecraft, mouseX: Int, mouseY: Int) {
- inputField.drawTextBox()
- super.drawButton(mc, mouseX, mouseY)
- if (visible) {
- mc.textureManager.bindTexture(ResourceLocation(Stratus.ID, "search.png"))
- if (isEnabled()) {
- GlStateManager.color(224f/255f, 224f/255f, 224f/255f)
- } else if (mouseX >= xPosition && mouseX <= xPosition + 10 && mouseY >= yPosition && mouseY <= yPosition + 10) {
- GlStateManager.color(1f, 1f, 160f/255f)
- } else {
- GlStateManager.color(1f, 1f, 1f)
- }
- Gui.drawModalRectWithCustomSizedTexture(xPosition+1, yPosition+1, 0f, 0f, 10, 10, 10f, 10f)
- }
- }
-
- inner class SearchTextField: GuiTextField(69420, Minecraft.getMinecraft().fontRendererObj, UResolution.scaledWidth * 4 / 5 - 60, UResolution.scaledHeight - 27, UResolution.scaledWidth / 5, 12) {
-
- init {
- maxStringLength = 100
- enableBackgroundDrawing = true
- isFocused = false
- text = ""
- setCanLoseFocus(true)
- }
-
- override fun drawTextBox() {
- if (isEnabled()) {
- if (!isFocused) isFocused = true
- super.drawTextBox()
- }
- }
- }
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/raeids/stratus/hook/CleanTabButton.kt b/src/main/kotlin/com/raeids/stratus/hook/CleanTabButton.kt
deleted file mode 100644
index 0277dd8..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/CleanTabButton.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.raeids.stratus.hook
-
-import gg.essential.universal.UResolution
-
-class CleanTabButton(buttonId: Int, x: Int, widthIn: Int, heightIn: Int, private val chatTab: ChatTab) :
- CleanButton(buttonId, { x }, {
- UResolution.scaledHeight - 26
- }, widthIn, heightIn, chatTab.name) {
-
- override fun onMousePress() {
- ChatTabs.currentTab = chatTab
- }
-
- override fun isEnabled(): Boolean {
- return chatTab != ChatTabs.currentTab
- }
-} \ No newline at end of file
diff --git a/src/main/kotlin/com/raeids/stratus/hook/ModCompatHooks.kt b/src/main/kotlin/com/raeids/stratus/hook/ModCompatHooks.kt
deleted file mode 100644
index e2ac629..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/ModCompatHooks.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.raeids.stratus.hook
-
-import club.sk1er.patcher.config.PatcherConfig
-import com.llamalad7.betterchat.BetterChat
-
-// This exists because mixin doesn't like dummy classes
-object ModCompatHooks {
- @JvmStatic
- val xOffset
- get() = BetterChat.getSettings().xOffset
-
- @JvmStatic
- val yOffset
- get() = BetterChat.getSettings().yOffset
-
- @JvmStatic
- val chatPosition
- get() = PatcherConfig.chatPosition
-
-}
diff --git a/src/main/kotlin/com/raeids/stratus/hook/ScreenshotButton.kt b/src/main/kotlin/com/raeids/stratus/hook/ScreenshotButton.kt
deleted file mode 100644
index 70c64c2..0000000
--- a/src/main/kotlin/com/raeids/stratus/hook/ScreenshotButton.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.raeids.stratus.hook
-
-import com.raeids.stratus.Stratus
-import com.raeids.stratus.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
-import net.minecraft.client.renderer.GlStateManager
-import net.minecraft.util.ResourceLocation
-
-class ScreenshotButton: CleanButton(448318, { UResolution.scaledWidth - 28}, { UResolution.scaledHeight - 27}, 12, 12, "") {
-
- override fun onMousePress() {
- val chat = Minecraft.getMinecraft().ingameGUI.chatGUI
- if (GuiUtil.getOpenedScreen() is GuiChat) {
- Stratus.screenshotChat((chat as GuiNewChatAccessor).scrollPos)
- }
- }
-
- override fun drawButton(mc: Minecraft, mouseX: Int, mouseY: Int) {
- super.drawButton(mc, mouseX, mouseY)
- if (visible) {
- if (hovered) {
- GlStateManager.color(1f, 1f, 160f / 255f)
- } else {
- GlStateManager.color(1f, 1f, 1f)
- }
- mc.textureManager.bindTexture(ResourceLocation(Stratus.ID, "screenshot.png"))
- Gui.drawModalRectWithCustomSizedTexture(xPosition + 1, yPosition + 1, 0f, 0f, 10, 10, 10f, 10f)
- }
- }
-} \ No newline at end of file