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 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()
} }
} }

View file

@ -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() {

View file

@ -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()
} }

View file

@ -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 {

View file

@ -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() {

View file

@ -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 {