1
0
Fork 0

Refactor some Role-related things

This commit is contained in:
Moritz Ruth 2020-06-06 23:36:20 +02:00
parent aeaa3fcc7e
commit 2927b75e8d
No known key found for this signature in database
GPG key ID: AFD57E23E753841B
20 changed files with 103 additions and 111 deletions

View file

@ -1,9 +1,9 @@
package de.moritzruth.spigot_ttt.game package de.moritzruth.spigot_ttt.game
import de.moritzruth.spigot_ttt.game.corpses.CorpseListener
import de.moritzruth.spigot_ttt.game.corpses.CorpseManager
import de.moritzruth.spigot_ttt.game.players.PlayerManager import de.moritzruth.spigot_ttt.game.players.PlayerManager
import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.game.players.corpses.CorpseListener
import de.moritzruth.spigot_ttt.game.players.corpses.CorpseManager
import de.moritzruth.spigot_ttt.items.ItemManager import de.moritzruth.spigot_ttt.items.ItemManager
import de.moritzruth.spigot_ttt.items.ItemSpawner import de.moritzruth.spigot_ttt.items.ItemSpawner
import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.plugin
@ -26,7 +26,7 @@ object GameManager {
CorpseListener.register() CorpseListener.register()
} }
fun letRoleWin(role: TTTPlayer.Role?) { fun letRoleWin(role: Role?) {
ensurePhase(GamePhase.COMBAT) ensurePhase(GamePhase.COMBAT)
GameMessenger.win(role) GameMessenger.win(role)
phase = GamePhase.OVER phase = GamePhase.OVER
@ -101,8 +101,8 @@ object GameManager {
GameMessenger.combatPhaseStarted() GameMessenger.combatPhaseStarted()
Timers.startCombatPhaseTimer(plugin.config.getInt("duration.combat", 480)) { Timers.startCombatPhaseTimer(plugin.config.getInt("duration.combat", 480)) {
if (PlayerManager.stillLivingRoles.contains(TTTPlayer.Role.INNOCENT)) { if (PlayerManager.stillLivingRoles.contains(Role.INNOCENT)) {
letRoleWin(TTTPlayer.Role.INNOCENT) letRoleWin(Role.INNOCENT)
} else { } else {
letRoleWin(null) letRoleWin(null)
} }

View file

@ -1,7 +1,7 @@
package de.moritzruth.spigot_ttt.game package de.moritzruth.spigot_ttt.game
import de.moritzruth.spigot_ttt.game.players.PlayerManager import de.moritzruth.spigot_ttt.game.players.PlayerManager
import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.utils.secondsToTicks import de.moritzruth.spigot_ttt.utils.secondsToTicks
import org.bukkit.ChatColor import org.bukkit.ChatColor
@ -35,7 +35,7 @@ object GameMessenger {
} }
} }
fun win(winnerRole: TTTPlayer.Role?) { fun win(winnerRole: Role?) {
val winner = when(winnerRole) { val winner = when(winnerRole) {
null -> { null -> {
plugin.broadcast("Niemand hat gewonnen") plugin.broadcast("Niemand hat gewonnen")
@ -45,14 +45,14 @@ object GameMessenger {
return return
} }
TTTPlayer.Role.JACKAL, TTTPlayer.Role.SIDEKICK -> "Der ${TTTPlayer.Role.JACKAL.chatColor}Jackal" Role.JACKAL, Role.SIDEKICK -> "Der ${Role.JACKAL.chatColor}Jackal"
TTTPlayer.Role.TRAITOR -> "Die ${TTTPlayer.Role.TRAITOR.chatColor}Traitor" Role.TRAITOR -> "Die ${Role.TRAITOR.chatColor}Traitor"
TTTPlayer.Role.INNOCENT, TTTPlayer.Role.DETECTIVE -> "Die ${TTTPlayer.Role.INNOCENT.chatColor}Innocents" Role.INNOCENT, Role.DETECTIVE -> "Die ${Role.INNOCENT.chatColor}Innocents"
} }
val winnerMessage = when(winnerRole) { val winnerMessage = when(winnerRole) {
TTTPlayer.Role.JACKAL, TTTPlayer.Role.SIDEKICK -> "hat gewonnen" Role.JACKAL, Role.SIDEKICK -> "hat gewonnen"
TTTPlayer.Role.TRAITOR, TTTPlayer.Role.INNOCENT, TTTPlayer.Role.DETECTIVE -> "haben gewonnen" Role.TRAITOR, Role.INNOCENT, Role.DETECTIVE -> "haben gewonnen"
} }
plugin.broadcast("${ChatColor.GOLD}$winner ${ChatColor.GOLD}${winnerMessage}") plugin.broadcast("${ChatColor.GOLD}$winner ${ChatColor.GOLD}${winnerMessage}")
@ -69,13 +69,13 @@ object GameMessenger {
plugin.broadcast("${ChatColor.RED}Das Spiel wurde abgebrochen.") plugin.broadcast("${ChatColor.RED}Das Spiel wurde abgebrochen.")
} }
fun corpseIdentified(by: String, who: String, role: TTTPlayer.Role) { fun corpseIdentified(by: String, who: String, role: Role) {
plugin.broadcast("$by ${ChatColor.GOLD}hat die Leiche von ${ChatColor.WHITE}$who ${ChatColor.GOLD}identifiziert. Er/Sie war ${role.coloredDisplayName}") plugin.broadcast("$by ${ChatColor.GOLD}hat die Leiche von ${ChatColor.WHITE}$who ${ChatColor.GOLD}identifiziert. Er/Sie war ${role.coloredDisplayName}")
} }
fun roles() { fun roles() {
val playersByRole = PlayerManager.getPlayersByRole() val playersByRole = PlayerManager.getPlayersByRole()
val roles = playersByRole.keys.sortedBy(TTTPlayer.Role::position) val roles = playersByRole.keys.sortedBy(Role::position)
for (role in roles) { for (role in roles) {
val entries = playersByRole.getValue(role).map { tttPlayer -> val entries = playersByRole.getValue(role).map { tttPlayer ->

View file

@ -1,7 +1,7 @@
package de.moritzruth.spigot_ttt.game.players.corpses package de.moritzruth.spigot_ttt.game.corpses
import de.moritzruth.spigot_ttt.game.players.PlayerManager import de.moritzruth.spigot_ttt.game.players.PlayerManager
import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.plugin
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
@ -37,7 +37,7 @@ object CorpseListener: Listener {
if(Instant.now().toEpochMilli() - tttCorpse.timestamp.toEpochMilli() < 200) return if(Instant.now().toEpochMilli() - tttCorpse.timestamp.toEpochMilli() < 200) return
event.clicker.openInventory(tttCorpse.inventory) event.clicker.openInventory(tttCorpse.inventory)
if (tttPlayer.role == TTTPlayer.Role.DETECTIVE) tttCorpse.inspect(tttPlayer.player) if (tttPlayer.role == Role.DETECTIVE) tttCorpse.inspect(tttPlayer.player)
else tttCorpse.identify(tttPlayer.player) else tttCorpse.identify(tttPlayer.player)
} }

View file

@ -1,4 +1,4 @@
package de.moritzruth.spigot_ttt.game.players.corpses package de.moritzruth.spigot_ttt.game.corpses
import de.moritzruth.spigot_ttt.game.players.DeathReason import de.moritzruth.spigot_ttt.game.players.DeathReason
import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.game.players.TTTPlayer

View file

@ -1,9 +1,9 @@
package de.moritzruth.spigot_ttt.game.players.corpses package de.moritzruth.spigot_ttt.game.corpses
import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.CustomItems
import de.moritzruth.spigot_ttt.game.GameMessenger import de.moritzruth.spigot_ttt.game.GameMessenger
import de.moritzruth.spigot_ttt.game.players.DeathReason import de.moritzruth.spigot_ttt.game.players.DeathReason
import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.utils.applyMeta import de.moritzruth.spigot_ttt.utils.applyMeta
import de.moritzruth.spigot_ttt.utils.secondsToTicks import de.moritzruth.spigot_ttt.utils.secondsToTicks
@ -17,17 +17,17 @@ import org.golde.bukkit.corpsereborn.CorpseAPI.CorpseAPI
import org.golde.bukkit.corpsereborn.nms.Corpses import org.golde.bukkit.corpsereborn.nms.Corpses
import java.time.Instant import java.time.Instant
class TTTCorpse(private val player: Player, location: Location, private val role: TTTPlayer.Role, private val reason: DeathReason) { class TTTCorpse(private val player: Player, location: Location, private val role: Role, private val reason: DeathReason) {
val corpse: Corpses.CorpseData? val corpse: Corpses.CorpseData?
val inventory = player.server.createInventory(null, InventoryType.HOPPER, "${role.chatColor}${player.displayName}") val inventory = player.server.createInventory(null, InventoryType.HOPPER, "${role.chatColor}${player.displayName}")
val timestamp: Instant = Instant.now() val timestamp: Instant = Instant.now()
var identified = false; private set private var identified = false
var inspected = false private var inspected = false
private set(value) { private set(value) {
field = value field = value
updateTimeItem() updateTimeItem()
} }
var wholeMinutesSinceDeath = 0; private set private var wholeMinutesSinceDeath = 0; private set
private var updateTimeListener: BukkitTask private var updateTimeListener: BukkitTask
init { init {

View file

@ -16,12 +16,12 @@ object PlayerManager {
val availablePlayers get() = plugin.server.onlinePlayers.filter { it.gameMode === GameMode.SURVIVAL } val availablePlayers get() = plugin.server.onlinePlayers.filter { it.gameMode === GameMode.SURVIVAL }
val stillLivingRoles get() = tttPlayers.filter { it.alive }.map { it.role }.toSet() val stillLivingRoles get() = tttPlayers.filter { it.alive }.map { it.role }.toSet()
val stillLivingRoleGroups get() = stillLivingRoles.map { it.group }.toSet() private val stillLivingRoleGroups get() = stillLivingRoles.map { it.group }.toSet()
val playersJoinedDuringRound = mutableSetOf<Player>() private val playersJoinedDuringRound = mutableSetOf<Player>()
fun getTTTPlayer(player: Player) = tttPlayers.find { it.player === player } fun getTTTPlayer(player: Player) = tttPlayers.find { it.player === player }
fun getPlayersByRole() = mutableMapOf<TTTPlayer.Role, MutableSet<TTTPlayer>>() fun getPlayersByRole() = mutableMapOf<Role, MutableSet<TTTPlayer>>()
.apply { tttPlayers.forEach { getOrPut(it.role) { mutableSetOf() }.add(it) } } .apply { tttPlayers.forEach { getOrPut(it.role) { mutableSetOf() }.add(it) } }
.toMap() .toMap()
@ -100,22 +100,22 @@ object PlayerManager {
if (playerCount >= plugin.config.getInt("min-players-for.detective", 5)) { if (playerCount >= plugin.config.getInt("min-players-for.detective", 5)) {
val player = playersWithoutRole.random() val player = playersWithoutRole.random()
tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.DETECTIVE)) tttPlayers.add(TTTPlayer(player, Role.DETECTIVE))
playersWithoutRole.remove(player) playersWithoutRole.remove(player)
} }
if (playerCount >= plugin.config.getInt("min-players-for.jackal", 6)) { if (playerCount >= plugin.config.getInt("min-players-for.jackal", 6)) {
val player = playersWithoutRole.random() val player = playersWithoutRole.random()
tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.JACKAL)) tttPlayers.add(TTTPlayer(player, Role.JACKAL))
playersWithoutRole.remove(player) playersWithoutRole.remove(player)
} }
for (index in 1..traitorCount) { for (index in 1..traitorCount) {
val player = playersWithoutRole.random() val player = playersWithoutRole.random()
tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.TRAITOR)) tttPlayers.add(TTTPlayer(player, Role.TRAITOR))
playersWithoutRole.remove(player) playersWithoutRole.remove(player)
} }
playersWithoutRole.forEach { tttPlayers.add(TTTPlayer(it, TTTPlayer.Role.INNOCENT)) } playersWithoutRole.forEach { tttPlayers.add(TTTPlayer(it, Role.INNOCENT)) }
} }
} }

View file

@ -0,0 +1,26 @@
package de.moritzruth.spigot_ttt.game.players
import de.moritzruth.spigot_ttt.CustomItems
import org.bukkit.ChatColor
import org.bukkit.Material
import java.util.*
enum class Role(
val chatColor: ChatColor,
val displayName: String,
val iconItemMaterial: Material,
val canOwnCredits: Boolean = false
) {
INNOCENT(ChatColor.GREEN, "Innocent", CustomItems.innocent),
DETECTIVE(ChatColor.YELLOW, "Detective", CustomItems.detective, true),
TRAITOR(ChatColor.RED, "Traitor", CustomItems.traitor, true),
JACKAL(ChatColor.AQUA, "Jackal", CustomItems.jackal, true),
SIDEKICK(ChatColor.AQUA, "Sidekick", CustomItems.sidekick, true);
val coloredDisplayName = "$chatColor$displayName${ChatColor.RESET}"
val position by lazy { values().indexOf(this) }
val group by lazy { RoleGroup.getGroupOf(this) }
}
fun roles(role: Role, vararg moreRoles: Role): EnumSet<Role> = EnumSet.of(role, *moreRoles)

View file

@ -0,0 +1,16 @@
package de.moritzruth.spigot_ttt.game.players
import java.util.*
enum class RoleGroup(val primaryRole: Role, val additionalRoles: EnumSet<Role> = EnumSet.noneOf(Role::class.java)) {
INNOCENT(Role.INNOCENT, EnumSet.of(Role.DETECTIVE)),
JACKAL(Role.JACKAL, EnumSet.of(Role.SIDEKICK)),
TRAITOR(Role.TRAITOR);
fun bothAre(firstTTTPlayer: TTTPlayer, secondTTTPlayer: TTTPlayer) =
firstTTTPlayer.role.group == this && secondTTTPlayer.role.group == this
companion object {
fun getGroupOf(role: Role) = values().find { it.primaryRole == role || it.additionalRoles.contains(role) }
}
}

View file

@ -1,11 +1,10 @@
package de.moritzruth.spigot_ttt.game.players package de.moritzruth.spigot_ttt.game.players
import de.moritzruth.spigot_ttt.CustomItems
import de.moritzruth.spigot_ttt.discord.DiscordBot import de.moritzruth.spigot_ttt.discord.DiscordBot
import de.moritzruth.spigot_ttt.discord.DiscordInterface import de.moritzruth.spigot_ttt.discord.DiscordInterface
import de.moritzruth.spigot_ttt.game.GameManager import de.moritzruth.spigot_ttt.game.GameManager
import de.moritzruth.spigot_ttt.game.GamePhase import de.moritzruth.spigot_ttt.game.GamePhase
import de.moritzruth.spigot_ttt.game.players.corpses.CorpseManager import de.moritzruth.spigot_ttt.game.corpses.CorpseManager
import de.moritzruth.spigot_ttt.items.ItemManager import de.moritzruth.spigot_ttt.items.ItemManager
import de.moritzruth.spigot_ttt.items.Selectable import de.moritzruth.spigot_ttt.items.Selectable
import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.TTTItem
@ -13,18 +12,15 @@ import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.shop.Shop import de.moritzruth.spigot_ttt.shop.Shop
import de.moritzruth.spigot_ttt.utils.hotbarContents import de.moritzruth.spigot_ttt.utils.hotbarContents
import de.moritzruth.spigot_ttt.utils.teleportPlayerToWorldSpawn import de.moritzruth.spigot_ttt.utils.teleportPlayerToWorldSpawn
import org.bukkit.ChatColor
import org.bukkit.GameMode import org.bukkit.GameMode
import org.bukkit.Material import org.bukkit.Material
import org.bukkit.entity.Player import org.bukkit.entity.Player
import org.bukkit.potion.PotionEffect import org.bukkit.potion.PotionEffect
import org.bukkit.potion.PotionEffectType import org.bukkit.potion.PotionEffectType
import java.util.*
import kotlin.properties.Delegates import kotlin.properties.Delegates
class TTTPlayer(player: Player, role: Role) { class TTTPlayer(player: Player, role: Role) {
var alive = true var alive = true
var player by Delegates.observable(player) { _, _, _ -> initializePlayer() } var player by Delegates.observable(player) { _, _, _ -> initializePlayer() }
var role by Delegates.observable(role) { _, _, _ -> scoreboard.updateRole() } var role by Delegates.observable(role) { _, _, _ -> scoreboard.updateRole() }
@ -164,33 +160,5 @@ class TTTPlayer(player: Player, role: Role) {
private fun getOwningTTTItems() = player.inventory.hotbarContents.mapNotNull { it?.run { ItemManager.getItemByItemStack(this) } } private fun getOwningTTTItems() = player.inventory.hotbarContents.mapNotNull { it?.run { ItemManager.getItemByItemStack(this) } }
enum class RoleGroup(val primaryRole: Role, val additionalRoles: EnumSet<Role> = EnumSet.noneOf(Role::class.java)) {
INNOCENT(Role.INNOCENT, EnumSet.of(Role.DETECTIVE)),
JACKAL(Role.JACKAL, EnumSet.of(Role.SIDEKICK)),
TRAITOR(Role.TRAITOR);
companion object {
fun getGroupOf(role: Role) = values().find { it.primaryRole == role || it.additionalRoles.contains(role) }
}
}
enum class Role(
val chatColor: ChatColor,
val displayName: String,
val iconItemMaterial: Material,
val canOwnCredits: Boolean = false
) {
INNOCENT(ChatColor.GREEN, "Innocent", CustomItems.innocent),
DETECTIVE(ChatColor.YELLOW, "Detective", CustomItems.detective, true),
TRAITOR(ChatColor.RED, "Traitor", CustomItems.traitor, true),
JACKAL(ChatColor.AQUA, "Jackal", CustomItems.jackal, true),
SIDEKICK(ChatColor.AQUA, "Sidekick", CustomItems.sidekick, true);
val coloredDisplayName = "$chatColor$displayName${ChatColor.RESET}"
val position by lazy { values().indexOf(this) }
val group by lazy { RoleGroup.getGroupOf(this) }
}
override fun toString() = "TTTPlayer(${player.name} is $role)" override fun toString() = "TTTPlayer(${player.name} is $role)"
} }

View file

@ -77,7 +77,6 @@ class TTTScoreboard(private val tttPlayer: TTTPlayer) {
scoreboard.registerNewTeam(DEFAULT_TEAM_NAME).apply { scoreboard.registerNewTeam(DEFAULT_TEAM_NAME).apply {
setAllowFriendlyFire(true) setAllowFriendlyFire(true)
setCanSeeFriendlyInvisibles(false) setCanSeeFriendlyInvisibles(false)
color = ChatColor.GREEN
setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.ALWAYS) setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.ALWAYS)
setOption(Team.Option.DEATH_MESSAGE_VISIBILITY, Team.OptionStatus.NEVER) setOption(Team.Option.DEATH_MESSAGE_VISIBILITY, Team.OptionStatus.NEVER)
setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.NEVER) setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.NEVER)
@ -116,17 +115,14 @@ class TTTScoreboard(private val tttPlayer: TTTPlayer) {
val phase = GameManager.phase val phase = GameManager.phase
if (phase === GamePhase.COMBAT) { if (phase === GamePhase.COMBAT) {
if (tttPlayer.role.group == TTTPlayer.RoleGroup.JACKAL || tttPlayer.role === TTTPlayer.Role.TRAITOR) { if (tttPlayer.role.group == RoleGroup.JACKAL || tttPlayer.role === Role.TRAITOR) {
val specialTeam = scoreboard.getTeam(SPECIAL_TEAM_NAME)!! val specialTeam = scoreboard.getTeam(SPECIAL_TEAM_NAME)!!
specialTeam.color = tttPlayer.role.chatColor specialTeam.color = tttPlayer.role.chatColor
defaultTeam.color = Role.INNOCENT.chatColor
PlayerManager.tttPlayers.forEach { PlayerManager.tttPlayers.forEach {
val bothPlayersAreJackalGroup = if (RoleGroup.JACKAL.bothAre(tttPlayer, it) ||
tttPlayer.role.group == TTTPlayer.RoleGroup.JACKAL && RoleGroup.TRAITOR.bothAre(tttPlayer, it)) {
it.role.group == TTTPlayer.RoleGroup.JACKAL
if (bothPlayersAreJackalGroup ||
(tttPlayer.role === TTTPlayer.Role.TRAITOR && it.role === TTTPlayer.Role.TRAITOR)) {
specialTeam.addEntry(it.player.displayName) specialTeam.addEntry(it.player.displayName)
} else { } else {
defaultTeam.addEntry(it.player.displayName) defaultTeam.addEntry(it.player.displayName)

View file

@ -9,12 +9,12 @@ import de.moritzruth.spigot_ttt.items.impl.CloakingDevice
import de.moritzruth.spigot_ttt.items.impl.EnderPearl import de.moritzruth.spigot_ttt.items.impl.EnderPearl
import de.moritzruth.spigot_ttt.items.impl.HealingPotion import de.moritzruth.spigot_ttt.items.impl.HealingPotion
import de.moritzruth.spigot_ttt.items.impl.Radar import de.moritzruth.spigot_ttt.items.impl.Radar
import de.moritzruth.spigot_ttt.items.weapons.guns.deagle.GoldenDeagle import de.moritzruth.spigot_ttt.items.weapons.guns.impl.GoldenDeagle
import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Deagle import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Deagle
import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Glock import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Glock
import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Pistol import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Pistol
import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Shotgun import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Shotgun
import de.moritzruth.spigot_ttt.items.weapons.guns.pistol.Rifle import de.moritzruth.spigot_ttt.items.weapons.guns.impl.Rifle
import de.moritzruth.spigot_ttt.items.weapons.impl.BaseballBat import de.moritzruth.spigot_ttt.items.weapons.impl.BaseballBat
import de.moritzruth.spigot_ttt.items.weapons.impl.Knife import de.moritzruth.spigot_ttt.items.weapons.impl.Knife
import de.moritzruth.spigot_ttt.plugin import de.moritzruth.spigot_ttt.plugin

View file

@ -1,6 +1,7 @@
package de.moritzruth.spigot_ttt.items package de.moritzruth.spigot_ttt.items
import com.comphenix.protocol.events.PacketListener import com.comphenix.protocol.events.PacketListener
import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.game.players.TTTPlayer
import org.bukkit.entity.Item import org.bukkit.entity.Item
import org.bukkit.entity.Player import org.bukkit.entity.Player
@ -21,7 +22,7 @@ interface DropHandler {
} }
interface Buyable { interface Buyable {
val buyableBy: EnumSet<TTTPlayer.Role> val buyableBy: EnumSet<Role>
val price: Int val price: Int
} }

View file

@ -1,11 +1,7 @@
package de.moritzruth.spigot_ttt.items.impl package de.moritzruth.spigot_ttt.items.impl
import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.CustomItems
import de.moritzruth.spigot_ttt.game.players.IState import de.moritzruth.spigot_ttt.game.players.*
import de.moritzruth.spigot_ttt.game.players.InversedStateContainer
import de.moritzruth.spigot_ttt.game.players.PlayerManager
import de.moritzruth.spigot_ttt.game.players.TTTPlayer
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.*
import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Buyable
import de.moritzruth.spigot_ttt.items.Selectable import de.moritzruth.spigot_ttt.items.Selectable
import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.TTTItem
@ -22,7 +18,6 @@ import org.bukkit.inventory.ItemFlag
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.potion.PotionEffect import org.bukkit.potion.PotionEffect
import org.bukkit.potion.PotionEffectType import org.bukkit.potion.PotionEffectType
import java.util.*
object CloakingDevice: TTTItem, object CloakingDevice: TTTItem,
Buyable, Buyable,
@ -37,7 +32,7 @@ object CloakingDevice: TTTItem,
} }
override val type = TTTItem.Type.SPECIAL override val type = TTTItem.Type.SPECIAL
override val price = 2 override val price = 2
override val buyableBy = EnumSet.of(DETECTIVE, TRAITOR, JACKAL) override val buyableBy = roles(Role.TRAITOR, Role.JACKAL)
val isc = InversedStateContainer(State::class) val isc = InversedStateContainer(State::class)

View file

@ -1,6 +1,7 @@
package de.moritzruth.spigot_ttt.items.impl package de.moritzruth.spigot_ttt.items.impl
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.* import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.game.players.roles
import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Buyable
import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.items.isRelevant import de.moritzruth.spigot_ttt.items.isRelevant
@ -11,14 +12,13 @@ import org.bukkit.event.EventHandler
import org.bukkit.event.Listener import org.bukkit.event.Listener
import org.bukkit.event.entity.EntityDamageByEntityEvent import org.bukkit.event.entity.EntityDamageByEntityEvent
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import java.util.*
object EnderPearl: TTTItem, Buyable { object EnderPearl: TTTItem, Buyable {
override val type = TTTItem.Type.SPECIAL override val type = TTTItem.Type.SPECIAL
override val itemStack = ItemStack(Material.ENDER_PEARL).applyMeta { override val itemStack = ItemStack(Material.ENDER_PEARL).applyMeta {
setDisplayName("${ChatColor.DARK_GREEN}Ender Perle") setDisplayName("${ChatColor.DARK_GREEN}Ender Perle")
} }
override val buyableBy = EnumSet.of(TRAITOR, JACKAL, SIDEKICK, DETECTIVE) override val buyableBy = roles(Role.TRAITOR, Role.JACKAL, Role.DETECTIVE)
override val price = 1 override val price = 1
override val listener = object : Listener { override val listener = object : Listener {

View file

@ -1,7 +1,8 @@
package de.moritzruth.spigot_ttt.items.impl package de.moritzruth.spigot_ttt.items.impl
import de.moritzruth.spigot_ttt.game.players.PlayerManager import de.moritzruth.spigot_ttt.game.players.PlayerManager
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.* import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.game.players.roles
import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Buyable
import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.items.isRelevant import de.moritzruth.spigot_ttt.items.isRelevant
@ -18,7 +19,6 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.PotionMeta import org.bukkit.inventory.meta.PotionMeta
import org.bukkit.potion.PotionData import org.bukkit.potion.PotionData
import org.bukkit.potion.PotionType import org.bukkit.potion.PotionType
import java.util.*
object HealingPotion: TTTItem, Buyable { object HealingPotion: TTTItem, Buyable {
override val itemStack = ItemStack(Material.POTION).apply { override val itemStack = ItemStack(Material.POTION).apply {
@ -35,7 +35,7 @@ object HealingPotion: TTTItem, Buyable {
addItemFlags(ItemFlag.HIDE_POTION_EFFECTS) addItemFlags(ItemFlag.HIDE_POTION_EFFECTS)
} }
override val type = TTTItem.Type.SPECIAL override val type = TTTItem.Type.SPECIAL
override val buyableBy = EnumSet.of(TRAITOR, JACKAL, SIDEKICK, DETECTIVE) override val buyableBy = roles(Role.TRAITOR, Role.JACKAL, Role.DETECTIVE)
override val price = 1 override val price = 1
override val listener = object : Listener { override val listener = object : Listener {

View file

@ -5,10 +5,7 @@ import com.comphenix.protocol.PacketType
import com.comphenix.protocol.events.PacketAdapter import com.comphenix.protocol.events.PacketAdapter
import com.comphenix.protocol.events.PacketEvent import com.comphenix.protocol.events.PacketEvent
import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.CustomItems
import de.moritzruth.spigot_ttt.game.players.IState import de.moritzruth.spigot_ttt.game.players.*
import de.moritzruth.spigot_ttt.game.players.InversedStateContainer
import de.moritzruth.spigot_ttt.game.players.PlayerManager
import de.moritzruth.spigot_ttt.game.players.TTTPlayer
import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Buyable
import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.items.isRelevant import de.moritzruth.spigot_ttt.items.isRelevant
@ -32,7 +29,7 @@ object Radar: TTTItem, Buyable {
setDisplayName("${ChatColor.DARK_AQUA}${ChatColor.BOLD}Radar") setDisplayName("${ChatColor.DARK_AQUA}${ChatColor.BOLD}Radar")
} }
override val type = TTTItem.Type.SPECIAL override val type = TTTItem.Type.SPECIAL
override val buyableBy = EnumSet.of(TTTPlayer.Role.TRAITOR, TTTPlayer.Role.JACKAL) override val buyableBy: EnumSet<Role> = EnumSet.of(Role.TRAITOR, Role.DETECTIVE, Role.JACKAL)
override val price = 2 override val price = 2
val isc = InversedStateContainer(State::class) val isc = InversedStateContainer(State::class)

View file

@ -1,13 +1,12 @@
package de.moritzruth.spigot_ttt.items.weapons.guns.deagle package de.moritzruth.spigot_ttt.items.weapons.guns.impl
import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.CustomItems
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.DETECTIVE import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.TRAITOR import de.moritzruth.spigot_ttt.game.players.roles
import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Buyable
import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.items.weapons.guns.Gun import de.moritzruth.spigot_ttt.items.weapons.guns.Gun
import org.bukkit.ChatColor import org.bukkit.ChatColor
import java.util.*
object GoldenDeagle: Gun( object GoldenDeagle: Gun(
stateClass = State::class, stateClass = State::class,
@ -18,7 +17,7 @@ object GoldenDeagle: Gun(
reloadTime = 20.0, reloadTime = 20.0,
itemMaterial = CustomItems.goldenDeagle itemMaterial = CustomItems.goldenDeagle
), Buyable { ), Buyable {
override val buyableBy = EnumSet.of(TRAITOR, DETECTIVE) override val buyableBy = roles(Role.TRAITOR, Role.JACKAL, Role.DETECTIVE)
override val price = 3 override val price = 3
override val type = TTTItem.Type.PISTOL_LIKE override val type = TTTItem.Type.PISTOL_LIKE

View file

@ -1,4 +1,4 @@
package de.moritzruth.spigot_ttt.items.weapons.guns.pistol package de.moritzruth.spigot_ttt.items.weapons.guns.impl
import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.CustomItems
import de.moritzruth.spigot_ttt.items.Spawning import de.moritzruth.spigot_ttt.items.Spawning

View file

@ -1,9 +1,9 @@
package de.moritzruth.spigot_ttt.items.weapons.impl package de.moritzruth.spigot_ttt.items.weapons.impl
import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.CustomItems
import de.moritzruth.spigot_ttt.game.players.Role
import de.moritzruth.spigot_ttt.game.players.TTTPlayer import de.moritzruth.spigot_ttt.game.players.TTTPlayer
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.JACKAL import de.moritzruth.spigot_ttt.game.players.roles
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.TRAITOR
import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Buyable
import de.moritzruth.spigot_ttt.items.Selectable import de.moritzruth.spigot_ttt.items.Selectable
import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.TTTItem
@ -19,7 +19,6 @@ import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.Damageable import org.bukkit.inventory.meta.Damageable
import org.bukkit.inventory.meta.ItemMeta import org.bukkit.inventory.meta.ItemMeta
import org.bukkit.util.Vector import org.bukkit.util.Vector
import java.util.*
object BaseballBat: TTTItem, Buyable, Selectable { object BaseballBat: TTTItem, Buyable, Selectable {
override val type = TTTItem.Type.MELEE override val type = TTTItem.Type.MELEE
@ -35,7 +34,7 @@ object BaseballBat: TTTItem, Buyable, Selectable {
) )
addItemFlags(ItemFlag.HIDE_ATTRIBUTES) addItemFlags(ItemFlag.HIDE_ATTRIBUTES)
} }
override val buyableBy = EnumSet.of(TRAITOR, JACKAL) override val buyableBy = roles(Role.TRAITOR, Role.JACKAL)
override val price = 1 override val price = 1
override fun onSelect(tttPlayer: TTTPlayer) { override fun onSelect(tttPlayer: TTTPlayer) {

View file

@ -1,11 +1,7 @@
package de.moritzruth.spigot_ttt.items.weapons.impl package de.moritzruth.spigot_ttt.items.weapons.impl
import de.moritzruth.spigot_ttt.CustomItems import de.moritzruth.spigot_ttt.CustomItems
import de.moritzruth.spigot_ttt.game.players.DamageInfo import de.moritzruth.spigot_ttt.game.players.*
import de.moritzruth.spigot_ttt.game.players.DeathReason
import de.moritzruth.spigot_ttt.game.players.PlayerManager
import de.moritzruth.spigot_ttt.game.players.TTTPlayer
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.TRAITOR
import de.moritzruth.spigot_ttt.items.Buyable import de.moritzruth.spigot_ttt.items.Buyable
import de.moritzruth.spigot_ttt.items.TTTItem import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.items.isRelevant import de.moritzruth.spigot_ttt.items.isRelevant
@ -20,7 +16,6 @@ import org.bukkit.inventory.ItemFlag
import org.bukkit.inventory.ItemStack import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.meta.Damageable import org.bukkit.inventory.meta.Damageable
import org.bukkit.inventory.meta.ItemMeta import org.bukkit.inventory.meta.ItemMeta
import java.util.*
object Knife: TTTItem, Buyable { object Knife: TTTItem, Buyable {
override val itemStack = ItemStack(CustomItems.knife).applyMeta { override val itemStack = ItemStack(CustomItems.knife).applyMeta {
@ -34,7 +29,7 @@ object Knife: TTTItem, Buyable {
) )
addItemFlags(ItemFlag.HIDE_ATTRIBUTES) addItemFlags(ItemFlag.HIDE_ATTRIBUTES)
} }
override val buyableBy: EnumSet<TTTPlayer.Role> = EnumSet.of(TRAITOR) override val buyableBy = roles(Role.TRAITOR, Role.JACKAL)
override val price = 1 override val price = 1
override val type = TTTItem.Type.MELEE override val type = TTTItem.Type.MELEE