Do not set the noDamageTicks to zero for every damage cause
This commit is contained in:
parent
71ff5f9286
commit
7d269ac777
1 changed files with 17 additions and 3 deletions
|
@ -21,6 +21,7 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent
|
||||||
import org.bukkit.event.entity.EntityDamageEvent
|
import org.bukkit.event.entity.EntityDamageEvent
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent
|
import org.bukkit.event.entity.PlayerDeathEvent
|
||||||
import org.bukkit.event.player.*
|
import org.bukkit.event.player.*
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
object GameListener : Listener {
|
object GameListener : Listener {
|
||||||
private val BLOCKED_COMMANDS = setOf("me", "tell")
|
private val BLOCKED_COMMANDS = setOf("me", "tell")
|
||||||
|
@ -63,15 +64,28 @@ object GameListener : Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val ZERO_NO_DAMAGE_TICKS_CAUSES = EnumSet.of(
|
||||||
|
EntityDamageEvent.DamageCause.ENTITY_ATTACK,
|
||||||
|
EntityDamageEvent.DamageCause.CUSTOM,
|
||||||
|
EntityDamageEvent.DamageCause.ENTITY_EXPLOSION,
|
||||||
|
EntityDamageEvent.DamageCause.BLOCK_EXPLOSION,
|
||||||
|
EntityDamageEvent.DamageCause.FALL,
|
||||||
|
EntityDamageEvent.DamageCause.ENTITY_SWEEP_ATTACK,
|
||||||
|
EntityDamageEvent.DamageCause.FALLING_BLOCK,
|
||||||
|
EntityDamageEvent.DamageCause.SUICIDE
|
||||||
|
)
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true)
|
||||||
fun onEntityDamageLow(event: EntityDamageEvent) {
|
fun onEntityDamageLow(event: EntityDamageEvent) {
|
||||||
if (GameManager.phase !== GamePhase.COMBAT) {
|
if (GameManager.phase !== GamePhase.COMBAT) {
|
||||||
event.isCancelled = true
|
event.isCancelled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
val player = event.entity
|
if (ZERO_NO_DAMAGE_TICKS_CAUSES.contains(event.cause)) {
|
||||||
if (player is Player) {
|
val player = event.entity
|
||||||
nextTick { player.noDamageTicks = 0 }
|
if (player is Player) {
|
||||||
|
nextTick { player.noDamageTicks = 0 }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue