1
0
Fork 0

feat: en gros la mise à jour

This commit is contained in:
ineanto 2023-12-31 02:09:38 +01:00
parent f795dcd68f
commit 27fb3103f2
387 changed files with 16998 additions and 435 deletions

View file

@ -1,46 +0,0 @@
package xyz.atnrch.dragon.commands
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.enumContains
import xyz.atnrch.dragon.player.DragonPlayer
import xyz.atnrch.dragon.tasks.StartGameTask
class GameSubCommand {
fun run(sender: DragonPlayer, args: Array<String>) {
if (args.isEmpty()) {
sender.sendMessage("Argument manquant: /rd game (start/state)")
return
}
when (args[0]) {
"end" -> {
Bukkit.getOnlinePlayers().forEach {
it.teleport(RunnerDragon.WORLD_END.spawnLocation)
}
}
"state" -> {
if (args.size == 2) {
if (enumContains<GameState>(args[1])) {
val state = GameState.valueOf(args[1])
RunnerDragon.instance.switchState(state)
sender.sendMessage("${ChatColor.RED}État de jeu défini en: ${state.name}.")
} else {
sender.sendMessage("${ChatColor.RED}State invalide (WAITING/LAUNCH/GAME/END).")
}
} else {
sender.sendMessage("${ChatColor.RED}Argument manquant.")
}
}
"start" -> {
sender.sendMessage("Démarrage de la partie.")
Bukkit.getOnlinePlayers().forEach { it.inventory.clear() }
StartGameTask().runTaskTimer(RunnerDragon.instance, 0L, 20L)
}
}
}
}

View file

@ -1,41 +0,0 @@
package xyz.atnrch.dragon.commands
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
import xyz.atnrch.dragon.RunnerDragon
class MainCommand : CommandExecutor {
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<String>): Boolean {
if (sender is Player) {
val player: Player = sender
val dragonPlayer = RunnerDragon.instance.playerManager.getPlayer(player.uniqueId)
if (player.isOp.not()) {
dragonPlayer.sendMessage("Erreur: Status d'opérateur requis.")
return true
}
if (args.isEmpty()) {
dragonPlayer.sendMessage("Argument manquant: /rd (teams/game/say)")
return true
}
when (args[0]) {
"game" -> GameSubCommand().run(dragonPlayer, args.drop(1).toTypedArray())
"teams" -> TeamsSubCommand().run(dragonPlayer, args.drop(1).toTypedArray())
"say" -> {
Bukkit.broadcastMessage(
"${RunnerDragon.TITLE_MSG} ${ChatColor.RED}${ChatColor.BOLD}(ANNONCE) ${ChatColor.RESET}${
args.drop(1).joinToString(" ", "", "")
}"
)
}
}
}
return true
}
}

View file

@ -1,65 +0,0 @@
package xyz.atnrch.dragon.commands
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.enumContains
import xyz.atnrch.dragon.player.DragonPlayer
class TeamsSubCommand {
fun run(player: DragonPlayer, args: Array<String>) {
if (args.isEmpty()) {
player.sendMessage(
"""
Configuration des équipes:
${ChatColor.DARK_GRAY}- ${ChatColor.GOLD}Status: ${if (RunnerDragon.TEAM_LOCK) "${ChatColor.RED}fermées" else "${ChatColor.GREEN}ouvertes${ChatColor.RESET}."}
${ChatColor.DARK_GRAY}- ${ChatColor.GOLD}Nombre: ${ChatColor.AQUA}${RunnerDragon.NUMBER_OF_TEAMS}
${ChatColor.DARK_GRAY}- ${ChatColor.GOLD}Capacité: ${ChatColor.AQUA}${RunnerDragon.TEAM_MAX_SIZE}
${ChatColor.DARK_GRAY}- ${ChatColor.GOLD}Équipes enregistrées: ${
RunnerDragon.instance.teamManager.getTeamColorsNames().joinToString("${ChatColor.RESET}, ", "", "")
}
""".trimIndent()
)
return
}
when (args[0]) {
"lock" -> {
RunnerDragon.TEAM_LOCK = RunnerDragon.TEAM_LOCK.not()
Bukkit.getOnlinePlayers()
.forEach {
RunnerDragon.instance.playerManager.getPlayer(it.uniqueId)
.setTeamItem(RunnerDragon.TEAM_LOCK.not())
}
player.sendMessage("Les équipes sont désormais: ${if (RunnerDragon.TEAM_LOCK) "${ChatColor.RED}fermées" else "${ChatColor.GREEN}ouvertes${ChatColor.RESET}."}")
}
"swap" -> {
if (args.size < 2) {
player.sendMessage("${ChatColor.RED}Argument manquant.")
} else {
val target = Bukkit.getPlayer(args[1])
val targetTeam = args[2]
if (enumContains<ChatColor>(targetTeam)) {
val value: ChatColor = ChatColor.valueOf(targetTeam)
target?.let {
val instance = RunnerDragon.instance
instance.teamManager.getOnColor(value)
?.let { coloredTeam ->
val dragonPlayer = instance.playerManager.getPlayer(it.uniqueId)
dragonPlayer.setTeam(coloredTeam)
dragonPlayer.updateDisplayName()
player.sendMessage("${target.name} est passé dans l'équipe ${coloredTeam.displayName}")
}
}
} else {
player.sendMessage("${ChatColor.RED}Couleur invalide.")
}
}
}
}
}
}

View file

@ -1,14 +0,0 @@
package xyz.atnrch.dragon.event
import org.bukkit.ChatColor
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerQuitEvent
class PlayerQuitListener : Listener {
@EventHandler
fun onPlayerJoin(event: PlayerQuitEvent) {
val player = event.player
event.quitMessage = "(${ChatColor.RED}-${ChatColor.WHITE}) ${player.name}"
}
}

View file

