forked from SteamWar/SteamWar
Format code
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user