1
0
Fork 0

Add Defibrillator sounds

This commit is contained in:
Moritz Ruth 2020-06-09 19:47:34 +02:00
parent cc787cd5f5
commit e6b22c9e62
No known key found for this signature in database
GPG key ID: AFD57E23E753841B
10 changed files with 60 additions and 33 deletions

View file

@ -48,6 +48,20 @@ object ResourcePack {
object Item {
private const val PREFIX = NAMESPACE + "item."
object CloakingDevice {
private const val PREFIX = Item.PREFIX + "cloaking_device."
const val on = "${PREFIX}on"
const val off = "${PREFIX}off"
}
object Defibrillator {
private const val PREFIX = Item.PREFIX + "defibrillator."
const val use = "${PREFIX}use"
const val failed = "${PREFIX}failed"
}
object Weapon {
private const val PREFIX = Item.PREFIX + "weapon."
@ -104,13 +118,6 @@ object ResourcePack {
const val hit = "${PREFIX}hit"
}
}
object CloakingDevice {
private const val PREFIX = Item.PREFIX + "cloaking_device."
const val on = "${PREFIX}on"
const val off = "${PREFIX}off"
}
}
}
}

View file

@ -11,6 +11,7 @@ import de.moritzruth.spigot_ttt.TTTPlugin
import de.moritzruth.spigot_ttt.game.players.DeathReason
import de.moritzruth.spigot_ttt.game.players.PlayerManager
import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.utils.nextTick
import org.bukkit.ChatColor
import org.bukkit.Material
import org.bukkit.entity.Player
@ -71,9 +72,7 @@ object GeneralGameEventsListener : Listener {
val player = event.entity
if (player is Player) {
plugin.server.scheduler.runTask(plugin, fun() {
player.noDamageTicks = 0
})
nextTick { player.noDamageTicks = 0 }
}
}

View file

