Format code

This commit is contained in:
2026-05-16 23:08:09 +02:00
parent 81dd8045f2
commit d110df924e
562 changed files with 11025 additions and 10059 deletions
@@ -56,7 +56,8 @@ class TNTLeague : JavaPlugin() {
}
}
fun String.colorByTeam(team: TNTLeagueTeam?) = when (team) {
null -> "§7${this}"
else -> "§${team.color}${this}"
}
fun String.colorByTeam(team: TNTLeagueTeam?) =
when (team) {
null -> "§7${this}"
else -> "§${team.color}${this}"
}
@@ -17,42 +17,42 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
PREFIX=§eTNT§7League§8»
PLAIN_STRING={0}
JOIN=§e{0} §7joined the game!
JOIN_TEAM={0} §7joined the {1} §7team!
QUIT={0} §7left the game!
QUIT_TEAM={0} §7left the {1} §7team!
BLUE=§3Blue
RED=§cRed
SHUTDOWN=§7The server stops in §e{0} §7seconds!
TEAM_WIN=§aTeam {0} §awins!
NOT_ENOUGH_COINS=§cYou don't have enough coins to buy this item!
GAME_STARTING=§aThe game starts in §e{0} §aseconds!
GAME_START=
GAME_STARTED=§aThe game has started!
TIME_REMAINING=§e{0} §7minutes remaining!
GAME_ENDED=§cThe game has ended!
DRAW=§cThe game ended in a draw!
DEALER=Shopkeeper
DEALER_ITEM={0} {1}
DEALER_PRICE=
SCOREBOARD_TARGET=
SCOREBOARD_TIME=§7Time§8: §e{0}§8:§e{1}
SCOREBOARD_COINS=§7Coins§8: §e{0}
SCOREBOARD_TEAM=§7Team {0}§8: §e{1}
READY=§aReady
NOT_READY=§cNot ready
IS_READY=§aTeam {0} §ais ready!
IS_NOT_READY=§cTeam {0} §cis not ready!
INVITED={0} §ainvited you to join team {1}§7! *Click*
INVITED_HOVER=§7Click to join team {0}§7!
INVITED_PLAYER=§aInvited §e{0} §ato join your team!
PREFIX = §eTNT§7League§8»
PLAIN_STRING = {0}
JOIN = §e{0} §7joined the game!
JOIN_TEAM = {0} §7joined the {1} §7team!
QUIT = {0} §7left the game!
QUIT_TEAM = {0} §7left the {1} §7team!
BLUE = §3Blue
RED = §cRed
SHUTDOWN = §7The server stops in §e{0} §7seconds!
TEAM_WIN = §aTeam {0} §awins!
NOT_ENOUGH_COINS = §cYou don't have enough coins to buy this item!
GAME_STARTING = §aThe game starts in §e{0} §aseconds!
GAME_START =
GAME_STARTED = §aThe game has started!
TIME_REMAINING = §e{0} §7minutes remaining!
GAME_ENDED = §cThe game has ended!
DRAW = §cThe game ended in a draw!
DEALER = Shopkeeper
DEALER_ITEM = {0} {1}
DEALER_PRICE =
SCOREBOARD_TARGET =
SCOREBOARD_TIME = §7Time§8: §e{0}§8:§e{1}
SCOREBOARD_COINS = §7Coins§8: §e{0}
SCOREBOARD_TEAM = §7Team {0}§8: §e{1}
READY = §aReady
NOT_READY = §cNot ready
IS_READY = §aTeam {0} §ais ready!
IS_NOT_READY = §cTeam {0} §cis not ready!
INVITED = {0} §ainvited you to join team {1}§7! *Click*
INVITED_HOVER = §7Click to join team {0}§7!
INVITED_PLAYER = §aInvited §e{0} §ato join your team!
DEALER_REDSTONE=§eRedstone
DEALER_BLOCKS=§eBlocks
DEALER_TOOLS=§eTools
DEALER_ANGLES=§eAngle Blocks
DEALER_REDSTONE = §eRedstone
DEALER_BLOCKS = §eBlocks
DEALER_TOOLS = §eTools
DEALER_ANGLES = §eAngle Blocks
PARTICIPANT_CHAT={0} {1}§8» §7{2}
SPECTATOR_CHAT=§7{0}§8» §7{1}
PARTICIPANT_CHAT = {0} {1}§8» §7{2}
SPECTATOR_CHAT = §7{0}§8» §7{1}
@@ -16,33 +16,33 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
JOIN=§e{0} §7ist dem Spiel beigetreten!
JOIN_TEAM={0} §7ist Team {1} §7begetreten!
QUIT={0} §7hat das Spiel verlassen!
QUIT_TEAM={0} §7hat Team {1} §7verlassen!
BLUE=§3Blau
RED=§cRot
SHUTDOWN=§7Der Server fährt in §e{0} §7Sekunden herunter!
TEAM_WIN=§aTeam {0} §agewinnt!
NOT_ENOUGH_COINS=§cDu hast nicht genug Coins, um dir das zu kaufen!
GAME_STARTING=§aDas Spiel beginnt in §e{0} §aSekunden!
GAME_STARTED=§aDas Spiel beginnt!
TIME_REMAINING=§7noch §e{0} §7Minuten!
GAME_ENDED=§cDas Spiel ist vorbei!
DRAW=§cKeiner hat gewonnen!
DEALER=Händler
DEALER_PRICE=§7Kosten: §e{0} Coins
JOIN = §e{0} §7ist dem Spiel beigetreten!
JOIN_TEAM = {0} §7ist Team {1} §7begetreten!
QUIT = {0} §7hat das Spiel verlassen!
QUIT_TEAM = {0} §7hat Team {1} §7verlassen!
BLUE = §3Blau
RED = §cRot
SHUTDOWN = §7Der Server fährt in §e{0} §7Sekunden herunter!
TEAM_WIN = §aTeam {0} §agewinnt!
NOT_ENOUGH_COINS = §cDu hast nicht genug Coins, um dir das zu kaufen!
GAME_STARTING = §aDas Spiel beginnt in §e{0} §aSekunden!
GAME_STARTED = §aDas Spiel beginnt!
TIME_REMAINING = §7noch §e{0} §7Minuten!
GAME_ENDED = §cDas Spiel ist vorbei!
DRAW = §cKeiner hat gewonnen!
DEALER = Händler
DEALER_PRICE = §7Kosten: §e{0} Coins
SCOREBOARD_TARGET=§7Ziel§8: {0}
SCOREBOARD_TIME=§7Zeit§8: §e{0}§8:§e{1}
READY=§aBereit
NOT_READY=§cNicht bereit
IS_READY=§aTeam {0} §aist bereit!
IS_NOT_READY=§cTeam {0} §cist nicht bereit!
INVITED={0} §ahat dich in Team {1} §aeingeladen! *Klick*
INVITED_HOVER=§7Team {0} §7beitreten!
INVITED_PLAYER={0} §awurde eingeladen!
SCOREBOARD_TARGET = §7Ziel§8: {0}
SCOREBOARD_TIME = §7Zeit§8: §e{0}§8:§e{1}
READY = §aBereit
NOT_READY = §cNicht bereit
IS_READY = §aTeam {0} §aist bereit!
IS_NOT_READY = §cTeam {0} §cist nicht bereit!
INVITED = {0} §ahat dich in Team {1} §aeingeladen! *Klick*
INVITED_HOVER = §7Team {0} §7beitreten!
INVITED_PLAYER = {0} §awurde eingeladen!
DEALER_BLOCKS=§eBlöcke
DEALER_TOOLS=§eWerkzeuge
DEALER_ANGLES=§eAuflageblöcke
DEALER_BLOCKS = §eBlöcke
DEALER_TOOLS = §eWerkzeuge
DEALER_ANGLES = §eAuflageblöcke
@@ -23,13 +23,14 @@ import de.steamwar.command.SWCommand
import de.steamwar.tntleague.game.TNTLeagueGame
import org.bukkit.entity.Player
object AcceptCommand: SWCommand("accept") {
object AcceptCommand : SWCommand("accept") {
@Register
fun acceptInvite(sender: Player, @Validator("isLeader") target: Player) {
if (TNTLeagueGame.state != TNTLeagueGame.GameState.LOBBY) return
val team = TNTLeagueGame.getTeam(target) ?: return
val team = TNTLeagueGame.getTeam(target)
?: return
if (team.leader != target) return
if (sender !in team.invites) return
@@ -27,7 +27,7 @@ import de.steamwar.tntleague.game.TNTLeagueGame
import net.md_5.bungee.api.chat.ClickEvent
import org.bukkit.entity.Player
object InviteCommand: SWCommand("invite") {
object InviteCommand : SWCommand("invite") {
@Register
fun invitePlayer(@Validator("isLeader") sender: Player, target: Player) {
@@ -39,14 +39,16 @@ object InviteCommand: SWCommand("invite") {
team.invites.add(target)
message
.send("INVITED", target, message.parse("INVITED_HOVER", target, team.name),
ClickEvent(ClickEvent.Action.RUN_COMMAND, "/accept " + sender.name), sender.name.colorByTeam(team), team.name)
.send(
"INVITED", target, message.parse("INVITED_HOVER", target, team.name),
ClickEvent(ClickEvent.Action.RUN_COMMAND, "/accept " + sender.name), sender.name.colorByTeam(team), team.name
)
message.send("INVITED_PLAYER", sender, target.name)
}
@Validator("isLeader", local = false)
fun isLeader(): TypeValidator<Player> {
return TypeValidator<Player> { _, player, _ -> TNTLeagueGame.getTeam(player)?.leader == player}
return TypeValidator<Player> { _, player, _ -> TNTLeagueGame.getTeam(player)?.leader == player }
}
}
@@ -23,8 +23,10 @@ import de.steamwar.command.SWCommand
import de.steamwar.tntleague.game.TNTLeagueGame
import org.bukkit.entity.Player
object LeaveCommand: SWCommand("leave", "l") {
object LeaveCommand : SWCommand("leave", "l") {
@Register
fun leave(player: Player) = TNTLeagueGame.getTeam(player)?.remove(player) ?: Unit
fun leave(player: Player) =
TNTLeagueGame.getTeam(player)?.remove(player)
?: Unit
}
@@ -23,7 +23,7 @@ import de.steamwar.command.SWCommand
import de.steamwar.tntleague.game.TNTLeagueGame
import org.bukkit.entity.Player
object ReadyCommand: SWCommand("ready") {
object ReadyCommand : SWCommand("ready") {
@Register
fun invitePlayer(@Validator("isLeader") sender: Player) {
@@ -23,14 +23,15 @@ import de.steamwar.command.SWCommand
import de.steamwar.tntleague.game.TNTLeagueGame
import org.bukkit.entity.Player
object RemoveCommand: SWCommand("remove") {
object RemoveCommand : SWCommand("remove") {
@Register
fun removePlayer(@Validator("isLeader") sender: Player, target: Player) {
if (TNTLeagueGame.state != TNTLeagueGame.GameState.LOBBY) return
if (sender == target) return
val team = TNTLeagueGame.getTeam(sender) ?: return
val team = TNTLeagueGame.getTeam(sender)
?: return
if (team.leader != sender) return
if (target !in team.members) return
@@ -53,7 +53,8 @@ data class TNTLeagueConfig(
init {
if (eventFightId != null && eventFightId > 0) {
eventFight = EventFight.byId(eventFightId) ?: throw IllegalArgumentException("EventFight with ID $eventFightId not found")
eventFight = EventFight.byId(eventFightId)
?: throw IllegalArgumentException("EventFight with ID $eventFightId not found")
event = Event.byId(eventFight.eventID)!!
@@ -80,14 +81,20 @@ data class TNTLeagueConfig(
Price(
config.getInt("$it.amount"),
config.getInt("$it.price"),
config.getString("$it.category")?.let { s -> categoryFromString[s] } ?: ItemCategory.REDSTONE,
config.getString("$it.category")?.let { s -> categoryFromString[s] }
?: ItemCategory.REDSTONE,
config.getInt("$it.pinned", -1),
config.getStringList("$it.extras").map { s -> extrasFromString[s]!! }.toSet()
)
}.mapKeys { Material.getMaterial(it.key) ?: Material.BARRIER }
}.mapKeys {
Material.getMaterial(it.key)
?: Material.BARRIER
}
}
fun isEvent() = (config.eventFightId ?: 0) > 0
fun isEvent() =
(config.eventFightId
?: 0) > 0
}
data class Price(
@@ -76,7 +76,8 @@ object TNTLeagueWorldConfig {
}
fun ConfigurationSection.getWorldLocation(s: String, default: Location? = null): Location {
val section = getConfigurationSection(s) ?: return default!!
val section = getConfigurationSection(s)
?: return default!!
val x = section.getDouble("x")
val y = section.getDouble("y")
@@ -53,15 +53,16 @@ data class TeamWorldConfig(
return TeamWorldConfig(spawnLocation, dealerSpawn, itemSpawn, Area(targetPos1, targetPos2))
}
private fun spawnDealer(loc: Location) = world.spawn(loc, WanderingTrader::class.java)
.apply {
customName(Component.text("Shop"))
isCustomNameVisible = false
isInvulnerable = true
isSilent = true
isCollidable = false
isAware = false
setAI(false)
}
private fun spawnDealer(loc: Location) =
world.spawn(loc, WanderingTrader::class.java)
.apply {
customName(Component.text("Shop"))
isCustomNameVisible = false
isInvulnerable = true
isSilent = true
isCollidable = false
isAware = false
setAI(false)
}
}
}
@@ -21,4 +21,4 @@ package de.steamwar.tntleague.events
import org.bukkit.event.Listener
object DummyListener: Listener
object DummyListener : Listener
@@ -33,7 +33,7 @@ import org.bukkit.event.entity.PlayerDeathEvent
import org.bukkit.event.inventory.CraftItemEvent
import org.bukkit.event.player.*
object GlobalListener: Listener {
object GlobalListener : Listener {
@EventHandler(priority = EventPriority.LOW)
fun onPlayerJoin(e: PlayerJoinEvent) {
@@ -77,8 +77,10 @@ object IngameListener : Listener {
@EventHandler
fun onPickupCoins(e: PlayerAttemptPickupItemEvent) {
if (e.item.itemStack.persistentDataContainer.has(DealerInventory.coinKey)) {
val numberOfCoins = e.item.itemStack.persistentDataContainer[DealerInventory.coinKey, PersistentDataType.INTEGER] ?: 0
TNTLeagueGame.getTeam(e.player)?.coins = (e.item.itemStack.amount * numberOfCoins) + (TNTLeagueGame.getTeam(e.player)?.coins ?: 0)
val numberOfCoins = e.item.itemStack.persistentDataContainer[DealerInventory.coinKey, PersistentDataType.INTEGER]
?: 0
TNTLeagueGame.getTeam(e.player)?.coins = (e.item.itemStack.amount * numberOfCoins) + (TNTLeagueGame.getTeam(e.player)?.coins
?: 0)
e.item.itemStack.amount = 0
e.isCancelled = true
@@ -31,7 +31,7 @@ import org.bukkit.event.player.PlayerInteractEntityEvent
import org.bukkit.event.player.PlayerInteractEvent
import org.bukkit.event.player.PlayerJoinEvent
object LobbyListener: Listener {
object LobbyListener : Listener {
@EventHandler
fun onPlayerJoin(e: PlayerJoinEvent) {
@@ -70,7 +70,7 @@ object LobbyListener: Listener {
fun onEntityInteract(e: PlayerInteractEntityEvent) {
if (e.player.gameMode == GameMode.SPECTATOR) return
if(e.rightClicked.type == EntityType.WANDERING_TRADER) {
if (e.rightClicked.type == EntityType.WANDERING_TRADER) {
e.isCancelled = true
}
}
@@ -107,12 +107,13 @@ object TNTLeagueGame {
timerTask = plugin.server.scheduler.runTaskTimer(plugin, bukkit {
gameTimeRemaining--
if (gameTimeRemaining == 0) {
if (blueTeam.damagedBlocks > redTeam.damagedBlocks)
if (blueTeam.damagedBlocks > redTeam.damagedBlocks) {
win(blueTeam, WinReason.TIMEOUT)
else if (redTeam.damagedBlocks > blueTeam.damagedBlocks)
} else if (redTeam.damagedBlocks > blueTeam.damagedBlocks) {
win(redTeam, WinReason.TIMEOUT)
else
} else {
draw(WinReason.TIMEOUT)
}
return@bukkit
}
@@ -123,10 +124,11 @@ object TNTLeagueGame {
}, 20, 20)
}
private fun bukkit(f: () -> Unit): () -> Unit = f
private fun bukkit(f: () -> Unit): () -> Unit =
f
private fun end() {
if(state != GameState.RUNNING) return
if (state != GameState.RUNNING) return
state = GameState.END
plugin.server.onlinePlayers.forEach {
@@ -154,21 +156,26 @@ object TNTLeagueGame {
updateFightinfo()
}
private fun spawnItems(loc: Location, item: ItemStack) = plugin.server.worlds.first().dropItem(loc, item)
private fun spawnItems(loc: Location, item: ItemStack) =
plugin.server.worlds.first().dropItem(loc, item)
fun getTeam(player: Player) = if (player in blueTeam.members) blueTeam else if (player in redTeam.members) redTeam else null
fun getTeam(player: Player) =
if (player in blueTeam.members) blueTeam else if (player in redTeam.members) redTeam else null
fun getFreeTeam(player: Player) = if (TNTLeagueConfig.isEvent()) getEventFreeTeam(player) else getNormalFreeTeam(player)
fun getFreeTeam(player: Player) =
if (TNTLeagueConfig.isEvent()) getEventFreeTeam(player) else getNormalFreeTeam(player)
private fun getNormalFreeTeam(player: Player) = if (blueTeam.leader == null && (TNTLeagueConfig.config.blueLeader == null || player.uniqueId == TNTLeagueConfig.config.blueLeader)) blueTeam
private fun getNormalFreeTeam(player: Player) =
if (blueTeam.leader == null && (TNTLeagueConfig.config.blueLeader == null || player.uniqueId == TNTLeagueConfig.config.blueLeader)) blueTeam
else if (redTeam.leader == null && TNTLeagueConfig.config.redLeader == null || player.uniqueId == TNTLeagueConfig.config.redLeader) redTeam
else null
private fun getEventFreeTeam(player: Player) = SteamwarUser.get(player.uniqueId)!!.let { user ->
if (user.team == TNTLeagueConfig.config.eventTeamBlue.teamId && blueTeam.members.size < TNTLeagueConfig.config.event.maximumTeamMembers) blueTeam
else if (user.team == TNTLeagueConfig.config.eventTeamRed.teamId && redTeam.members.size < TNTLeagueConfig.config.event.maximumTeamMembers) redTeam
else null
}
private fun getEventFreeTeam(player: Player) =
SteamwarUser.get(player.uniqueId)!!.let { user ->
if (user.team == TNTLeagueConfig.config.eventTeamBlue.teamId && blueTeam.members.size < TNTLeagueConfig.config.event.maximumTeamMembers) blueTeam
else if (user.team == TNTLeagueConfig.config.eventTeamRed.teamId && redTeam.members.size < TNTLeagueConfig.config.event.maximumTeamMembers) redTeam
else null
}
fun checkStart() {
if (blueTeam.isReady && redTeam.isReady) {
@@ -249,7 +256,8 @@ object TNTLeagueGame {
}
fun updateFightinfo() {
NetworkSender.send(FightInfoPacket(
NetworkSender.send(
FightInfoPacket(
plugin.server.worlds.first().name,
"TNTLeague",
"",
@@ -257,13 +265,15 @@ object TNTLeagueGame {
redTeam.name.message.colorByTeam(redTeam),
state.lobbyName,
TNTLeagueConfig.config.gameTime - gameTimeRemaining,
blueTeam.leader?.let { SteamwarUser.get(it.uniqueId)!!.getId() } ?: 0,
redTeam.leader?.let { SteamwarUser.get(it.uniqueId)!!.getId() } ?: 0,
blueTeam.leader?.let { SteamwarUser.get(it.uniqueId)!!.getId() }
?: 0,
redTeam.leader?.let { SteamwarUser.get(it.uniqueId)!!.getId() }
?: 0,
0,
0,
blueTeam.members.map { SteamwarUser.get(it.uniqueId)!!.getId() },
redTeam.members.map { SteamwarUser.get(it.uniqueId)!!.getId() },
plugin.server.onlinePlayers.filter {! blueTeam.members.contains(it) && !redTeam.members.contains(it) }.map { SteamwarUser.get(it.uniqueId)!!.getId() }
plugin.server.onlinePlayers.filter { !blueTeam.members.contains(it) && !redTeam.members.contains(it) }.map { SteamwarUser.get(it.uniqueId)!!.getId() }
))
}
@@ -114,25 +114,27 @@ data class TNTLeagueTeam(val config: TeamConfig) {
return true
}
fun readyItem() = if (isReady) {
ItemStack.of(Material.LIME_DYE).apply {
itemMeta = itemMeta.apply {
displayName(Component.text(message.parse("READY", leader!!)))
fun readyItem() =
if (isReady) {
ItemStack.of(Material.LIME_DYE).apply {
itemMeta = itemMeta.apply {
displayName(Component.text(message.parse("READY", leader!!)))
}
}
} else {
ItemStack.of(Material.RED_DYE).apply {
itemMeta = itemMeta.apply {
displayName(Component.text(message.parse("NOT_READY", leader!!)))
}
}
}
} else {
ItemStack.of(Material.RED_DYE).apply {
itemMeta = itemMeta.apply {
displayName(Component.text(message.parse("NOT_READY", leader!!)))
}
}
}
fun start() = members.forEach {
with(it) {
gameMode = GameMode.SURVIVAL
fun start() =
members.forEach {
with(it) {
gameMode = GameMode.SURVIVAL
}
}
}
fun leave(player: Player) {
members.remove(player)
@@ -27,8 +27,9 @@ import de.steamwar.tntleague.inventory.DealerInventory.Companion.itemsByCategory
import de.steamwar.tntleague.message
import org.bukkit.entity.Player
class CategoryInventory(player: Player, category: TNTLeagueConfig.ItemCategory): KotlinInventory(player) {
override fun createInventory() = SWInventory(player, 9 * 6, message.parse("DEALER", player))
class CategoryInventory(player: Player, category: TNTLeagueConfig.ItemCategory) : KotlinInventory(player) {
override fun createInventory() =
SWInventory(player, 9 * 6, message.parse("DEALER", player))
init {
itemsByCategory[category]!!.forEachIndexed { index, item ->
@@ -38,7 +38,7 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.persistence.PersistentDataType
import java.util.*
class DealerInventory(player: Player): KotlinInventory(player) {
class DealerInventory(player: Player) : KotlinInventory(player) {
init {
this[10] = SWItem(Material.REDSTONE_BLOCK, message.parse("DEALER_REDSTONE", player)).itemStack to openCategory(TNTLeagueConfig.ItemCategory.REDSTONE)
@@ -51,9 +51,11 @@ class DealerInventory(player: Player): KotlinInventory(player) {
}
}
private fun openCategory(cat: TNTLeagueConfig.ItemCategory): (e: InventoryClickEvent) -> Unit = { CategoryInventory(player, cat).open() }
private fun openCategory(cat: TNTLeagueConfig.ItemCategory): (e: InventoryClickEvent) -> Unit =
{ CategoryInventory(player, cat).open() }
override fun createInventory() = SWInventory(player, 9 * 6, message.parse("DEALER", player))
override fun createInventory() =
SWInventory(player, 9 * 6, message.parse("DEALER", player))
companion object {
private val priceKey = NamespacedKey(plugin, "price")
@@ -91,7 +93,8 @@ class DealerInventory(player: Player): KotlinInventory(player) {
val price = item.second.price * if (e.isShiftClick) 5 else 1
val amount = item.second.amount * if (e.isShiftClick) 5 else 1
val team = TNTLeagueGame.getTeam(player) ?: return
val team = TNTLeagueGame.getTeam(player)
?: return
if (team.coins < price) {
message.send("NOT_ENOUGH_COINS", player)
@@ -109,9 +112,12 @@ class DealerInventory(player: Player): KotlinInventory(player) {
prices.map { (material, price) ->
ItemStack(material).apply {
itemMeta = itemMeta.apply {
displayName(Component.text(material.name.lowercase().replace("_", " ")
.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() })
.color(NamedTextColor.GRAY).appendSpace().append(Component.text(price.amount).color(NamedTextColor.YELLOW)))
displayName(
Component.text(
material.name.lowercase().replace("_", " ")
.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() })
.color(NamedTextColor.GRAY).appendSpace().append(Component.text(price.amount).color(NamedTextColor.YELLOW))
)
amount = price.amount
@@ -26,7 +26,7 @@ import de.steamwar.tntleague.game.TNTLeagueTeam
import de.steamwar.tntleague.message
import org.bukkit.entity.Player
data class TNTLeagueScoreboard(val p: Player): ScoreboardCallback {
data class TNTLeagueScoreboard(val p: Player) : ScoreboardCallback {
override fun getData(): HashMap<String, Int> {
val lines = mutableListOf<String>()
@@ -40,8 +40,12 @@ data class TNTLeagueScoreboard(val p: Player): ScoreboardCallback {
when (val team = TNTLeagueGame.getTeam(p)) {
is TNTLeagueTeam -> lines.add(message.parse("SCOREBOARD_COINS", p, team.coins))
else -> lines.add(message.parse("SCOREBOARD_COINS", p,
"§${TNTLeagueGame.blueTeam.color}${TNTLeagueGame.blueTeam.coins}§8:§${TNTLeagueGame.redTeam.color}${TNTLeagueGame.redTeam.coins}"))
else -> lines.add(
message.parse(
"SCOREBOARD_COINS", p,
"§${TNTLeagueGame.blueTeam.color}${TNTLeagueGame.blueTeam.coins}§8:§${TNTLeagueGame.redTeam.color}${TNTLeagueGame.redTeam.coins}"
)
)
}
lines.add("§3")
@@ -59,5 +63,6 @@ data class TNTLeagueScoreboard(val p: Player): ScoreboardCallback {
.foldIndexed(HashMap()) { index, acc, component -> acc.also { it[component] = index } }
}
override fun getTitle(): String = message.parse("PREFIX", p).dropLast(1)
override fun getTitle(): String =
message.parse("PREFIX", p).dropLast(1)
}