1
0
Fork 0

feat: prevent management after starting game

This commit is contained in:
ineanto 2024-07-09 14:59:42 +02:00
parent c810cc0aaf
commit b71afddb19
Signed by: ineanto
GPG key ID: E511F9CAA2F9CE84
4 changed files with 37 additions and 12 deletions

View file

@ -11,7 +11,7 @@ import org.bukkit.*
import org.bukkit.attribute.Attribute
import org.bukkit.plugin.java.JavaPlugin
import org.bukkit.scheduler.BukkitTask
import xyz.ineanto.dragon.commands.MainCommand
import xyz.ineanto.dragon.commands.GameCommand
import xyz.ineanto.dragon.event.*
import xyz.ineanto.dragon.event.end.BedInteractListener
import xyz.ineanto.dragon.event.end.BlockPlaceListener
@ -88,7 +88,7 @@ class RunnerDragon : JavaPlugin() {
lifecycleManager.registerEventHandler(LifecycleEvents.COMMANDS) { event ->
val commands = event.registrar()
commands.register("rd", MainCommand())
commands.register("game", GameCommand())
}
worldManager = WorldManager(this)

View file

@ -10,7 +10,7 @@ import org.bukkit.entity.Player
import xyz.ineanto.dragon.RunnerDragon
@Suppress("UnstableApiUsage")
class MainCommand : BasicCommand {
class GameCommand : BasicCommand {
override fun execute(
stack: CommandSourceStack,
args: Array<out String>
@ -25,19 +25,18 @@ class MainCommand : BasicCommand {
}
if (args.isEmpty()) {
dragonPlayer.sendMessage(Component.text("Argument manquant: /rd (teams/game/say)"))
dragonPlayer.sendMessage(Component.text("Argument manquant: /game (teams/game/say)"))
return
}
when (args[0]) {
"game" -> GameSubCommand().run(dragonPlayer, args.drop(1).toTypedArray())
"manage" -> GameSubCommand().run(dragonPlayer, args.drop(1).toTypedArray())
"teams" -> TeamsSubCommand().run(dragonPlayer, args.drop(1).toTypedArray())
"say" -> {
if (args.drop(1).isEmpty()) {
dragonPlayer.sendMessage(
Component
.text()
.append(RunnerDragon.PREFIX)
.append(Component.text("Veuillez préciser un message.", NamedTextColor.RED))
.build()
)

View file

@ -11,9 +11,9 @@ import xyz.ineanto.dragon.tasks.StartGameTask
import xyz.ineanto.dragon.world.WorldManager
class GameSubCommand {
fun run(sender: DragonPlayer, args: Array<String>) {
fun run(player: DragonPlayer, args: Array<String>) {
if (args.isEmpty()) {
sender.sendMessage(Component.text("Argument manquant: /rd game (start/state)"))
player.sendMessage(Component.text("Argument manquant: /game manage (start/state/dim)"))
return
}
@ -29,9 +29,9 @@ class GameSubCommand {
if (enumContains<GameState>(args[1])) {
val state = GameState.valueOf(args[1])
RunnerDragon.instance.switchState(state)
sender.sendMessage(Component.text("État de jeu défini en: ${state.name}.", NamedTextColor.RED))
player.sendMessage(Component.text("État de jeu défini en: ${state.name}.", NamedTextColor.RED))
} else {
sender.sendMessage(
player.sendMessage(
Component.text(
"State invalide (WAITING/LAUNCH/GAME/END).",
NamedTextColor.RED
@ -39,12 +39,27 @@ class GameSubCommand {
)
}
} else {
sender.sendMessage(Component.text("Argument manquant.", NamedTextColor.RED))
player.sendMessage(Component.text("Argument manquant.", NamedTextColor.RED))
}
}
"start" -> {
sender.sendMessage(Component.text("Démarrage de la partie.", NamedTextColor.RED))
if (RunnerDragon.STATE != GameState.WAITING) {
val errorMessage = Component
.text()
.append(
Component.text(
"Impossible de lancer le jeu, il a déjà démarré.",
NamedTextColor.RED
)
)
.appendNewline()
.build()
player.sendMessage(errorMessage)
return
}
player.sendMessage(Component.text("Démarrage de la partie.", NamedTextColor.RED))
Bukkit.getOnlinePlayers().forEach { it.inventory.clear() }
StartGameTask().runTaskTimer(RunnerDragon.instance, 0L, 20L)
}

View file

@ -3,12 +3,23 @@ package xyz.ineanto.dragon.commands
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import org.bukkit.Bukkit
import xyz.ineanto.dragon.GameState
import xyz.ineanto.dragon.RunnerDragon
import xyz.ineanto.dragon.player.DragonPlayer
import xyz.ineanto.dragon.teams.Team
class TeamsSubCommand {
fun run(player: DragonPlayer, args: Array<String>) {
if (RunnerDragon.STATE != GameState.WAITING) {
val errorMessage = Component
.text()
.append(Component.text("Impossible de configurer les équipes : jeu déjà démarré.", NamedTextColor.RED))
.appendNewline()
.build()
player.sendMessage(errorMessage)
return
}
if (args.isEmpty()) {
val teamComponent = Component
.text()