/* * This file is a part of the SteamWar software. * * Copyright (C) 2024 SteamWar.de-Serverteam * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package de.steamwar.tntleague.command import de.steamwar.command.SWCommand import de.steamwar.command.TypeValidator import de.steamwar.tntleague.game.TNTLeagueGame import de.steamwar.tntleague.util.* import net.kyori.adventure.text.event.ClickEvent import net.kyori.adventure.text.event.HoverEvent import org.bukkit.entity.Player object InviteCommand: SWCommand("invite") { @Register fun invitePlayer(@Validator("isLeader") sender: Player, target: Player) { if (TNTLeagueGame.state != TNTLeagueGame.GameState.LOBBY) return if (TNTLeagueGame.getTeam(target) != null) return val team = TNTLeagueGame.getTeam(sender)!! team.invites.add(target) target.sendMessage(translate("invited", sender.name.yellow(), translate(team.name).colorByTeam(team)).basic().clickEvent( ClickEvent.callback { if (target !in team.invites) return@callback team.invites.remove(target) team.opposite.invites.remove(target) team.join(target) }) .hoverEvent(HoverEvent.showText(translate("invitedHover", translate(team.name).colorByTeam(team)).green()))) sender.sendMessage(translate("invitedPlayer", target.name.yellow()).basic()) } @Validator("isLeader", local = false) fun isLeader(): TypeValidator { return TypeValidator { _, player, _ -> TNTLeagueGame.getTeam(player)?.leader == player} } }