Skip to content

Commit

Permalink
improved client command
Browse files Browse the repository at this point in the history
code clean-up
added integration command with sub-commands:
- url (displays integration URL)
- override (overrides browser URL)
- reset (resets integration URL back to default)
added separate browser sub-command function with (open)
  • Loading branch information
1zun4 committed Dec 27, 2023
1 parent 5035351 commit 4af14eb
Showing 1 changed file with 67 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,19 @@
* You should have received a copy of the GNU General Public License
* along with LiquidBounce. If not, see <https://www.gnu.org/licenses/>.
*/

package net.ccbluex.liquidbounce.features.command.commands.client

import net.ccbluex.liquidbounce.LiquidBounce
import net.ccbluex.liquidbounce.features.command.Command
import net.ccbluex.liquidbounce.features.command.builder.CommandBuilder
import net.ccbluex.liquidbounce.features.command.builder.ParameterBuilder
import net.ccbluex.liquidbounce.utils.client.chat
import net.ccbluex.liquidbounce.utils.client.mc
import net.ccbluex.liquidbounce.utils.client.regular
import net.ccbluex.liquidbounce.utils.client.variable
import net.ccbluex.liquidbounce.utils.client.*
import net.ccbluex.liquidbounce.web.integration.BrowserScreen
import net.ccbluex.liquidbounce.web.integration.IntegrationHandler
import net.ccbluex.liquidbounce.web.integration.IntegrationHandler.clientJcef
import net.ccbluex.liquidbounce.web.theme.ThemeManager
import net.minecraft.util.Util

/**
* Client Command
Expand All @@ -38,57 +37,72 @@ import net.ccbluex.liquidbounce.web.integration.IntegrationHandler.clientJcef
*/
object CommandClient {

fun createCommand(): Command {
return CommandBuilder.begin("client")
.hub()
.subcommand(
CommandBuilder.begin("info").handler { command, _ ->
chat(regular(command.result("clientName", variable(LiquidBounce.CLIENT_NAME))),
prefix = false)
chat(regular(command.result("clientVersion", variable(LiquidBounce.clientVersion))),
prefix = false)
chat(regular(command.result("clientAuthor", variable(LiquidBounce.CLIENT_AUTHOR))),
prefix = false)
/**
* Creates client command with a variety of subcommands.
*
* TODO: contributors
* links
* instructions
* reset
* theme manager
*/
fun createCommand() = CommandBuilder.begin("client")
.hub()
.subcommand(infoCommand())
.subcommand(browserCommand())
.subcommand(integrationCommand())
.build()

private fun infoCommand() = CommandBuilder
.begin("info")
.handler { command, _ ->
chat(regular(command.result("clientName", variable(LiquidBounce.CLIENT_NAME))),
prefix = false)
chat(regular(command.result("clientVersion", variable(LiquidBounce.clientVersion))),
prefix = false)
chat(regular(command.result("clientAuthor", variable(LiquidBounce.CLIENT_AUTHOR))),
prefix = false)
}.build()

private fun browserCommand() = CommandBuilder.begin("browser")
.hub()
.subcommand(
CommandBuilder.begin("open")
.parameter(
ParameterBuilder.begin<String>("name")
.verifiedBy(ParameterBuilder.STRING_VALIDATOR).required()
.build()
).handler { command, args ->
chat(regular("Opening browser..."))
mc.setScreen(BrowserScreen(args[0] as String))
}.build()
)
.subcommand(
CommandBuilder.begin("browser")
.hub()
.subcommand(
CommandBuilder.begin("open")
.parameter(
ParameterBuilder.begin<String>("name")
.verifiedBy(ParameterBuilder.STRING_VALIDATOR).required()
.build()
).handler { command, args ->
chat(regular("Opening browser..."))
mc.setScreen(BrowserScreen(args[0] as String))
}.build()
).subcommand(CommandBuilder.begin("override")
.parameter(
ParameterBuilder.begin<String>("name")
.verifiedBy(ParameterBuilder.STRING_VALIDATOR).required()
.build()
).handler { command, args ->
chat(regular("Overrides client JCEF browser..."))
clientJcef?.loadUrl(args[0] as String)
}.build()
).subcommand(CommandBuilder.begin("reset")
.handler { command, args ->
chat(regular("Resetting client JCEF browser..."))
IntegrationHandler.updateIntegrationBrowser()
}.build()
)
)
.build()

private fun integrationCommand() = CommandBuilder.begin("integration")
.hub()
.subcommand(CommandBuilder.begin("url")
.handler { command, args ->
chat(regular("Opening integration URL on your default browser..."))
browseUrl(ThemeManager.integrationUrl)
chat(regular("Integration URL: ${ThemeManager.integrationUrl}"))
}.build()
)
.subcommand(CommandBuilder.begin("override")
.parameter(
ParameterBuilder.begin<String>("name")
.verifiedBy(ParameterBuilder.STRING_VALIDATOR).required()
.build()
).handler { command, args ->
chat(regular("Overrides client JCEF browser..."))
clientJcef?.loadUrl(args[0] as String)
}.build()
).subcommand(CommandBuilder.begin("reset")
.handler { command, args ->
chat(regular("Resetting client JCEF browser..."))
IntegrationHandler.updateIntegrationBrowser()
}.build()
)
// TODO: contributors
// TODO: links
// TODO: instructions
// TODO: reset
// TODO: theme manager
// .. other client base commands
.build()
}
.build()

}

0 comments on commit 4af14eb

Please sign in to comment.