Add tab completion to /warp
This commit is contained in:
@@ -9,6 +9,7 @@ package moe.nea.firmament.features
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.serializer
|
||||
import moe.nea.firmament.Firmament
|
||||
import moe.nea.firmament.features.chat.AutoCompletions
|
||||
import moe.nea.firmament.features.chat.ChatLinks
|
||||
import moe.nea.firmament.features.chat.QuickCommands
|
||||
import moe.nea.firmament.features.debug.DebugView
|
||||
@@ -48,6 +49,7 @@ object FeatureManager : DataHolder<FeatureManager.Config>(serializer(), "feature
|
||||
if (hasAutoloaded) return
|
||||
loadFeature(MinorTrolling)
|
||||
loadFeature(FairySouls)
|
||||
loadFeature(AutoCompletions)
|
||||
// TODO: loadFeature(FishingWarning)
|
||||
loadFeature(SlotLocking)
|
||||
loadFeature(StorageOverlay)
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023 Linnea Gräf <nea@nea.moe>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package moe.nea.firmament.features.chat
|
||||
|
||||
import com.mojang.brigadier.arguments.StringArgumentType.string
|
||||
import moe.nea.firmament.commands.get
|
||||
import moe.nea.firmament.commands.suggestsList
|
||||
import moe.nea.firmament.commands.thenArgument
|
||||
import moe.nea.firmament.commands.thenExecute
|
||||
import moe.nea.firmament.events.CommandEvent
|
||||
import moe.nea.firmament.events.MaskCommands
|
||||
import moe.nea.firmament.features.FirmamentFeature
|
||||
import moe.nea.firmament.gui.config.ManagedConfig
|
||||
import moe.nea.firmament.repo.RepoManager
|
||||
import moe.nea.firmament.util.MC
|
||||
|
||||
object AutoCompletions : FirmamentFeature {
|
||||
|
||||
object TConfig : ManagedConfig(identifier) {
|
||||
val provideWarpTabCompletion by toggle("warp-complete") { true }
|
||||
val replaceWarpIsByWarpIsland by toggle("warp-is") { true }
|
||||
}
|
||||
|
||||
override val config: ManagedConfig?
|
||||
get() = TConfig
|
||||
override val identifier: String
|
||||
get() = "auto-completions"
|
||||
|
||||
override fun onLoad() {
|
||||
MaskCommands.subscribe {
|
||||
if (TConfig.provideWarpTabCompletion) {
|
||||
it.mask("warp")
|
||||
}
|
||||
}
|
||||
CommandEvent.subscribe {
|
||||
if (TConfig.provideWarpTabCompletion) {
|
||||
it.deleteCommand("warp")
|
||||
it.register("warp") {
|
||||
thenArgument("to", string()) { toArg ->
|
||||
suggestsList {
|
||||
RepoManager.neuRepo.constants?.islands?.warps?.flatMap { listOf(it.warp) + it.aliases } ?: listOf()
|
||||
}
|
||||
thenExecute {
|
||||
val warpName = get(toArg)
|
||||
if (warpName == "is" && TConfig.replaceWarpIsByWarpIsland) {
|
||||
MC.sendServerCommand("warp island")
|
||||
} else {
|
||||
MC.sendServerCommand("warp ${warpName}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user