1
0
Fork 0

Fix Defibrillator and Fake Corpse

This commit is contained in:
Moritz Ruth 2020-06-19 16:10:28 +02:00
parent 4f7058d892
commit 291e870884
No known key found for this signature in database
GPG key ID: AFD57E23E753841B
6 changed files with 12 additions and 10 deletions

View file

@ -5,7 +5,7 @@ import org.bukkit.entity.Zombie
import org.bukkit.inventory.Inventory
object CorpseManager {
private val corpses = mutableListOf<TTTCorpse>()
val corpses = mutableListOf<TTTCorpse>()
fun getTTTCorpse(entity: Entity): TTTCorpse? =
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 destroyAll() {
corpses.forEach(TTTCorpse::destroy)
corpses.clear()
corpses.toSet().forEach(TTTCorpse::destroy)
}
}

View file

@ -138,6 +138,7 @@ class TTTCorpse private constructor(
entity.remove()
updateTimeTask.cancel()
inventory.viewers.toSet().forEach { it.closeInventory() }
CorpseManager.corpses.remove(this)
}
private fun ensureNotDestroyed() {

View file

@ -45,7 +45,7 @@ object Defibrillator: TTTItem<Defibrillator.Instance>(
"${ChatColor.BOLD}Defibrillator",
BarColor.GREEN,
BarStyle.SOLID
)
).also { it.isVisible = false }
override fun onCarrierSet(carrier: TTTPlayer, isFirst: Boolean) {
bossBar.addPlayer(carrier.player)
@ -87,7 +87,7 @@ object Defibrillator: TTTItem<Defibrillator.Instance>(
)
action.cancelTask.cancel()
event.tttPlayer.player.inventory.removeTTTItemNextTick(Defibrillator)
event.tttPlayer.removeItem(Defibrillator)
} catch(e: TTTPlayer.AlreadyLivingException) {
action.cancel()
}

View file

@ -33,7 +33,7 @@ object FakeCorpse: TTTItem<FakeCorpse.Instance>(
price = 2
),
templateItemStack = ItemStack(Resourcepack.Items.fakeCorpse).applyMeta {
setDisplayName(FakeCorpse.DISPLAY_NAME)
setDisplayName("${ChatColor.YELLOW}${ChatColor.BOLD}Fake-Leiche")
lore = listOf(
"",
"${ChatColor.GOLD}Spawnt eine Fake-Leiche",
@ -42,7 +42,7 @@ object FakeCorpse: TTTItem<FakeCorpse.Instance>(
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) {
var chosenRole: Role? = null
@ -56,7 +56,7 @@ object FakeCorpse: TTTItem<FakeCorpse.Instance>(
private val chooseRoleInventory = plugin.server.createInventory(
null,
InventoryType.HOPPER,
"${DISPLAY_NAME}${ChatColor.RESET} - Rolle"
"${INVENTORY_TITLE}${ChatColor.RESET} - Rolle"
).apply {
addItem(*Role.values()
.map {
@ -71,7 +71,7 @@ object FakeCorpse: TTTItem<FakeCorpse.Instance>(
private fun createChoosePlayerInventory() = plugin.server.createInventory(
null,
InventoryType.CHEST,
"${DISPLAY_NAME}${ChatColor.RESET} - Spieler"
"${INVENTORY_TITLE}${ChatColor.RESET} - Spieler"
).apply {
addItem(*PlayerManager.tttPlayers
.map {

View file

@ -56,7 +56,7 @@ object SecondChance: TTTItem<SecondChance.Instance>(
lateinit var tttPlayer: TTTPlayer
fun possiblyTrigger() {
if (true || Random.nextBoolean()) trigger()
if (Random.nextBoolean()) trigger()
}
private fun trigger() {

View file

@ -196,6 +196,8 @@ class TTTPlayer(player: Player, role: Role, val tttClass: TTTClassCompanion = TT
}
private fun clearInventory(becauseOfDeath: Boolean) {
player.closeInventory()
Shop.clear(this)
val owningTTTItemInstances = getOwningTTTItemInstances()
owningTTTItemInstances.forEach {