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

View file

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

View file

@ -11,9 +11,9 @@ import xyz.ineanto.dragon.tasks.StartGameTask
import xyz.ineanto.dragon.world.WorldManager import xyz.ineanto.dragon.world.WorldManager
class GameSubCommand { class GameSubCommand {
fun run(sender: DragonPlayer, args: Array<String>) { fun run(player: DragonPlayer, args: Array<String>) {
if (args.isEmpty()) { 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 return
} }
@ -29,9 +29,9 @@ class GameSubCommand {
if (enumContains<GameState>(args[1])) { if (enumContains<GameState>(args[1])) {
val state = GameState.valueOf(args[1]) val state = GameState.valueOf(args[1])
RunnerDragon.instance.switchState(state) 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 { } else {
sender.sendMessage( player.sendMessage(
Component.text( Component.text(
"State invalide (WAITING/LAUNCH/GAME/END).", "State invalide (WAITING/LAUNCH/GAME/END).",
NamedTextColor.RED NamedTextColor.RED
@ -39,12 +39,27 @@ class GameSubCommand {
) )
} }
} else { } else {
sender.sendMessage(Component.text("Argument manquant.", NamedTextColor.RED)) player.sendMessage(Component.text("Argument manquant.", NamedTextColor.RED))
} }
} }
"start" -> { "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() } Bukkit.getOnlinePlayers().forEach { it.inventory.clear() }
StartGameTask().runTaskTimer(RunnerDragon.instance, 0L, 20L) 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.Component
import net.kyori.adventure.text.format.NamedTextColor import net.kyori.adventure.text.format.NamedTextColor
import org.bukkit.Bukkit import org.bukkit.Bukkit
import xyz.ineanto.dragon.GameState
import xyz.ineanto.dragon.RunnerDragon import xyz.ineanto.dragon.RunnerDragon
import xyz.ineanto.dragon.player.DragonPlayer import xyz.ineanto.dragon.player.DragonPlayer
import xyz.ineanto.dragon.teams.Team import xyz.ineanto.dragon.teams.Team
class TeamsSubCommand { class TeamsSubCommand {
fun run(player: DragonPlayer, args: Array<String>) { 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()) { if (args.isEmpty()) {
val teamComponent = Component val teamComponent = Component
.text() .text()