From 72c461ab28a6f42b226d4fa7aa0b72f8147b6d55 Mon Sep 17 00:00:00 2001 From: TDSTOS Date: Wed, 25 Mar 2026 02:37:16 +0100 Subject: [PATCH] Add KitCommand --- .../kotlin/club/mcscrims/speedhg/SpeedHG.kt | 10 ++- .../mcscrims/speedhg/command/KitCommand.kt | 67 +++++++++++++++++++ .../club/mcscrims/speedhg/kit/KitManager.kt | 2 +- src/main/resources/plugin.yml | 7 +- 4 files changed, 82 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/club/mcscrims/speedhg/command/KitCommand.kt diff --git a/src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt b/src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt index ce6240e..8c957b5 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/SpeedHG.kt @@ -1,5 +1,6 @@ package club.mcscrims.speedhg +import club.mcscrims.speedhg.command.KitCommand import club.mcscrims.speedhg.config.LanguageManager import club.mcscrims.speedhg.game.GameManager import club.mcscrims.speedhg.game.modules.AntiRunningManager @@ -50,10 +51,10 @@ class SpeedHG : JavaPlugin() { scoreboardManager = ScoreboardManager( this ) kitManager = KitManager( this ) - // Register kits kitManager.registerKit( GoblinKit() ) + registerCommands() registerListener() logger.info("SpeedHG wurde geladen!") @@ -65,6 +66,13 @@ class SpeedHG : JavaPlugin() { super.onDisable() } + private fun registerCommands() + { + val kitCommand = KitCommand() + getCommand( "kit" )?.setExecutor( kitCommand ) + getCommand( "kit" )?.tabCompleter = kitCommand + } + private fun registerListener() { val pm = Bukkit.getPluginManager() diff --git a/src/main/kotlin/club/mcscrims/speedhg/command/KitCommand.kt b/src/main/kotlin/club/mcscrims/speedhg/command/KitCommand.kt new file mode 100644 index 0000000..ef7aa2f --- /dev/null +++ b/src/main/kotlin/club/mcscrims/speedhg/command/KitCommand.kt @@ -0,0 +1,67 @@ +package club.mcscrims.speedhg.command + +import club.mcscrims.speedhg.SpeedHG +import club.mcscrims.speedhg.util.legacySerializer +import club.mcscrims.speedhg.util.sendMsg +import org.bukkit.command.Command +import org.bukkit.command.CommandExecutor +import org.bukkit.command.CommandSender +import org.bukkit.command.TabCompleter +import org.bukkit.entity.Player + +class KitCommand : CommandExecutor, TabCompleter { + + private val plugin = SpeedHG.instance + + override fun onCommand( + sender: CommandSender, + command: Command, + label: String, + args: Array? + ): Boolean + { + val player = sender as? Player + + if ( player == null ) + { + sender.sendMessage( "§cOnly players can execute this command." ) + return true + } + + if ( args.isNullOrEmpty() ) + { + player.sendMsg( "commands.kit.usage" ) + return true + } + + val kitName = args[0] + val kit = plugin.kitManager.getKit( kitName ) + + if ( kit == null ) + { + player.sendMsg( "commands.kit.kitNotFound", "kit" to kitName ) + return true + } + + plugin.kitManager.selectKit( player, kit ) + player.sendMsg( "commands.kit.selected", "kit" to legacySerializer.serialize( kit.displayName )) + return true + } + + override fun onTabComplete( + sender: CommandSender, + command: Command, + label: String, + args: Array? + ): List + { + if ( args.isNullOrEmpty() ) + return listOf() + + if ( args.size == 1 ) + return plugin.kitManager.getRegisteredKits().map { it.id } + + return listOf() + } + +} \ No newline at end of file diff --git a/src/main/kotlin/club/mcscrims/speedhg/kit/KitManager.kt b/src/main/kotlin/club/mcscrims/speedhg/kit/KitManager.kt index 76c4ebb..1686beb 100644 --- a/src/main/kotlin/club/mcscrims/speedhg/kit/KitManager.kt +++ b/src/main/kotlin/club/mcscrims/speedhg/kit/KitManager.kt @@ -53,7 +53,7 @@ class KitManager( fun getRegisteredKits(): Collection = registeredKits.values - fun getKit(id: String): Kit? = registeredKits[id] + fun getKit( id: String ): Kit? = registeredKits[id] // ------------------------------------------------------------------------- // Player selections (lobby phase) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index e9a623f..347f106 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -5,5 +5,8 @@ api-version: '1.21' depend: - "WorldEdit" - - "Apollo-Bukkit" - - "McScrims-CoreSystem" \ No newline at end of file + +commands: + kit: + description: 'Select kits via command' + usage: '/kit ' \ No newline at end of file