@ -1,41 +0,0 @@
package xyz.atnrch.dragon.inventory
import org.bukkit.ChatColor
import org.bukkit.entity.Player
import org.bukkit.event.inventory.ClickType
import org.bukkit.event.inventory.InventoryClickEvent
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.teams.CandleColor
import xyz.atnrch.dragon.teams.Team
import xyz.xenondevs.invui.item.ItemProvider
import xyz.xenondevs.invui.item.builder.ItemBuilder
import xyz.xenondevs.invui.item.impl.AbstractItem
class CandleItem(private val team: Team) : AbstractItem() {
override fun getItemProvider(): ItemProvider {
val material = CandleColor.getFromTeamColor(team.teamColor)
val itemBuilder = ItemBuilder(material)
itemBuilder.setDisplayName("${team.teamColor.chatColor}Rejoindre l'équipe")
team.players.forEach { player ->
itemBuilder.addLoreLines("${ChatColor.DARK_GRAY}- ${team.teamColor.chatColor}${player.player.name}")
}
return itemBuilder
}
override fun handleClick(clickType: ClickType, player: Player, event: InventoryClickEvent) {
RunnerDragon.instance.playerManager.getPlayer(player.uniqueId).let {
if (team.players.size == 2) {
it.sendMessage("${ChatColor.RED}L'équipe est complète.")
} else if (it.getTeam()!! == team) {
it.sendMessage("${ChatColor.RED}Vous êtes déjà dans cette équipe.")
} else {
it.sendMessage("Vous êtes désormais dans l'équipe: ${team.displayName}")
it.setTeam(team)
it.updateDisplayName()
}
}
notifyWindows()
event.view.close()
}
}

View file

@ -1,89 +0,0 @@
package xyz.atnrch.dragon.player
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import org.bukkit.GameMode
import org.bukkit.Material
import org.bukkit.inventory.ItemStack
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.teams.Team
import java.util.*
class DragonPlayer(uuid: UUID) {
val player = Bukkit.getPlayer(uuid)!!
fun instantiatePlayer() {
RunnerDragon.instance.worldManager.teleportAtSpawn(player)
updateHeaderFooter()
impulse101()
setTeam(Team.DEFAULT_TEAM)
}
fun updateHeaderFooter() {
player.playerListHeader = """
${RunnerDragon.TITLE}
${ChatColor.DARK_PURPLE}${ChatColor.BOLD}Met@${ChatColor.DARK_AQUA}${ChatColor.BOLD}Gaming
${ChatColor.GOLD}Temps: ${ChatColor.RED}${formatDuration(RunnerDragon.TIME)}
${ChatColor.GOLD}Vaches tuées: ${ChatColor.RED}${RunnerDragon.DEAD_COWS} ${ChatColor.GRAY}${ChatColor.ITALIC}(c'est horrible)
""".trimIndent()
player.playerListFooter = """
${ChatColor.GOLD}${ChatColor.ITALIC}Plugin: ${ChatColor.BLUE}Ineanto ${ChatColor.DARK_GRAY}/ ${ChatColor.GOLD}${ChatColor.ITALIC}Concept: ${ChatColor.BLUE}Linkxss
""".trimIndent()
}
fun sendMessage(message: String) {
player.sendMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.RESET}$message")
}
fun getTeam(): Team? {
return RunnerDragon.instance.teamManager.getPlayerTeam(player)
}
fun setTeam(team: Team) {
RunnerDragon.instance.teamManager.setPlayerTeam(player, team)
}
fun impulse101() {
player.gameMode = GameMode.SURVIVAL
player.inventory.clear()
player.health = 20.0
player.foodLevel = 20
player.activePotionEffects.clear()
player.walkSpeed = 0.2f
player.flySpeed = 0.1f
player.exp = 0f
player.level = 0
player.totalExperience = 0
}
fun setTeamItem(value: Boolean) {
if (value) {
val item = ItemStack(Material.CANDLE)
val meta = item.itemMeta!!
meta.setDisplayName("${ChatColor.GOLD}Choisir une équipe")
item.itemMeta = meta
player.inventory.setItem(4, item)
} else {
player.inventory.setItem(4, ItemStack(Material.AIR))
}
}
fun updateDisplayName() {
// TODO (Ineanto, 6/26/23): Update nick
/**
* NickAPI.nick(player, "${getTeam()!!.teamColor.chatColor}${player.name}")
* NickAPI.refreshPlayer(player)
*/
}
private fun formatDuration(totalSeconds: Int): String {
val hours = totalSeconds / 3600
val minutes = (totalSeconds % 3600) / 60
val seconds = totalSeconds % 60
return String.format("%02d:%02d:%02d", hours, minutes, seconds)
}
}

View file

