1
0
Fork 0

Do not set the noDamageTicks to zero for every damage cause

This commit is contained in:
Moritz Ruth 2020-06-14 00:26:41 +02:00
parent 71ff5f9286
commit 7d269ac777
No known key found for this signature in database
GPG key ID: AFD57E23E753841B

View file

@ -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,17 +64,30 @@ 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
} }
if (ZERO_NO_DAMAGE_TICKS_CAUSES.contains(event.cause)) {
val player = event.entity val player = event.entity
if (player is Player) { if (player is Player) {
nextTick { player.noDamageTicks = 0 } nextTick { player.noDamageTicks = 0 }
} }
} }
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
fun onEntityDamageHighest(event: EntityDamageEvent) { fun onEntityDamageHighest(event: EntityDamageEvent) {