32 lines
1.5 KiB
Kotlin
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
|
|
}
|
|
)
|
|
} |