@ -1,14 +0,0 @@
package xyz.atnrch.dragon.teams
import org.bukkit.ChatColor
import org.bukkit.Color
enum class TeamColor(val chatColor: ChatColor, val color: Color, val displayName: String) {
NONE(ChatColor.GRAY, Color.GRAY, "Grise"),
BLUE(ChatColor.BLUE, Color.BLUE, "Bleue"),
YELLOW(ChatColor.YELLOW, Color.YELLOW, "Jaune"),
RED(ChatColor.RED, Color.RED, "Rouge"),
GREEN(ChatColor.DARK_GREEN, Color.GREEN, "Verte"),
ORANGE(ChatColor.GOLD, Color.ORANGE, "Orange"),
PURPLE(ChatColor.LIGHT_PURPLE, Color.PURPLE, "Violette")
}

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon
package xyz.ineanto.dragon
inline fun <reified T : Enum<T>> enumContains(name: String): Boolean {
return enumValues<T>().any { it.name == name }

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon
package xyz.ineanto.dragon
enum class GameState {
WAITING,

View file

@ -1,25 +1,31 @@
package xyz.atnrch.dragon
package xyz.ineanto.dragon
import com.google.common.cache.Cache
import com.google.common.cache.CacheBuilder
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import net.kyori.adventure.text.format.TextDecoration
import net.kyori.adventure.text.minimessage.MiniMessage
import org.apache.commons.io.FileUtils
import org.bukkit.*
import org.bukkit.attribute.Attribute
import org.bukkit.plugin.java.JavaPlugin
import org.bukkit.scheduler.BukkitTask
import xyz.atnrch.dragon.commands.MainCommand
import xyz.atnrch.dragon.event.*
import xyz.atnrch.dragon.event.end.BedInteractListener
import xyz.atnrch.dragon.event.end.BlockPlaceListener
import xyz.atnrch.dragon.event.end.EnderDragonListener
import xyz.atnrch.dragon.event.waiting.WaitingListener
import xyz.atnrch.dragon.player.PlayerManager
import xyz.atnrch.dragon.schematic.SchematicLoader
import xyz.atnrch.dragon.tasks.GracePeriodTask
import xyz.atnrch.dragon.tasks.TimerTask
import xyz.atnrch.dragon.teams.Team
import xyz.atnrch.dragon.teams.TeamManager
import xyz.atnrch.dragon.world.PreviousWorldUtils
import xyz.atnrch.dragon.world.WorldManager
import xyz.ineanto.dragon.commands.MainCommand
import xyz.ineanto.dragon.event.*
import xyz.ineanto.dragon.event.end.BedInteractListener
import xyz.ineanto.dragon.event.end.BlockPlaceListener
import xyz.ineanto.dragon.event.end.EnderDragonListener
import xyz.ineanto.dragon.event.waiting.WaitingListener
import xyz.ineanto.dragon.player.PlayerManager
import xyz.ineanto.dragon.schematic.SchematicLoader
import xyz.ineanto.dragon.scoreboard.ScoreboardTeams
import xyz.ineanto.dragon.tasks.GracePeriodTask
import xyz.ineanto.dragon.tasks.TimerTask
import xyz.ineanto.dragon.teams.Team
import xyz.ineanto.dragon.teams.TeamManager
import xyz.ineanto.dragon.world.PreviousWorldUtils
import xyz.ineanto.dragon.world.WorldManager
import java.io.File
import java.time.Duration
import java.time.Instant
@ -32,10 +38,12 @@ class RunnerDragon : JavaPlugin() {
const val TEAM_MAX_SIZE = 2
const val NUMBER_OF_TEAMS = 6
val TITLE =
"${ChatColor.LIGHT_PURPLE}${ChatColor.BOLD}${ChatColor.ITALIC}Runner${ChatColor.DARK_PURPLE}${ChatColor.BOLD}${ChatColor.ITALIC}Dragon"
val TITLE_MSG =
"${ChatColor.WHITE}[${ChatColor.LIGHT_PURPLE}${ChatColor.BOLD}RUNNER${ChatColor.DARK_PURPLE}${ChatColor.BOLD}DRAGON${ChatColor.WHITE}]"
val TITLE = MiniMessage.miniMessage()
.deserialize("<gradient:#8045ff:#cd59ff><b>Runner</b></gradient><gradient:#e9f1b0:#ffbd80>Dragon</gradient>")
val PREFIX = MiniMessage.miniMessage()
.deserialize("<gradient:#235ddd:#6e4bf9><b>Met@</b></gradient><gradient:#04e9e3:#93e2c8>Gaming</gradient>")
val LAST_BED_INTERACT: Cache<UUID, Instant> = CacheBuilder.newBuilder()
.expireAfterWrite(Duration.ofSeconds(10))
.build()
@ -63,10 +71,12 @@ class RunnerDragon : JavaPlugin() {
lateinit var playerManager: PlayerManager
lateinit var worldManager: WorldManager
private lateinit var scoreboardTeams: ScoreboardTeams
override fun onEnable() {
instance = this
val previousWorldFolder = File("runnerdragon")
val previousWorldFolder = File("outerlands")
val previousEndFolder = File("world_the_end")
val previousNetherFolder = File("world_nether")
if (previousWorldFolder.exists()) {
@ -82,7 +92,7 @@ class RunnerDragon : JavaPlugin() {
PreviousWorldUtils.resetNether()
}
val creator = WorldCreator("runnerdragon")
val creator = WorldCreator("outerlands")
creator.environment(World.Environment.NORMAL)
creator.generateStructures(true)
creator.type(WorldType.NORMAL)
@ -125,7 +135,13 @@ class RunnerDragon : JavaPlugin() {
STATE = state
return when (state) {
GameState.WAITING -> {
Bukkit.broadcastMessage("$TITLE_MSG ${ChatColor.GOLD}Mise à zéro du jeu !")
val resetComponent: Component = Component
.text()
.append(PREFIX)
.append(Component.text("Mise à zéro du jeu !", NamedTextColor.GOLD))
.build()
Bukkit.broadcast(resetComponent)
logger.info("(Re)Démarrage du jeu...")
Bukkit.getScheduler().cancelTasks(this)
TIMER_TASK?.taskId?.let { Bukkit.getScheduler().cancelTask(it) }
@ -140,13 +156,23 @@ class RunnerDragon : JavaPlugin() {
SPAWN = Location(WORLD, 0.0, SPAWN_HEIGHT.plus(2).toDouble(), 0.0, -180f, 0f)
Bukkit.unloadWorld("world", true)
logger.info("Création des équipes...")
logger.info("Mise en place du système d'équipe...")
teamManager.clean()
teamManager.createTeams(NUMBER_OF_TEAMS)
scoreboardTeams = ScoreboardTeams()
scoreboardTeams.reset()
scoreboardTeams.create()
Bukkit.getOnlinePlayers().forEach {
it.teleport(SPAWN)
it.setBedSpawnLocation(SPAWN, true)
it.inventory.clear()
it.clearActivePotionEffects()
it.health = it.getAttribute(Attribute.GENERIC_MAX_HEALTH)!!.value
it.foodLevel = 20
it.level = 0
it.exp = 0.0f
playerManager.removePlayer(it.uniqueId)
playerManager.addPlayer(it.uniqueId)
}
@ -161,7 +187,13 @@ class RunnerDragon : JavaPlugin() {
}
GameState.LAUNCH -> {
Bukkit.broadcastMessage("$TITLE_MSG ${ChatColor.GOLD}Lancement de la partie !")
val launchComponent: Component = Component
.text()
.append(PREFIX)
.append(Component.text("Lancement de la partie !", NamedTextColor.GOLD))
.build()
Bukkit.broadcast(launchComponent)
LOBBY_SCHEMATIC.removeSchematic()
SPAWN = WORLD.spawnLocation
TIMER_TASK = TimerTask().runTaskTimer(instance, 0L, 20L)
@ -173,7 +205,14 @@ class RunnerDragon : JavaPlugin() {
}
GameState.GAME -> {
Bukkit.broadcastMessage("$TITLE_MSG ${ChatColor.GOLD}${ChatColor.ITALIC}PVP activé !")
val pvpComponent: Component = Component
.text()
.append(PREFIX)
.appendSpace()
.append(Component.text("PVP activé !", NamedTextColor.GOLD, TextDecoration.ITALIC))
.build()
Bukkit.broadcast(pvpComponent)
GRACE_PERIOD_TASK?.taskId?.let { Bukkit.getScheduler().cancelTask(it) }
true
}

View file

@ -0,0 +1,51 @@
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.tasks.StartGameTask
class GameSubCommand {
fun run(sender: DragonPlayer, args: Array<String>) {
if (args.isEmpty()) {
sender.sendMessage(Component.text("Argument manquant: /rd game (start/state)"))
return
}
when (args[0]) {
"end" -> {
Bukkit.getOnlinePlayers().forEach {
it.teleport(RunnerDragon.WORLD_END.spawnLocation)
}
}
"state" -> {
if (args.size == 2) {
if (xyz.ineanto.dragon.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))
} else {
sender.sendMessage(
Component.text(
"State invalide (WAITING/LAUNCH/GAME/END).",
NamedTextColor.RED
)
)
}
} else {
sender.sendMessage(Component.text("Argument manquant.", NamedTextColor.RED))
}
}
"start" -> {
sender.sendMessage(Component.text("Démarrage de la partie.", NamedTextColor.RED))
Bukkit.getOnlinePlayers().forEach { it.inventory.clear() }
StartGameTask().runTaskTimer(RunnerDragon.instance, 0L, 20L)
}
}
}
}

View file

@ -0,0 +1,56 @@
package xyz.ineanto.dragon.commands
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Bukkit
import org.bukkit.command.Command
import org.bukkit.command.CommandExecutor
import org.bukkit.command.CommandSender
import org.bukkit.entity.Player
import xyz.ineanto.dragon.RunnerDragon
class MainCommand : CommandExecutor {
override fun onCommand(sender: CommandSender, command: Command, label: String, args: Array<String>): Boolean {
if (sender is Player) {
val player: Player = sender
val dragonPlayer = RunnerDragon.instance.playerManager.getPlayer(player.uniqueId)
if (player.isOp.not()) {
dragonPlayer.sendMessage(Component.text("Erreur: Status d'opérateur requis."))
return true
}
if (args.isEmpty()) {
dragonPlayer.sendMessage(Component.text("Argument manquant: /rd (teams/game/say)"))
return true
}
when (args[0]) {
"game" -> GameSubCommand().run(dragonPlayer, args.drop(1).toTypedArray())
"teams" -> TeamsSubCommand().run(dragonPlayer, args.drop(1).toTypedArray())
"say" -> {
if (args.drop(1).isEmpty()) {
player.sendMessage(
Component
.text()
.append(RunnerDragon.PREFIX)
.append(Component.text("Veuillez préciser un message.", NamedTextColor.RED))
.build()
)
return true
}
val announcementComponent = Component.text()
.append(Component.text("(ANNONCE)", NamedTextColor.RED, TextDecoration.BOLD))
.appendSpace()
.append(Component.text(args.drop(1).joinToString(" ", "", "")))
.build()
Bukkit.broadcast(announcementComponent)
}
}
}
return true
}
}

View file

@ -0,0 +1,144 @@
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.RunnerDragon
import xyz.ineanto.dragon.player.DragonPlayer
import xyz.ineanto.dragon.teams.Team
class TeamsSubCommand {
fun run(player: DragonPlayer, args: Array<String>) {
if (args.isEmpty()) {
val teamComponent = Component
.text()
.append(Component.text("Configuration des équipes:"))
.appendNewline()
val statusComponent = Component
.text()
.append(Component.text("-", NamedTextColor.DARK_GRAY))
.appendSpace()
.append(Component.text("Status:", NamedTextColor.GOLD))
.appendSpace()
if (RunnerDragon.TEAM_LOCK) {
statusComponent.append(Component.text("fermées", NamedTextColor.RED))
} else {
statusComponent.append(Component.text("ouvertes", NamedTextColor.GREEN))
}
statusComponent.appendNewline().build()
val numberComponent = Component
.text()
.append(Component.text("-", NamedTextColor.DARK_GRAY))
.appendSpace()
.append(Component.text("Nombre:", NamedTextColor.GOLD))
.appendSpace()
.append(Component.text(RunnerDragon.NUMBER_OF_TEAMS, NamedTextColor.AQUA))
.appendNewline()
.build()
val sizeComponent = Component
.text()
.append(Component.text("-", NamedTextColor.DARK_GRAY))
.appendSpace()
.append(Component.text("Capacité:", NamedTextColor.GOLD))
.appendSpace()
.append(Component.text(RunnerDragon.TEAM_MAX_SIZE, NamedTextColor.AQUA))
.appendNewline()
.build()
val teamsComponent = Component
.text()
.append(Component.text("-", NamedTextColor.DARK_GRAY))
.appendSpace()
.append(Component.text("Équipes disponibles:", NamedTextColor.GOLD))
.appendSpace()
val separator = Component.text(",").appendSpace()
val teams = RunnerDragon.instance.teamManager.getTeams()
val listIterator = teams.listIterator()
while (listIterator.hasNext()) {
val team: Team = listIterator.next()
val teamNameComponent = Component.text()
.append(Component.text(team.teamColor.displayName, team.teamColor.namedColor))
if (listIterator.hasNext()) {
teamNameComponent.append(separator)
}
teamNameComponent.build()
teamsComponent.append(teamNameComponent)
}
teamsComponent.build()
teamComponent
.append(statusComponent)
.append(numberComponent)
.append(sizeComponent)
.append(teamsComponent)
player.sendMessage(teamComponent.build())
return
}
when (args[0]) {
"lock" -> {
RunnerDragon.TEAM_LOCK = RunnerDragon.TEAM_LOCK.not()
Bukkit.getOnlinePlayers()
.forEach {
RunnerDragon.instance.playerManager.getPlayer(it.uniqueId)
.setTeamItem(RunnerDragon.TEAM_LOCK.not())
}
val lockComponent = Component.text()
.append(Component.text("Les équipes sont désormais :"))
.appendSpace()
.append(
if (RunnerDragon.TEAM_LOCK) Component.text(
"fermées",
NamedTextColor.RED
) else Component.text("ouvertes", NamedTextColor.GREEN)
)
.build()
player.sendMessage(lockComponent)
}
"swap" -> {
if (args.size < 2) {
player.sendMessage(Component.text("Argument manquant.", NamedTextColor.RED))
} else {
val target = Bukkit.getPlayer(args[1])
val targetTeam = args[2]
targetTeam.let {
val value = NamedTextColor.NAMES.value(targetTeam.lowercase())
value?.let {
target?.let {
val instance = RunnerDragon.instance
instance.teamManager.getOnColor(value)
?.let { coloredTeam ->
val dragonPlayer = instance.playerManager.getPlayer(it.uniqueId)
dragonPlayer.setTeam(coloredTeam)
dragonPlayer.updateDisplayName()
player.sendMessage(
Component
.text("${target.name} est passé dans l'équipe")
.appendSpace()
.append(coloredTeam.displayName)
)
}
}
} ?: {
player.sendMessage(Component.text("Couleur invalide.", NamedTextColor.RED))
}
}
}
}
}
}
}

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon.event
package xyz.ineanto.dragon.event
import net.md_5.bungee.api.ChatColor
import org.bukkit.Bukkit
@ -7,8 +7,8 @@ import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerPortalEvent
import org.bukkit.event.player.PlayerTeleportEvent
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.GameState
import xyz.ineanto.dragon.RunnerDragon
class DimensionEntranceListener : Listener {
@EventHandler
@ -17,7 +17,7 @@ class DimensionEntranceListener : Listener {
when (event.cause) {
PlayerTeleportEvent.TeleportCause.NETHER_PORTAL -> if (RunnerDragon.NETHER_PORTAL_ENTERED.not()) {
RunnerDragon.NETHER_PORTAL_ENTERED = true
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.GOLD}Le portail du Nether a été franchi pour la première fois !")
Bukkit.broadcastMessage("${RunnerDragon.PREFIX} ${ChatColor.GOLD}Le portail du Nether a été franchi pour la première fois !")
Bukkit.getOnlinePlayers().forEach {
it.playSound(it.location, Sound.ENTITY_VILLAGER_CELEBRATE, 1f, 0.3f)
}
@ -27,7 +27,7 @@ class DimensionEntranceListener : Listener {
event.player.teleport(RunnerDragon.WORLD_END.spawnLocation)
if (RunnerDragon.END_PORTAL_ENTERED.not()) {
RunnerDragon.END_PORTAL_ENTERED = true
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.GOLD}Le portail de l'End a été franchi pour la première fois !")
Bukkit.broadcastMessage("${RunnerDragon.PREFIX} ${ChatColor.GOLD}Le portail de l'End a été franchi pour la première fois !")
Bukkit.getOnlinePlayers().forEach {
it.playSound(it.location, Sound.ENTITY_VILLAGER_CELEBRATE, 1f, 0.3f)
}

View file

@ -1,12 +1,12 @@
package xyz.atnrch.dragon.event
package xyz.ineanto.dragon.event
import org.bukkit.GameMode
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDamageEvent
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.GameState
import xyz.ineanto.dragon.RunnerDragon
class EntityDamageListener : Listener {
@EventHandler

View file

@ -1,10 +1,10 @@
package xyz.atnrch.dragon.event
package xyz.ineanto.dragon.event
import org.bukkit.entity.EntityType
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDeathEvent
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
class EntityDeathListener : Listener {
@EventHandler

View file

@ -1,13 +1,14 @@
package xyz.atnrch.dragon.event
package xyz.ineanto.dragon.event
import org.bukkit.ChatColor
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import org.bukkit.GameMode
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerJoinEvent
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.player.DragonPlayer
import xyz.ineanto.dragon.GameState
import xyz.ineanto.dragon.RunnerDragon
import xyz.ineanto.dragon.player.DragonPlayer
class PlayerJoinListener : Listener {
@EventHandler
@ -25,9 +26,16 @@ class PlayerJoinListener : Listener {
* NickAPI.setUniqueId(player, player.uniqueId)
*/
event.joinMessage = "(${ChatColor.GREEN}+${ChatColor.WHITE}) ${player.name}"
event.joinMessage(
Component.text("(", NamedTextColor.WHITE)
.append(Component.text("+", NamedTextColor.GREEN))
.append(Component.text(")", NamedTextColor.WHITE))
.appendSpace()
.append(Component.text(player.name))
)
if (RunnerDragon.STATE == GameState.WAITING) {
dragonPlayer.sendMessage("Bienvenue !")
dragonPlayer.sendMessage(Component.text("Bienvenue !", NamedTextColor.WHITE))
dragonPlayer.instantiatePlayer()
dragonPlayer.player.gameMode = GameMode.ADVENTURE
dragonPlayer.setTeamItem(true)
@ -35,7 +43,7 @@ class PlayerJoinListener : Listener {
if (dragonPlayer.getTeam() == null) {
dragonPlayer.player.gameMode = GameMode.SPECTATOR
dragonPlayer.sendMessage("Partie rejointe en spectateur.")
dragonPlayer.sendMessage(Component.text("Partie rejointe en spectateur."))
return
}

View file

@ -0,0 +1,22 @@
package xyz.ineanto.dragon.event
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerQuitEvent
class PlayerQuitListener : Listener {
@EventHandler
fun onPlayerJoin(event: PlayerQuitEvent) {
val player = event.player
event.quitMessage(
Component.text("(", NamedTextColor.WHITE)
.append(Component.text("-", NamedTextColor.RED))
.append(Component.text(")", NamedTextColor.WHITE))
.appendSpace()
.append(Component.text(player.name))
)
}
}

View file

@ -1,9 +1,9 @@
package xyz.atnrch.dragon.event
package xyz.ineanto.dragon.event
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerRespawnEvent
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
class PlayerRespawnListener : Listener {
@EventHandler

View file

@ -1,9 +1,9 @@
package xyz.atnrch.dragon.event.end
package xyz.ineanto.dragon.event.end
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.player.PlayerBedEnterEvent
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
import java.time.Instant
class BedInteractListener : Listener {

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon.event.end
package xyz.ineanto.dragon.event.end
import org.bukkit.Material
import org.bukkit.World

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon.event.end
package xyz.ineanto.dragon.event.end
import org.bukkit.Bukkit
import org.bukkit.ChatColor
@ -12,7 +12,7 @@ import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDamageEvent
import org.bukkit.event.entity.EntityDeathEvent
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
import java.util.*
class EnderDragonListener : Listener {
@ -53,8 +53,8 @@ class EnderDragonListener : Listener {
it.playSound(it.location, Sound.ENTITY_ENDER_DRAGON_DEATH, 1f, 0.5f)
}
}
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.GOLD}${ChatColor.BOLD}VICTOIRE !")
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.GOLD}${ChatColor.BOLD}LE DRAGON A ÉTÉ TUÉ PAR L'ÉQUIPE ${team?.displayName}${ChatColor.GOLD}${ChatColor.BOLD}!")
Bukkit.broadcastMessage("${RunnerDragon.PREFIX} ${ChatColor.GOLD}${ChatColor.BOLD}VICTOIRE !")
Bukkit.broadcastMessage("${RunnerDragon.PREFIX} ${ChatColor.GOLD}${ChatColor.BOLD}LE DRAGON A ÉTÉ TUÉ PAR L'ÉQUIPE ${team?.displayName}${ChatColor.GOLD}${ChatColor.BOLD}!")
}
SecondFight.start(dragon)

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon.event.end
package xyz.ineanto.dragon.event.end
import org.bukkit.Bukkit
import org.bukkit.ChatColor
@ -7,16 +7,16 @@ import org.bukkit.World
import org.bukkit.entity.EnderDragon
import org.bukkit.potion.PotionEffect
import org.bukkit.potion.PotionEffectType
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
class SecondFight {
companion object {
fun start(dragon: EnderDragon) {
Bukkit.getScheduler().scheduleSyncDelayedTask(
RunnerDragon.instance, {
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.MAGIC}??ZFjZI19112::!d!zq?")
Bukkit.broadcastMessage("${RunnerDragon.PREFIX} ${ChatColor.MAGIC}??ZFjZI19112::!d!zq?")
for (i in 0..2) {
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.BOLD}${ChatColor.RED}???")
Bukkit.broadcastMessage("${RunnerDragon.PREFIX} ${ChatColor.BOLD}${ChatColor.RED}???")
}
Bukkit.getOnlinePlayers().forEach {
@ -27,7 +27,7 @@ class SecondFight {
}
}
Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.BOLD}${ChatColor.RED}")
Bukkit.broadcastMessage("${RunnerDragon.PREFIX} ${ChatColor.BOLD}${ChatColor.RED}")
dragon.dragonBattle!!.resetCrystals()
dragon.dragonBattle!!.initiateRespawn()

View file

@ -1,6 +1,7 @@
package xyz.atnrch.dragon.event.waiting
package xyz.ineanto.dragon.event.waiting
import org.bukkit.ChatColor
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import org.bukkit.GameMode
import org.bukkit.entity.Player
import org.bukkit.event.EventHandler
@ -11,9 +12,9 @@ import org.bukkit.event.entity.EntityDamageEvent
import org.bukkit.event.entity.FoodLevelChangeEvent
import org.bukkit.event.player.PlayerInteractAtEntityEvent
import org.bukkit.event.player.PlayerInteractEvent
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.inventory.CandleInventory
import xyz.ineanto.dragon.GameState
import xyz.ineanto.dragon.RunnerDragon
import xyz.ineanto.dragon.inventory.CandleInventory
class WaitingListener : Listener {
@EventHandler
@ -52,7 +53,7 @@ class WaitingListener : Listener {
@EventHandler
fun onItemInteract(event: PlayerInteractEvent) {
if (RunnerDragon.STATE == GameState.WAITING && event.player.gameMode == GameMode.ADVENTURE) {
if (event.item?.itemMeta?.displayName == "${ChatColor.GOLD}Choisir une équipe") {
if (event.item?.itemMeta?.displayName() == Component.text("Choisir une équipe", NamedTextColor.GOLD)) {
CandleInventory(event.player)
}
event.isCancelled = true

View file

@ -1,8 +1,8 @@
package xyz.atnrch.dragon.inventory
package xyz.ineanto.dragon.inventory
import org.bukkit.Material
import org.bukkit.entity.Player
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
import xyz.xenondevs.invui.gui.Gui
import xyz.xenondevs.invui.item.Item
import xyz.xenondevs.invui.item.builder.ItemBuilder

View file

@ -0,0 +1,56 @@
package xyz.ineanto.dragon.inventory
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import org.bukkit.entity.Player
import org.bukkit.event.inventory.ClickType
import org.bukkit.event.inventory.InventoryClickEvent
import xyz.ineanto.dragon.RunnerDragon
import xyz.ineanto.dragon.teams.CandleColor
import xyz.ineanto.dragon.teams.Team
import xyz.xenondevs.inventoryaccess.component.AdventureComponentWrapper
import xyz.xenondevs.invui.item.ItemProvider
import xyz.xenondevs.invui.item.builder.ItemBuilder
import xyz.xenondevs.invui.item.impl.AbstractItem
class CandleItem(private val team: Team) : AbstractItem() {
override fun getItemProvider(): ItemProvider {
val material = CandleColor.getFromTeamColor(team.teamColor)
val itemBuilder = ItemBuilder(material)
val nameComponent = Component.text("Rejoindre l'équipe", team.teamColor.namedColor)
itemBuilder.setDisplayName(AdventureComponentWrapper(nameComponent))
team.players.forEach { player ->
val lineComponent = Component.text("-", NamedTextColor.DARK_GRAY)
.appendSpace()
.append(Component.text().append(Component.text(player.player.name, team.teamColor.namedColor)))
itemBuilder.addLoreLines(AdventureComponentWrapper(lineComponent))
}
return itemBuilder
}
override fun handleClick(clickType: ClickType, player: Player, event: InventoryClickEvent) {
RunnerDragon.instance.playerManager.getPlayer(player.uniqueId).let {
if (team.players.size == 2) {
it.sendMessage(Component.text("L'équipe est complète.", NamedTextColor.RED))
} else if (it.getTeam()!! == team) {
it.sendMessage(Component.text("Vous êtes déjà dans cette équipe.", NamedTextColor.RED))
} else {
it.sendMessage(
Component.text()
.content("Vous êtes désormais dans l'équipe:")
.appendSpace()
.append(team.displayName)
.build()
)
it.setTeam(team)
it.updateDisplayName()
}
}
notifyWindows()
event.view.close()
}
}

View file

@ -0,0 +1,116 @@
package xyz.ineanto.dragon.player
import net.kyori.adventure.text.Component
import net.kyori.adventure.text.format.NamedTextColor
import net.kyori.adventure.text.format.TextDecoration
import org.bukkit.Bukkit
import org.bukkit.GameMode
import org.bukkit.Material
import org.bukkit.inventory.ItemStack
import xyz.ineanto.dragon.RunnerDragon
import xyz.ineanto.dragon.teams.Team
import java.util.*
class DragonPlayer(uuid: UUID) {
val player = Bukkit.getPlayer(uuid)!!
fun instantiatePlayer() {
RunnerDragon.instance.worldManager.teleportAtSpawn(player)
updateHeaderFooter()
impulse101()
setTeam(Team.DEFAULT_TEAM)
}
fun updateHeaderFooter() {
val header = RunnerDragon.TITLE
.appendNewline()
.append(Component.text("Met@", NamedTextColor.DARK_PURPLE))
.append(Component.text("Gaming", NamedTextColor.DARK_AQUA))
.appendNewline()
.append(Component.text("Temps:", NamedTextColor.GOLD))
.appendSpace()
.append(Component.text(formatDuration(RunnerDragon.TIME)))
.appendNewline()
.append(Component.text("Vaches tuées:", NamedTextColor.GOLD))
.appendSpace()
.append(Component.text(RunnerDragon.DEAD_COWS))
.appendSpace()
.append(Component.text("(c'est horrible)", NamedTextColor.GRAY, TextDecoration.ITALIC))
.appendNewline()
val footer = Component
.text()
.appendNewline()
.append(Component.text("Plugin:", NamedTextColor.GOLD, TextDecoration.ITALIC))
.appendSpace()
.append(Component.text("Ineanto", NamedTextColor.BLUE))
.appendSpace()
.append(Component.text("/", NamedTextColor.DARK_GRAY))
.appendSpace()
.append(Component.text("Concept:", NamedTextColor.GOLD, TextDecoration.ITALIC))
.appendSpace()
.append(Component.text("Linkxss", NamedTextColor.BLUE))
player.sendPlayerListHeader(header)
player.sendPlayerListFooter(footer)
}
fun sendMessage(component: Component) {
val message = Component
.text()
.append(RunnerDragon.PREFIX)
.appendSpace()
.append(component)
.build()
player.sendMessage(message)
}
fun getTeam(): Team? {
return RunnerDragon.instance.teamManager.getPlayerTeam(player)
}
fun setTeam(team: Team) {
RunnerDragon.instance.teamManager.setPlayerTeam(player, team)
}
fun impulse101() {
player.gameMode = GameMode.SURVIVAL
player.inventory.clear()
player.health = 20.0
player.foodLevel = 20
player.activePotionEffects.clear()
player.walkSpeed = 0.2f
player.flySpeed = 0.1f
player.exp = 0f
player.level = 0
player.totalExperience = 0
}
fun setTeamItem(value: Boolean) {
if (value) {
val item = ItemStack(Material.CANDLE)
val meta = item.itemMeta!!
meta.displayName(Component.text("Choisir une équipe", NamedTextColor.GOLD))
item.itemMeta = meta
player.inventory.setItem(4, item)
} else {
player.inventory.setItem(4, ItemStack(Material.AIR))
}
}
fun updateDisplayName() {
// TODO (Ineanto, 6/26/23): Update nick
/**
* NickAPI.nick(player, "${getTeam()!!.teamColor.chatColor}${player.name}")
* NickAPI.refreshPlayer(player)
*/
}
private fun formatDuration(totalSeconds: Int): String {
val hours = totalSeconds / 3600
val minutes = (totalSeconds % 3600) / 60
val seconds = totalSeconds % 60
return String.format("%02d:%02d:%02d", hours, minutes, seconds)
}
}

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon.player
package xyz.ineanto.dragon.player
import java.util.*

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon.schematic
package xyz.ineanto.dragon.schematic
import com.sk89q.worldedit.EditSession
import com.sk89q.worldedit.WorldEdit

View file

@ -0,0 +1,44 @@
package xyz.ineanto.dragon.scoreboard
import org.bukkit.Bukkit
import org.bukkit.scoreboard.Scoreboard
import org.bukkit.scoreboard.Team
import xyz.ineanto.dragon.RunnerDragon
/**
* TeamScoreboard
*
* This file is part of RunnerDragon.
* @author ineanto
* @since 1.0
*/
class ScoreboardTeams {
private var scoreboard: Scoreboard? = null
fun create() {
RunnerDragon.instance.logger.info("Création des équipes du Scoreboard...")
val scoreboardManager = Bukkit.getScoreboardManager()
scoreboard = scoreboardManager.newScoreboard
RunnerDragon.instance.teamManager.getTeams().forEach {
val team = scoreboard!!.registerNewTeam(it.teamColor.displayName)
team.color(it.teamColor.namedColor)
team.setAllowFriendlyFire(false)
team.setOption(Team.Option.DEATH_MESSAGE_VISIBILITY, Team.OptionStatus.NEVER)
team.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.ALWAYS)
}
}
fun addPlayer() {
}
fun reset() {
RunnerDragon.instance.logger.info("Nettoyage des équipes du Scoreboard...")
scoreboard?.let {
it.teams.forEach { team ->
team.unregister()
}
}
}
}

View file

@ -1,10 +1,10 @@
package xyz.atnrch.dragon.tasks
package xyz.ineanto.dragon.tasks
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import org.bukkit.scheduler.BukkitRunnable
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.GameState
import xyz.ineanto.dragon.RunnerDragon
class GracePeriodTask : BukkitRunnable() {
private var counter: Int = 601
@ -13,10 +13,10 @@ class GracePeriodTask : BukkitRunnable() {
counter--
val base = "${ChatColor.GOLD}Activation du PVP dans"
when (counter) {
600 -> Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} $base ${ChatColor.AQUA}10 ${ChatColor.GOLD}minutes.")
600 -> Bukkit.broadcastMessage("${RunnerDragon.PREFIX} $base ${ChatColor.AQUA}10 ${ChatColor.GOLD}minutes.")
580 -> RunnerDragon.instance.switchState(GameState.GRACE_PERIOD)
300 -> Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} $base ${ChatColor.AQUA}5 ${ChatColor.GOLD}minutes.")
in 1..5, 60 -> Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} $base ${ChatColor.AQUA}$counter ${ChatColor.GOLD}secondes.")
300 -> Bukkit.broadcastMessage("${RunnerDragon.PREFIX} $base ${ChatColor.AQUA}5 ${ChatColor.GOLD}minutes.")
in 1..5, 60 -> Bukkit.broadcastMessage("${RunnerDragon.PREFIX} $base ${ChatColor.AQUA}$counter ${ChatColor.GOLD}secondes.")
0 -> RunnerDragon.instance.switchState(GameState.GAME)
}
}

View file

@ -1,10 +1,10 @@
package xyz.atnrch.dragon.tasks
package xyz.ineanto.dragon.tasks
import org.bukkit.Bukkit
import org.bukkit.ChatColor
import org.bukkit.scheduler.BukkitRunnable
import xyz.atnrch.dragon.GameState
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.GameState
import xyz.ineanto.dragon.RunnerDragon
class StartGameTask : BukkitRunnable() {
private var counter: Int = 15
@ -13,7 +13,7 @@ class StartGameTask : BukkitRunnable() {
counter--
when (counter) {
in 1..5, 10 -> Bukkit.broadcastMessage("${RunnerDragon.TITLE_MSG} ${ChatColor.GOLD}Départ dans ${ChatColor.AQUA}$counter ${ChatColor.GOLD}secondes.")
in 1..5, 10 -> Bukkit.broadcastMessage("${RunnerDragon.PREFIX} ${ChatColor.GOLD}Départ dans ${ChatColor.AQUA}$counter ${ChatColor.GOLD}secondes.")
0 -> RunnerDragon.instance.switchState(GameState.LAUNCH)
}
}

View file

@ -1,7 +1,7 @@
package xyz.atnrch.dragon.tasks
package xyz.ineanto.dragon.tasks
import org.bukkit.scheduler.BukkitRunnable
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
class TimerTask : BukkitRunnable() {
override fun run() {

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon.teams
package xyz.ineanto.dragon.teams
import org.bukkit.Material
@ -15,7 +15,7 @@ enum class CandleColor(val teamColor: TeamColor, val candle: Material) {
private val map = HashMap<TeamColor, Material>()
init {
CandleColor.values().forEach {
entries.forEach {
map[it.teamColor] = it.candle
}
}

View file

@ -1,17 +1,18 @@
package xyz.atnrch.dragon.teams
package xyz.ineanto.dragon.teams
import xyz.atnrch.dragon.RunnerDragon
import xyz.atnrch.dragon.player.DragonPlayer
import net.kyori.adventure.text.Component
import xyz.ineanto.dragon.RunnerDragon
import xyz.ineanto.dragon.player.DragonPlayer
import java.util.*
class Team(
val teamColor: TeamColor,
var displayName: String = "undefined",
var displayName: Component = Component.empty(),
val players: ArrayList<DragonPlayer> = arrayListOf(),
private val deaths: Int = 0
) {
init {
displayName = "${teamColor.chatColor}${teamColor.displayName}"
displayName = Component.text(teamColor.displayName, teamColor.namedColor)
}
companion object {

View file

@ -0,0 +1,14 @@
package xyz.ineanto.dragon.teams
import net.kyori.adventure.text.format.NamedTextColor
import org.bukkit.Color
enum class TeamColor(val namedColor: NamedTextColor, val color: Color, val displayName: String) {
NONE(NamedTextColor.GRAY, Color.GRAY, "Grise"),
BLUE(NamedTextColor.BLUE, Color.BLUE, "Bleue"),
YELLOW(NamedTextColor.YELLOW, Color.YELLOW, "Jaune"),
RED(NamedTextColor.RED, Color.RED, "Rouge"),
GREEN(NamedTextColor.DARK_GREEN, Color.GREEN, "Verte"),
ORANGE(NamedTextColor.GOLD, Color.ORANGE, "Orange"),
PURPLE(NamedTextColor.LIGHT_PURPLE, Color.PURPLE, "Violette")
}

View file

@ -1,23 +1,23 @@
package xyz.atnrch.dragon.teams
package xyz.ineanto.dragon.teams
import org.bukkit.ChatColor
import net.kyori.adventure.text.format.NamedTextColor
import org.bukkit.entity.Player
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
import java.util.*
class TeamManager(
private val instance: RunnerDragon,
private val teams: ArrayList<Team> = arrayListOf(),
private val convert: EnumMap<ChatColor, Team> = EnumMap(ChatColor::class.java),
private val teams: ArrayList<Team> = ArrayList(),
private val convert: HashMap<NamedTextColor, Team> = hashMapOf(),
private val players: HashMap<UUID, Team> = hashMapOf()
) {
fun createTeams(size: Int) {
teams.clear()
for (i in 0..size) {
val color = TeamColor.values()[i]
val color = TeamColor.entries[i]
val team = Team(color)
teams.add(team)
convert[color.chatColor] = team
convert[color.namedColor] = team
}
instance.logger.info("$size teams créés.")
}
@ -28,7 +28,7 @@ class TeamManager(
players.clear()
}
fun getOnColor(color: ChatColor): Team? {
fun getOnColor(color: NamedTextColor): Team? {
return convert[color]
}
@ -42,11 +42,11 @@ class TeamManager(
return players[player.uniqueId]
}
fun getTeams(): ArrayList<Team> {
return teams.drop(1) as ArrayList<Team>
fun getTeams(): List<Team> {
return teams.drop(1)
}
fun getTeamColorsNames(): List<String> {
return getTeams().map { team -> "${team.teamColor.chatColor}${team.teamColor.chatColor.name}" }
return getTeams().map { team -> "${team.teamColor.namedColor}${team.teamColor}" }
}
}

View file

@ -1,4 +1,4 @@
package xyz.atnrch.dragon.world
package xyz.ineanto.dragon.world
import org.apache.commons.io.FileUtils
import org.bukkit.Bukkit

View file

@ -1,9 +1,9 @@
package xyz.atnrch.dragon.world
package xyz.ineanto.dragon.world
import org.bukkit.GameRule
import org.bukkit.World
import org.bukkit.entity.Player
import xyz.atnrch.dragon.RunnerDragon
import xyz.ineanto.dragon.RunnerDragon
class WorldManager(private vararg val worlds: World) {
fun applyRules() {

View file

@ -1,8 +1,14 @@
name: RunnerDragon
main: xyz.atnrch.dragon.RunnerDragon
main: xyz.ineanto.dragon.RunnerDragon
version: 1.0-SNAPSHOT
api-version: "1.20"
depend: [WorldEdit]
depend: [ WorldEdit ]
commands:
rd:
description: "Contrôle RunnerDragon."
permission: "runnerdragon.admin"
description: "Contrôle RunnerDragon."
permissions:
"runnerdragon.admin":
default: op
description: "Permet de contrôler RunnerDragon."