Files
TCOWW/src/main/kotlin/fr/azur/tcoww/commands/Vote.kt
2025-06-28 14:53:52 +02:00

32 lines
1.5 KiB
Kotlin

package fr.azur.tcoww.commands
import com.mojang.brigadier.Command
import com.mojang.brigadier.builder.LiteralArgumentBuilder
import fr.azur.tcoww.game.Game
import fr.azur.tcoww.game.Phase
import fr.azur.tcoww.utils.Stockage
import io.papermc.paper.command.brigadier.CommandSourceStack
import io.papermc.paper.command.brigadier.Commands
import io.papermc.paper.command.brigadier.argument.ArgumentTypes
import io.papermc.paper.command.brigadier.argument.resolvers.selector.PlayerSelectorArgumentResolver
import org.bukkit.entity.Player
class Vote {
val root: LiteralArgumentBuilder<CommandSourceStack> = Commands.literal("vote").then(
Commands.argument("target", ArgumentTypes.player())
.requires { ctx ->
Game.current?.timeGestion?.phase == Phase.VOTE && Game.current!!.playersMutable.contains(ctx.sender)
}.suggests { ctx, builder ->
Game.current?.playersMutable?.forEach { player -> builder.suggest(player.name) }
builder.buildFuture()
}.executes { ctx ->
val targetResolver = ctx.getArgument("target", PlayerSelectorArgumentResolver::class.java)
val target = targetResolver.resolve(ctx.source).first()
val player = (ctx.source.executor ?: ctx.source.sender as Player) as Player
if (Game.current?.playersMutable?.contains(target) ?: false) {
Stockage.vote[player.uniqueId] = target.uniqueId
}
Command.SINGLE_SUCCESS
}
)
}