diff options
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete')
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/GetFromSacksTabComplete.kt | 45 | ||||
| -rw-r--r-- | src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/TabComplete.kt | 1 |
2 files changed, 46 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/GetFromSacksTabComplete.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/GetFromSacksTabComplete.kt new file mode 100644 index 000000000..b8e3f56ad --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/GetFromSacksTabComplete.kt @@ -0,0 +1,45 @@ +package at.hannibal2.skyhanni.features.misc.tabcomplete + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.events.PacketEvent +import at.hannibal2.skyhanni.events.RepositoryReloadEvent +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.jsonobjects.SackListJson +import net.minecraft.network.play.client.C01PacketChatMessage +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +object GetFromSacksTabComplete { + private val config get() = SkyHanniMod.feature.misc.tabCompleteCommands + private var sackList = emptyList<String>() + private val commands = arrayOf("gfs", "getfromsacks") + + @SubscribeEvent + fun onRepoReload(event: RepositoryReloadEvent) { + sackList = event.getConstant<SackListJson>("Sacks")?.sackList ?: return + } + + fun handleTabComplete(command: String): List<String>? { + if (!isEnabled()) return null + if (command !in commands) return null + + return sackList.map { it.replace(" ", "_") } + } + + @SubscribeEvent + fun onSendPacket(event: PacketEvent.SendEvent) { + if (!isEnabled()) return + + val packet = event.packet as? C01PacketChatMessage ?: return + val message = packet.message + if (commands.any { message.startsWith("/$it ") }) { + val rawName = message.split(" ")[1] + val realName = rawName.replace("_", " ") + if (realName == rawName) return + if (realName !in sackList) return + event.isCanceled = true + LorenzUtils.sendMessageToServer(message.replace(rawName, realName)) + } + } + + fun isEnabled() = LorenzUtils.inSkyBlock && config.gfsSack +}
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/TabComplete.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/TabComplete.kt index 8e13d3a1d..b003de699 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/TabComplete.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/tabcomplete/TabComplete.kt @@ -20,6 +20,7 @@ object TabComplete { } private fun customTabComplete(command: String): List<String>? { + GetFromSacksTabComplete.handleTabComplete(command)?.let { return it } WarpTabComplete.handleTabComplete(command)?.let { return it } PlayerTabComplete.handleTabComplete(command)?.let { return it } CollectionTracker.handleTabComplete(command)?.let { return it } |
