Refactor some Role-related things
This commit is contained in:
parent
aeaa3fcc7e
commit
2927b75e8d
20 changed files with 103 additions and 111 deletions
|
@ -1,9 +1,9 @@
|
|||
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.TTTPlayer
|
||||
import de.moritzruth.spigot_ttt.game.players.corpses.CorpseListener
|
||||
import de.moritzruth.spigot_ttt.game.players.corpses.CorpseManager
|
||||
import de.moritzruth.spigot_ttt.game.players.Role
|
||||
import de.moritzruth.spigot_ttt.items.ItemManager
|
||||
import de.moritzruth.spigot_ttt.items.ItemSpawner
|
||||
import de.moritzruth.spigot_ttt.plugin
|
||||
|
@ -26,7 +26,7 @@ object GameManager {
|
|||
CorpseListener.register()
|
||||
}
|
||||
|
||||
fun letRoleWin(role: TTTPlayer.Role?) {
|
||||
fun letRoleWin(role: Role?) {
|
||||
ensurePhase(GamePhase.COMBAT)
|
||||
GameMessenger.win(role)
|
||||
phase = GamePhase.OVER
|
||||
|
@ -101,8 +101,8 @@ object GameManager {
|
|||
GameMessenger.combatPhaseStarted()
|
||||
|
||||
Timers.startCombatPhaseTimer(plugin.config.getInt("duration.combat", 480)) {
|
||||
if (PlayerManager.stillLivingRoles.contains(TTTPlayer.Role.INNOCENT)) {
|
||||
letRoleWin(TTTPlayer.Role.INNOCENT)
|
||||
if (PlayerManager.stillLivingRoles.contains(Role.INNOCENT)) {
|
||||
letRoleWin(Role.INNOCENT)
|
||||
} else {
|
||||
letRoleWin(null)
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package de.moritzruth.spigot_ttt.game
|
||||
|
||||
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.utils.secondsToTicks
|
||||
import org.bukkit.ChatColor
|
||||
|
@ -35,7 +35,7 @@ object GameMessenger {
|
|||
}
|
||||
}
|
||||
|
||||
fun win(winnerRole: TTTPlayer.Role?) {
|
||||
fun win(winnerRole: Role?) {
|
||||
val winner = when(winnerRole) {
|
||||
null -> {
|
||||
plugin.broadcast("Niemand hat gewonnen")
|
||||
|
@ -45,14 +45,14 @@ object GameMessenger {
|
|||
|
||||
return
|
||||
}
|
||||
TTTPlayer.Role.JACKAL, TTTPlayer.Role.SIDEKICK -> "Der ${TTTPlayer.Role.JACKAL.chatColor}Jackal"
|
||||
TTTPlayer.Role.TRAITOR -> "Die ${TTTPlayer.Role.TRAITOR.chatColor}Traitor"
|
||||
TTTPlayer.Role.INNOCENT, TTTPlayer.Role.DETECTIVE -> "Die ${TTTPlayer.Role.INNOCENT.chatColor}Innocents"
|
||||
Role.JACKAL, Role.SIDEKICK -> "Der ${Role.JACKAL.chatColor}Jackal"
|
||||
Role.TRAITOR -> "Die ${Role.TRAITOR.chatColor}Traitor"
|
||||
Role.INNOCENT, Role.DETECTIVE -> "Die ${Role.INNOCENT.chatColor}Innocents"
|
||||
}
|
||||
|
||||
val winnerMessage = when(winnerRole) {
|
||||
TTTPlayer.Role.JACKAL, TTTPlayer.Role.SIDEKICK -> "hat gewonnen"
|
||||
TTTPlayer.Role.TRAITOR, TTTPlayer.Role.INNOCENT, TTTPlayer.Role.DETECTIVE -> "haben gewonnen"
|
||||
Role.JACKAL, Role.SIDEKICK -> "hat gewonnen"
|
||||
Role.TRAITOR, Role.INNOCENT, Role.DETECTIVE -> "haben gewonnen"
|
||||
}
|
||||
|
||||
plugin.broadcast("${ChatColor.GOLD}$winner ${ChatColor.GOLD}${winnerMessage}")
|
||||
|
@ -69,13 +69,13 @@ object GameMessenger {
|
|||
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}")
|
||||
}
|
||||
|
||||
fun roles() {
|
||||
val playersByRole = PlayerManager.getPlayersByRole()
|
||||
val roles = playersByRole.keys.sortedBy(TTTPlayer.Role::position)
|
||||
val roles = playersByRole.keys.sortedBy(Role::position)
|
||||
|
||||
for (role in roles) {
|
||||
val entries = playersByRole.getValue(role).map { tttPlayer ->
|
||||
|
|
|
@ -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.TTTPlayer
|
||||
import de.moritzruth.spigot_ttt.game.players.Role
|
||||
import de.moritzruth.spigot_ttt.plugin
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.event.EventHandler
|
||||
|
@ -37,7 +37,7 @@ object CorpseListener: Listener {
|
|||
if(Instant.now().toEpochMilli() - tttCorpse.timestamp.toEpochMilli() < 200) return
|
||||
|
||||
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)
|
||||
}
|
||||
|
|
@ -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.TTTPlayer
|
|
@ -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.game.GameMessenger
|
||||
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.utils.applyMeta
|
||||
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 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 inventory = player.server.createInventory(null, InventoryType.HOPPER, "${role.chatColor}${player.displayName}")
|
||||
val timestamp: Instant = Instant.now()
|
||||
var identified = false; private set
|
||||
var inspected = false
|
||||
private var identified = false
|
||||
private var inspected = false
|
||||
private set(value) {
|
||||
field = value
|
||||
updateTimeItem()
|
||||
}
|
||||
var wholeMinutesSinceDeath = 0; private set
|
||||
private var wholeMinutesSinceDeath = 0; private set
|
||||
private var updateTimeListener: BukkitTask
|
||||
|
||||
init {
|
|
@ -16,12 +16,12 @@ object PlayerManager {
|
|||
|
||||
val availablePlayers get() = plugin.server.onlinePlayers.filter { it.gameMode === GameMode.SURVIVAL }
|
||||
val stillLivingRoles get() = tttPlayers.filter { it.alive }.map { it.role }.toSet()
|
||||
val stillLivingRoleGroups get() = stillLivingRoles.map { it.group }.toSet()
|
||||
val playersJoinedDuringRound = mutableSetOf<Player>()
|
||||
private val stillLivingRoleGroups get() = stillLivingRoles.map { it.group }.toSet()
|
||||
private val playersJoinedDuringRound = mutableSetOf<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) } }
|
||||
.toMap()
|
||||
|
||||
|
@ -100,22 +100,22 @@ object PlayerManager {
|
|||
|
||||
if (playerCount >= plugin.config.getInt("min-players-for.detective", 5)) {
|
||||
val player = playersWithoutRole.random()
|
||||
tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.DETECTIVE))
|
||||
tttPlayers.add(TTTPlayer(player, Role.DETECTIVE))
|
||||
playersWithoutRole.remove(player)
|
||||
}
|
||||
|
||||
if (playerCount >= plugin.config.getInt("min-players-for.jackal", 6)) {
|
||||
val player = playersWithoutRole.random()
|
||||
tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.JACKAL))
|
||||
tttPlayers.add(TTTPlayer(player, Role.JACKAL))
|
||||
playersWithoutRole.remove(player)
|
||||
}
|
||||
|
||||
for (index in 1..traitorCount) {
|
||||
val player = playersWithoutRole.random()
|
||||
tttPlayers.add(TTTPlayer(player, TTTPlayer.Role.TRAITOR))
|
||||
tttPlayers.add(TTTPlayer(player, Role.TRAITOR))
|
||||
playersWithoutRole.remove(player)
|
||||
}
|
||||
|
||||
playersWithoutRole.forEach { tttPlayers.add(TTTPlayer(it, TTTPlayer.Role.INNOCENT)) }
|
||||
playersWithoutRole.forEach { tttPlayers.add(TTTPlayer(it, Role.INNOCENT)) }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
|
@ -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) }
|
||||
}
|
||||
}
|
|
@ -1,11 +1,10 @@
|
|||
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.DiscordInterface
|
||||
import de.moritzruth.spigot_ttt.game.GameManager
|
||||
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.Selectable
|
||||
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.utils.hotbarContents
|
||||
import de.moritzruth.spigot_ttt.utils.teleportPlayerToWorldSpawn
|
||||
import org.bukkit.ChatColor
|
||||
import org.bukkit.GameMode
|
||||
import org.bukkit.Material
|
||||
import org.bukkit.entity.Player
|
||||
import org.bukkit.potion.PotionEffect
|
||||
import org.bukkit.potion.PotionEffectType
|
||||
import java.util.*
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
class TTTPlayer(player: Player, role: Role) {
|
||||
var alive = true
|
||||
|
||||
var player by Delegates.observable(player) { _, _, _ -> initializePlayer() }
|
||||
|
||||
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) } }
|
||||
|
||||
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)"
|
||||
}
|
||||
|
|
|
@ -77,7 +77,6 @@ class TTTScoreboard(private val tttPlayer: TTTPlayer) {
|
|||
scoreboard.registerNewTeam(DEFAULT_TEAM_NAME).apply {
|
||||
setAllowFriendlyFire(true)
|
||||
setCanSeeFriendlyInvisibles(false)
|
||||
color = ChatColor.GREEN
|
||||
setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.ALWAYS)
|
||||
setOption(Team.Option.DEATH_MESSAGE_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
|
||||
|
||||
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)!!
|
||||
specialTeam.color = tttPlayer.role.chatColor
|
||||
defaultTeam.color = Role.INNOCENT.chatColor
|
||||
|
||||
PlayerManager.tttPlayers.forEach {
|
||||
val bothPlayersAreJackalGroup =
|
||||
tttPlayer.role.group == TTTPlayer.RoleGroup.JACKAL &&
|
||||
it.role.group == TTTPlayer.RoleGroup.JACKAL
|
||||
|
||||
if (bothPlayersAreJackalGroup ||
|
||||
(tttPlayer.role === TTTPlayer.Role.TRAITOR && it.role === TTTPlayer.Role.TRAITOR)) {
|
||||
if (RoleGroup.JACKAL.bothAre(tttPlayer, it) ||
|
||||
RoleGroup.TRAITOR.bothAre(tttPlayer, it)) {
|
||||
specialTeam.addEntry(it.player.displayName)
|
||||
} else {
|
||||
defaultTeam.addEntry(it.player.displayName)
|
||||
|
|
|
@ -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.HealingPotion
|
||||
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.Glock
|
||||
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.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.Knife
|
||||
import de.moritzruth.spigot_ttt.plugin
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package de.moritzruth.spigot_ttt.items
|
||||
|
||||
import com.comphenix.protocol.events.PacketListener
|
||||
import de.moritzruth.spigot_ttt.game.players.Role
|
||||
import de.moritzruth.spigot_ttt.game.players.TTTPlayer
|
||||
import org.bukkit.entity.Item
|
||||
import org.bukkit.entity.Player
|
||||
|
@ -21,7 +22,7 @@ interface DropHandler {
|
|||
}
|
||||
|
||||
interface Buyable {
|
||||
val buyableBy: EnumSet<TTTPlayer.Role>
|
||||
val buyableBy: EnumSet<Role>
|
||||
val price: Int
|
||||
}
|
||||
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
package de.moritzruth.spigot_ttt.items.impl
|
||||
|
||||
import de.moritzruth.spigot_ttt.CustomItems
|
||||
import de.moritzruth.spigot_ttt.game.players.IState
|
||||
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.game.players.*
|
||||
import de.moritzruth.spigot_ttt.items.Buyable
|
||||
import de.moritzruth.spigot_ttt.items.Selectable
|
||||
import de.moritzruth.spigot_ttt.items.TTTItem
|
||||
|
@ -22,7 +18,6 @@ import org.bukkit.inventory.ItemFlag
|
|||
import org.bukkit.inventory.ItemStack
|
||||
import org.bukkit.potion.PotionEffect
|
||||
import org.bukkit.potion.PotionEffectType
|
||||
import java.util.*
|
||||
|
||||
object CloakingDevice: TTTItem,
|
||||
Buyable,
|
||||
|
@ -37,7 +32,7 @@ object CloakingDevice: TTTItem,
|
|||
}
|
||||
override val type = TTTItem.Type.SPECIAL
|
||||
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)
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
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.TTTItem
|
||||
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.entity.EntityDamageByEntityEvent
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import java.util.*
|
||||
|
||||
object EnderPearl: TTTItem, Buyable {
|
||||
override val type = TTTItem.Type.SPECIAL
|
||||
override val itemStack = ItemStack(Material.ENDER_PEARL).applyMeta {
|
||||
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 listener = object : Listener {
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package de.moritzruth.spigot_ttt.items.impl
|
||||
|
||||
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.TTTItem
|
||||
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.potion.PotionData
|
||||
import org.bukkit.potion.PotionType
|
||||
import java.util.*
|
||||
|
||||
object HealingPotion: TTTItem, Buyable {
|
||||
override val itemStack = ItemStack(Material.POTION).apply {
|
||||
|
@ -35,7 +35,7 @@ object HealingPotion: TTTItem, Buyable {
|
|||
addItemFlags(ItemFlag.HIDE_POTION_EFFECTS)
|
||||
}
|
||||
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 listener = object : Listener {
|
||||
|
|
|
@ -5,10 +5,7 @@ import com.comphenix.protocol.PacketType
|
|||
import com.comphenix.protocol.events.PacketAdapter
|
||||
import com.comphenix.protocol.events.PacketEvent
|
||||
import de.moritzruth.spigot_ttt.CustomItems
|
||||
import de.moritzruth.spigot_ttt.game.players.IState
|
||||
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.*
|
||||
import de.moritzruth.spigot_ttt.items.Buyable
|
||||
import de.moritzruth.spigot_ttt.items.TTTItem
|
||||
import de.moritzruth.spigot_ttt.items.isRelevant
|
||||
|
@ -32,7 +29,7 @@ object Radar: TTTItem, Buyable {
|
|||
setDisplayName("${ChatColor.DARK_AQUA}${ChatColor.BOLD}Radar")
|
||||
}
|
||||
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
|
||||
|
||||
val isc = InversedStateContainer(State::class)
|
||||
|
|
|
@ -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.game.players.TTTPlayer.Role.DETECTIVE
|
||||
import de.moritzruth.spigot_ttt.game.players.TTTPlayer.Role.TRAITOR
|
||||
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.TTTItem
|
||||
import de.moritzruth.spigot_ttt.items.weapons.guns.Gun
|
||||
import org.bukkit.ChatColor
|
||||
import java.util.*
|
||||
|
||||
object GoldenDeagle: Gun(
|
||||
stateClass = State::class,
|
||||
|
@ -18,7 +17,7 @@ object GoldenDeagle: Gun(
|
|||
reloadTime = 20.0,
|
||||
itemMaterial = CustomItems.goldenDeagle
|
||||
), Buyable {
|
||||
override val buyableBy = EnumSet.of(TRAITOR, DETECTIVE)
|
||||
override val buyableBy = roles(Role.TRAITOR, Role.JACKAL, Role.DETECTIVE)
|
||||
override val price = 3
|
||||
override val type = TTTItem.Type.PISTOL_LIKE
|
||||
|
||||
|
|
|
@ -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.items.Spawning
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package de.moritzruth.spigot_ttt.items.weapons.impl
|
||||
|
||||
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.Role.JACKAL
|
||||
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.Selectable
|
||||
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.ItemMeta
|
||||
import org.bukkit.util.Vector
|
||||
import java.util.*
|
||||
|
||||
object BaseballBat: TTTItem, Buyable, Selectable {
|
||||
override val type = TTTItem.Type.MELEE
|
||||
|
@ -35,7 +34,7 @@ object BaseballBat: TTTItem, Buyable, Selectable {
|
|||
)
|
||||
addItemFlags(ItemFlag.HIDE_ATTRIBUTES)
|
||||
}
|
||||
override val buyableBy = EnumSet.of(TRAITOR, JACKAL)
|
||||
override val buyableBy = roles(Role.TRAITOR, Role.JACKAL)
|
||||
override val price = 1
|
||||
|
||||
override fun onSelect(tttPlayer: TTTPlayer) {
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
package de.moritzruth.spigot_ttt.items.weapons.impl
|
||||
|
||||
import de.moritzruth.spigot_ttt.CustomItems
|
||||
import de.moritzruth.spigot_ttt.game.players.DamageInfo
|
||||
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.game.players.*
|
||||
import de.moritzruth.spigot_ttt.items.Buyable
|
||||
import de.moritzruth.spigot_ttt.items.TTTItem
|
||||
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.meta.Damageable
|
||||
import org.bukkit.inventory.meta.ItemMeta
|
||||
import java.util.*
|
||||
|
||||
object Knife: TTTItem, Buyable {
|
||||
override val itemStack = ItemStack(CustomItems.knife).applyMeta {
|
||||
|
@ -34,7 +29,7 @@ object Knife: TTTItem, Buyable {
|
|||
)
|
||||
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 type = TTTItem.Type.MELEE
|
||||
|
||||
|
|
Reference in a new issue