@ -5,6 +5,7 @@ import de.moritzruth.spigot_ttt.game.GameManager
import de.moritzruth.spigot_ttt.game.GameMessenger
import de.moritzruth.spigot_ttt.game.GamePhase
import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.utils.nextTick
import de.moritzruth.spigot_ttt.utils.noop
import de.moritzruth.spigot_ttt.utils.teleportPlayerToWorldSpawn
import org.bukkit.ChatColor
@ -29,9 +30,7 @@ object PlayerManager {
playersJoinedDuringRound.forEach {
teleportPlayerToWorldSpawn(it)
plugin.server.scheduler.runTask(plugin, fun() {
it.gameMode = GameMode.SURVIVAL
})
nextTick { it.gameMode = GameMode.SURVIVAL }
}
tttPlayers.forEach(TTTPlayer::resetAfterGameEnd)

View file

@ -11,6 +11,7 @@ import de.moritzruth.spigot_ttt.items.TTTItem
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.nextTick
import de.moritzruth.spigot_ttt.utils.secondsToTicks
import de.moritzruth.spigot_ttt.utils.teleportPlayerToWorldSpawn
import org.bukkit.*
@ -135,9 +136,7 @@ class TTTPlayer(player: Player, role: Role) {
plugin.server.pluginManager.callEvent(TTTPlayerReviveEvent(this))
player.sendMessage(TTTPlugin.prefix + "${ChatColor.GREEN}${ChatColor.BOLD}Du wurdest wiederbelebt")
plugin.server.scheduler.runTask(plugin, fun() {
player.gameMode = GameMode.SURVIVAL
})
nextTick { player.gameMode = GameMode.SURVIVAL }
}
class AlreadyLivingException: Exception("The player already lives")
@ -188,9 +187,7 @@ class TTTPlayer(player: Player, role: Role) {
}
// Required to be delayed because of a Minecraft bug which sometimes turns players invisible
plugin.server.scheduler.runTask(plugin, fun() {
reset()
})
nextTick { reset() }
}
fun reset() {

View file

@ -10,6 +10,7 @@ import de.moritzruth.spigot_ttt.items.weapons.guns.impl.*
import de.moritzruth.spigot_ttt.items.weapons.impl.BaseballBat
import de.moritzruth.spigot_ttt.items.weapons.impl.Knife
import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.utils.nextTick
import org.bukkit.ChatColor
import org.bukkit.Material
import org.bukkit.entity.Item
@ -107,9 +108,7 @@ object ItemManager {
if (tttItem != null) {
if (runCatching { tttPlayer.checkAddItemPreconditions(tttItem) }.isSuccess) {
plugin.server.scheduler.runTask(plugin, fun() {
tttPlayer.updateItemInHand()
})
nextTick { tttPlayer.updateItemInHand() }
if (tttItem is DropHandler) {
tttItem.onPickup(tttPlayer, event.item)

View file

@ -4,6 +4,7 @@ import com.connorlinfoot.actionbarapi.ActionBarAPI
import de.moritzruth.spigot_ttt.ResourcePack
import de.moritzruth.spigot_ttt.TTTItemListener
import de.moritzruth.spigot_ttt.game.GameEndEvent
import de.moritzruth.spigot_ttt.game.GameManager
import de.moritzruth.spigot_ttt.game.corpses.CorpseManager
import de.moritzruth.spigot_ttt.game.players.*
import de.moritzruth.spigot_ttt.items.Buyable
@ -11,6 +12,7 @@ import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.utils.*
import org.bukkit.ChatColor
import org.bukkit.SoundCategory
import org.bukkit.boss.BarColor
import org.bukkit.boss.BarStyle
import org.bukkit.event.EventHandler
@ -38,6 +40,10 @@ object Defibrillator: TTTItem, Buyable {
private val isc = InversedStateContainer(State::class)
fun stopSound() = plugin.server.onlinePlayers.forEach {
it.stopSound(ResourcePack.Sounds.Item.Defibrillator.use, SoundCategory.PLAYERS)
}
override val listener = object : TTTItemListener(this, true) {
@EventHandler
fun onCorpseClick(event: CorpseClickEvent) {
@ -103,6 +109,14 @@ object Defibrillator: TTTItem, Buyable {
}
init {
GameManager.world.playSound(
tttPlayer.player.location,
ResourcePack.Sounds.Item.Defibrillator.use,
SoundCategory.PLAYERS,
1F,
1F
)
state.bossBar.color = BarColor.GREEN
state.bossBar.addPlayer(tttPlayer.player)
}
@ -115,6 +129,15 @@ object Defibrillator: TTTItem, Buyable {
private lateinit var task: BukkitTask
init {
stopSound()
GameManager.world.playSound(
tttPlayer.player.location,
ResourcePack.Sounds.Item.Defibrillator.failed,
SoundCategory.PLAYERS,
1F,
1F
)
task = plugin.server.scheduler.runTaskTimer(plugin, fun() {
val state = isc.get(tttPlayer) ?: return@runTaskTimer
@ -149,6 +172,7 @@ object Defibrillator: TTTItem, Buyable {
fun reset(tttPlayer: TTTPlayer) {
bossBar.removePlayer(tttPlayer.player)
action?.reset()
stopSound()
}
}
}

View file

@ -11,6 +11,7 @@ import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.utils.applyMeta
import de.moritzruth.spigot_ttt.utils.hideInfo
import de.moritzruth.spigot_ttt.utils.nextTick
import de.moritzruth.spigot_ttt.utils.setAllToItem
import org.bukkit.ChatColor
import org.bukkit.Location
@ -89,9 +90,7 @@ object SecondChance: TTTItem, Buyable {
fun onInventoryClose(event: InventoryCloseEvent) = handle(event) { tttPlayer ->
if (event.inventory == chooseSpawnInventory) {
if (isc.get(tttPlayer)?.timeoutAction != null) {
plugin.server.scheduler.runTask(plugin, fun() {
if (isc.get(tttPlayer) != null) tttPlayer.player.openInventory(chooseSpawnInventory)
})
nextTick { if (isc.get(tttPlayer) != null) tttPlayer.player.openInventory(chooseSpawnInventory) }
}
}
}

View file

@ -13,6 +13,7 @@ import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.items.weapons.LoreHelper
import de.moritzruth.spigot_ttt.plugin
import de.moritzruth.spigot_ttt.utils.applyMeta
import de.moritzruth.spigot_ttt.utils.nextTick
import de.moritzruth.spigot_ttt.utils.startItemDamageProgress
import org.bukkit.*
import org.bukkit.entity.Item
@ -181,13 +182,11 @@ abstract class Gun(
tttPlayer.stateContainer.put(stateClass, state)
val currentAction = state.currentAction ?: return
plugin.server.scheduler.runTask(plugin, fun() {
currentAction.itemStack = tttPlayer.player.inventory.find { it.type == itemEntity.itemStack.type }!!
nextTick { currentAction.itemStack = tttPlayer.player.inventory.find { it.type == itemEntity.itemStack.type }!!
if (currentAction is Action.Cooldown) {
currentAction.resume()
}
})
} }
}
}

View file

@ -1,7 +1,6 @@
package de.moritzruth.spigot_ttt.utils
import de.moritzruth.spigot_ttt.items.TTTItem
import de.moritzruth.spigot_ttt.plugin
import org.bukkit.inventory.Inventory
import org.bukkit.inventory.ItemStack
import org.bukkit.inventory.PlayerInventory
@ -11,9 +10,7 @@ fun Inventory.setAllToItem(indexes: Iterable<Int>, itemStack: ItemStack) {
}
fun Inventory.removeTTTItem(tttItem: TTTItem) = clear(indexOfFirst { it?.type == tttItem.itemStack.type })
fun Inventory.removeTTTItemNextTick(tttItem: TTTItem) = plugin.server.scheduler.runTask(plugin, fun() {
removeTTTItem(tttItem)
})
fun Inventory.removeTTTItemNextTick(tttItem: TTTItem) = nextTick { removeTTTItem(tttItem) }
fun PlayerInventory.clearHeldItemSlot() = clear(heldItemSlot)

View file

@ -0,0 +1,7 @@
package de.moritzruth.spigot_ttt.utils
import de.moritzruth.spigot_ttt.plugin
fun nextTick(fn: () -> Unit) {
plugin.server.scheduler.runTask(plugin, fn)
}