Fix Defibrillator and Fake Corpse
This commit is contained in:
parent
4f7058d892
commit
291e870884
6 changed files with 12 additions and 10 deletions
|
@ -5,7 +5,7 @@ import org.bukkit.entity.Zombie
|
||||||
import org.bukkit.inventory.Inventory
|
import org.bukkit.inventory.Inventory
|
||||||
|
|
||||||
object CorpseManager {
|
object CorpseManager {
|
||||||
private val corpses = mutableListOf<TTTCorpse>()
|
val corpses = mutableListOf<TTTCorpse>()
|
||||||
|
|
||||||
fun getTTTCorpse(entity: Entity): TTTCorpse? =
|
fun getTTTCorpse(entity: Entity): TTTCorpse? =
|
||||||
if (entity is Zombie) corpses.find { it.entity === entity } else null
|
if (entity is Zombie) corpses.find { it.entity === entity } else null
|
||||||
|
@ -17,7 +17,6 @@ object CorpseManager {
|
||||||
fun isCorpseInventory(inventory: Inventory) = corpses.find { it.inventory == inventory } != null
|
fun isCorpseInventory(inventory: Inventory) = corpses.find { it.inventory == inventory } != null
|
||||||
|
|
||||||
fun destroyAll() {
|
fun destroyAll() {
|
||||||
corpses.forEach(TTTCorpse::destroy)
|
corpses.toSet().forEach(TTTCorpse::destroy)
|
||||||
corpses.clear()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,6 +138,7 @@ class TTTCorpse private constructor(
|
||||||
entity.remove()
|
entity.remove()
|
||||||
updateTimeTask.cancel()
|
updateTimeTask.cancel()
|
||||||
inventory.viewers.toSet().forEach { it.closeInventory() }
|
inventory.viewers.toSet().forEach { it.closeInventory() }
|
||||||
|
CorpseManager.corpses.remove(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ensureNotDestroyed() {
|
private fun ensureNotDestroyed() {
|
||||||
|
|
|
@ -45,7 +45,7 @@ object Defibrillator: TTTItem<Defibrillator.Instance>(
|
||||||
"${ChatColor.BOLD}Defibrillator",
|
"${ChatColor.BOLD}Defibrillator",
|
||||||
BarColor.GREEN,
|
BarColor.GREEN,
|
||||||
BarStyle.SOLID
|
BarStyle.SOLID
|
||||||
)
|
).also { it.isVisible = false }
|
||||||
|
|
||||||
override fun onCarrierSet(carrier: TTTPlayer, isFirst: Boolean) {
|
override fun onCarrierSet(carrier: TTTPlayer, isFirst: Boolean) {
|
||||||
bossBar.addPlayer(carrier.player)
|
bossBar.addPlayer(carrier.player)
|
||||||
|
@ -87,7 +87,7 @@ object Defibrillator: TTTItem<Defibrillator.Instance>(
|
||||||
)
|
)
|
||||||
|
|
||||||
action.cancelTask.cancel()
|
action.cancelTask.cancel()
|
||||||
event.tttPlayer.player.inventory.removeTTTItemNextTick(Defibrillator)
|
event.tttPlayer.removeItem(Defibrillator)
|
||||||
} catch(e: TTTPlayer.AlreadyLivingException) {
|
} catch(e: TTTPlayer.AlreadyLivingException) {
|
||||||
action.cancel()
|
action.cancel()
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ object FakeCorpse: TTTItem<FakeCorpse.Instance>(
|
||||||
price = 2
|
price = 2
|
||||||
),
|
),
|
||||||
templateItemStack = ItemStack(Resourcepack.Items.fakeCorpse).applyMeta {
|
templateItemStack = ItemStack(Resourcepack.Items.fakeCorpse).applyMeta {
|
||||||
setDisplayName(FakeCorpse.DISPLAY_NAME)
|
setDisplayName("${ChatColor.YELLOW}${ChatColor.BOLD}Fake-Leiche")
|
||||||
lore = listOf(
|
lore = listOf(
|
||||||
"",
|
"",
|
||||||
"${ChatColor.GOLD}Spawnt eine Fake-Leiche",
|
"${ChatColor.GOLD}Spawnt eine Fake-Leiche",
|
||||||
|
@ -42,7 +42,7 @@ object FakeCorpse: TTTItem<FakeCorpse.Instance>(
|
||||||
hideInfo()
|
hideInfo()
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
private val DISPLAY_NAME = "${ChatColor.YELLOW}${ChatColor.BOLD}Fake-Leiche"
|
private val INVENTORY_TITLE = "${ChatColor.RED}${ChatColor.BOLD}Fake-Leiche"
|
||||||
|
|
||||||
class Instance: TTTItem.Instance(FakeCorpse) {
|
class Instance: TTTItem.Instance(FakeCorpse) {
|
||||||
var chosenRole: Role? = null
|
var chosenRole: Role? = null
|
||||||
|
@ -56,7 +56,7 @@ object FakeCorpse: TTTItem<FakeCorpse.Instance>(
|
||||||
private val chooseRoleInventory = plugin.server.createInventory(
|
private val chooseRoleInventory = plugin.server.createInventory(
|
||||||
null,
|
null,
|
||||||
InventoryType.HOPPER,
|
InventoryType.HOPPER,
|
||||||
"${DISPLAY_NAME}${ChatColor.RESET} - Rolle"
|
"${INVENTORY_TITLE}${ChatColor.RESET} - Rolle"
|
||||||
).apply {
|
).apply {
|
||||||
addItem(*Role.values()
|
addItem(*Role.values()
|
||||||
.map {
|
.map {
|
||||||
|
@ -71,7 +71,7 @@ object FakeCorpse: TTTItem<FakeCorpse.Instance>(
|
||||||
private fun createChoosePlayerInventory() = plugin.server.createInventory(
|
private fun createChoosePlayerInventory() = plugin.server.createInventory(
|
||||||
null,
|
null,
|
||||||
InventoryType.CHEST,
|
InventoryType.CHEST,
|
||||||
"${DISPLAY_NAME}${ChatColor.RESET} - Spieler"
|
"${INVENTORY_TITLE}${ChatColor.RESET} - Spieler"
|
||||||
).apply {
|
).apply {
|
||||||
addItem(*PlayerManager.tttPlayers
|
addItem(*PlayerManager.tttPlayers
|
||||||
.map {
|
.map {
|
||||||
|
|
|
@ -56,7 +56,7 @@ object SecondChance: TTTItem<SecondChance.Instance>(
|
||||||
lateinit var tttPlayer: TTTPlayer
|
lateinit var tttPlayer: TTTPlayer
|
||||||
|
|
||||||
fun possiblyTrigger() {
|
fun possiblyTrigger() {
|
||||||
if (true || Random.nextBoolean()) trigger()
|
if (Random.nextBoolean()) trigger()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun trigger() {
|
private fun trigger() {
|
||||||
|
|
|
@ -196,6 +196,8 @@ class TTTPlayer(player: Player, role: Role, val tttClass: TTTClassCompanion = TT
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun clearInventory(becauseOfDeath: Boolean) {
|
private fun clearInventory(becauseOfDeath: Boolean) {
|
||||||
|
player.closeInventory()
|
||||||
|
Shop.clear(this)
|
||||||
val owningTTTItemInstances = getOwningTTTItemInstances()
|
val owningTTTItemInstances = getOwningTTTItemInstances()
|
||||||
|
|
||||||
owningTTTItemInstances.forEach {
|
owningTTTItemInstances.forEach {
|
||||||
|
|
Reference in a new issue