diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/commands')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/commands/WikiManager.kt | 106 |
1 files changed, 78 insertions, 28 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/commands/WikiManager.kt b/src/main/java/at/hannibal2/skyhanni/features/commands/WikiManager.kt index b3bdbe42c..c1aab3a1c 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/commands/WikiManager.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/commands/WikiManager.kt @@ -9,21 +9,20 @@ import at.hannibal2.skyhanni.utils.ItemUtils.nameWithEnchantment import at.hannibal2.skyhanni.utils.KeyboardManager.isKeyHeld import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.NEUItems -import at.hannibal2.skyhanni.utils.OSUtils import at.hannibal2.skyhanni.utils.StringUtils.removeColor import net.minecraft.client.gui.inventory.GuiContainer import net.minecraft.item.ItemStack import net.minecraftforge.client.event.GuiScreenEvent import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import java.net.URLEncoder -class WikiManager { +object WikiManager { + private const val OFFICIAL_URL_PREFIX = "https://wiki.hypixel.net/" + private const val OFFICIAL_SEARCH_PREFIX = "index.php?search=" + private const val FANDOM_URL_PREFIX = "https://hypixel-skyblock.fandom.com/wiki/" + private const val FANDOM_SEARCH_PREFIX = "Special:Search?query=" - private val config get() = SkyHanniMod.feature.commands.fandomWiki - - companion object { - private val urlPrefix = "https://hypixel-skyblock.fandom.com/wiki/" - val urlSearchPrefix = "${urlPrefix}Special:Search?query=" - } + private val config get() = SkyHanniMod.feature.commands.betterWiki @SubscribeEvent fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) { @@ -34,23 +33,26 @@ class WikiManager { fun onMessageSendToServer(event: MessageSendToServerEvent) { if (!LorenzUtils.inSkyBlock) return if (!isEnabled()) return - val message = event.message.lowercase() if (!(message.startsWith("/wiki"))) return + event.isCanceled = true if (message == "/wiki") { - LorenzUtils.chat("Opening the Fandom Wiki..") - OSUtils.openBrowser("${urlPrefix}Hypixel_SkyBlock_Wiki") - } else if (message.startsWith("/wiki ") || message == ("/wikithis")) { //conditional to see if we need Special:Search page - if (message == ("/wikithis")) { - val itemInHand = InventoryUtils.getItemInHand() ?: return - wikiTheItem(itemInHand) - } else { - val search = event.message.split("/wiki ").last() - LorenzUtils.chat("Searching the Fandom Wiki for §a$search") - val wikiUrlCustom = "$urlSearchPrefix$search&scope=internal" - OSUtils.openBrowser(wikiUrlCustom.replace(' ', '+')) + sendWikiMessage() + return + } + if (message.startsWith("/wiki ")) { + val search = event.message.drop("/wiki ".length) + sendWikiMessage(search) + return + } + if (message == ("/wikithis")) { + val itemInHand = InventoryUtils.getItemInHand() ?: run { + LorenzUtils.chat("§cYou must be holding an item to use this command!") + return } + wikiTheItem(itemInHand, config.autoOpenWiki) + return } } @@ -61,17 +63,65 @@ class WikiManager { if (NEUItems.neuHasFocus()) return //because good heavens if this worked on neuitems... val stack = gui.slotUnderMouse?.stack ?: return - if (!config.fandomWikiKeybind.isKeyHeld()) return - wikiTheItem(stack) + if (!config.wikiKeybind.isKeyHeld()) return + wikiTheItem(stack, config.menuOpenWiki) } - private fun wikiTheItem(item: ItemStack) { - val itemDisplayName = (item.nameWithEnchantment ?: return).replace("§a✔ ", "").replace("§c✖ ", "") + private fun wikiTheItem(item: ItemStack, autoOpen: Boolean, useFandom: Boolean = config.useFandom) { + val itemDisplayName = + (item.nameWithEnchantment ?: return).replace("§a✔ ", "").replace("§c✖ ", "") val internalName = item.getInternalName().asString() - LorenzUtils.chat("Searching the Fandom Wiki for §a$itemDisplayName") - val wikiUrlSearch = if (internalName != "NONE") "$urlSearchPrefix$internalName&scope=internal" - else "$urlSearchPrefix${itemDisplayName.removeColor()}&scope=internal" - OSUtils.openBrowser(wikiUrlSearch.replace(' ', '+')) + val wikiUrlSearch = if (internalName != "NONE") internalName else itemDisplayName.removeColor() + + sendWikiMessage(wikiUrlSearch, itemDisplayName.removeColor(), autoOpen, useFandom) + } + + fun otherWikiCommands(args: Array<String>, useFandom: Boolean, wikithis: Boolean = false) { + if (wikithis && !LorenzUtils.inSkyBlock) { + LorenzUtils.chat("§cYou must be in SkyBlock to do this!") + return + } + + var search = "" + for (arg in args) search = "$search${arg}" + + if (wikithis) { + val itemInHand = InventoryUtils.getItemInHand() ?: run { + LorenzUtils.chat("§cYou must be holding an item to use this command!") + return + } + wikiTheItem(itemInHand, false, useFandom = useFandom) + return + } + if (search == "") { + sendWikiMessage(useFandom = useFandom) + return + } + sendWikiMessage(search, useFandom = useFandom) + } + + fun sendWikiMessage( + search: String = "", displaySearch: String = search, + autoOpen: Boolean = config.autoOpenWiki, useFandom: Boolean = config.useFandom + ) { + val wiki = if (useFandom) "SkyBlock Fandom Wiki" else "Official SkyBlock Wiki" + val urlPrefix = if (useFandom) FANDOM_URL_PREFIX else OFFICIAL_URL_PREFIX + if (search == "") { + LorenzUtils.clickableLinkChat( + "§7Click §e§lHERE §7to visit the §6$wiki§7!", urlPrefix, "§7The $wiki!" + ) + return + } + + val urlSearchPrefix = if (useFandom) "$urlPrefix$FANDOM_SEARCH_PREFIX" else "$urlPrefix$OFFICIAL_SEARCH_PREFIX" + val searchUrl = "$urlSearchPrefix${URLEncoder.encode(search, "UTF-8")}&scope=internal" + + LorenzUtils.clickableLinkChat( + "§7Click §e§lHERE §7to find §a$displaySearch §7on the §6$wiki§7!", + searchUrl, + "§7View §a$displaySearch §7on the §6$wiki§7!", + autoOpen + ) } private fun isEnabled() = config.enabled |
