79 lines
2.6 KiB
Kotlin
79 lines
2.6 KiB
Kotlin
package nl.kallestruik.darena.util
|
|
|
|
import nl.kallestruik.darena.arenas.Arena
|
|
import nl.kallestruik.darena.managers.ArenaManager
|
|
import org.bukkit.Bukkit
|
|
import org.bukkit.GameMode
|
|
import org.bukkit.entity.Entity
|
|
import org.bukkit.entity.Player
|
|
import org.bukkit.entity.Projectile
|
|
|
|
object ArenaUtil {
|
|
|
|
fun getPossibleParticipants(): List<Player> {
|
|
Logger.trace(ArenaUtil::class, "getPossibleParticipants()")
|
|
return Bukkit.getOnlinePlayers().filter { it.gameMode == GameMode.SURVIVAL }
|
|
}
|
|
|
|
fun getPossibleSpectators(): List<Player> {
|
|
Logger.trace(ArenaUtil::class, "getPossibleSpectators()")
|
|
return Bukkit.getOnlinePlayers().filter { it.gameMode == GameMode.SPECTATOR }
|
|
}
|
|
|
|
fun clearPlayer(player: Player) {
|
|
player.inventory.close()
|
|
player.inventory.clear()
|
|
|
|
player.exp = 0F
|
|
player.level = 0
|
|
player.health = 20.0
|
|
player.saturation = 0F
|
|
player.foodLevel = 20
|
|
player.fireTicks = 0
|
|
player.fallDistance = 0F
|
|
for (effect in player.activePotionEffects) {
|
|
player.removePotionEffect(effect.type)
|
|
}
|
|
}
|
|
|
|
fun resolveDamager(damager: Entity): Player? {
|
|
if (damager is Player)
|
|
return damager
|
|
|
|
if (damager is Projectile && damager.shooter is Player)
|
|
return damager.shooter as Player
|
|
|
|
return null
|
|
}
|
|
|
|
fun formatTime(timeLeft: Int): String {
|
|
val minutes = (timeLeft / 60).toString().padStart(2, '0')
|
|
val seconds = (timeLeft % 60).toString().padStart(2, '0')
|
|
return "$minutes:$seconds"
|
|
}
|
|
|
|
fun formatTimeMillis(timeLeft: Long): String {
|
|
val minutes = (timeLeft / 1000 / 60).toString().padStart(2, '0')
|
|
val seconds = ((timeLeft / 1000) % 60).toString().padStart(2, '0')
|
|
val millis = (timeLeft % 1000).toString().padStart(3, '0')
|
|
return "$minutes:$seconds.$millis"
|
|
}
|
|
|
|
fun finishPlayer(player: Player, arena: Arena, arenaManager: ArenaManager) {
|
|
Logger.trace(ArenaManager::class, "finishPlayer(player: $player, arena: ${arena.config.name}, arenaManager: $arenaManager)")
|
|
arena.makeSpectator(player)
|
|
arena.session!!.playersFinished++
|
|
if (arena.config.endConditions.playersFinished != -1
|
|
&& arena.session!!.playersFinished >= arena.config.endConditions.playersFinished
|
|
) {
|
|
arenaManager.end()
|
|
return
|
|
}
|
|
|
|
if (arenaManager.currentArena!!.session!!.participants.size <= arenaManager.currentArena!!.config.endConditions.playersLeft) {
|
|
arenaManager.end()
|
|
return
|
|
}
|
|
}
|
|
}
|