Messages sent only when dmg > 0

This commit is contained in:
Jules 2023-02-22 23:59:00 +01:00
parent afa4a0467e
commit b966508c2d

View File

@ -29,6 +29,9 @@ public class PvPModeListener implements Listener {
/** /**
* Runs after MythicLib interaction checks. This listener * Runs after MythicLib interaction checks. This listener
* takes care of PVP inside of PvP-mode regions. * takes care of PVP inside of PvP-mode regions.
* <p>
* Only send messages when damage is greater than 0 to support
* Bukkit events-based checks just like in recent ML builds.
*/ */
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void a(EntityDamageByEntityEvent event) { public void a(EntityDamageByEntityEvent event) {
@ -44,9 +47,11 @@ public class PvPModeListener implements Listener {
final Player target = (Player) event.getEntity(); final Player target = (Player) event.getEntity();
final PlayerData targetData = PlayerData.get(target); final PlayerData targetData = PlayerData.get(target);
if (targetData.getCombat().isInvulnerable()) { if (targetData.getCombat().isInvulnerable()) {
final long left = targetData.getCombat().getInvulnerableTill() - System.currentTimeMillis(); if (event.getDamage() > 0) {
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.invulnerable-target", final long left = targetData.getCombat().getInvulnerableTill() - System.currentTimeMillis();
"left", MythicLib.plugin.getMMOConfig().decimal.format(left / 1000d)).send(source); MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.invulnerable-target",
"left", MythicLib.plugin.getMMOConfig().decimal.format(left / 1000d)).send(source);
}
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -54,9 +59,11 @@ public class PvPModeListener implements Listener {
// If attacker is still invulnerable and cannot deal damage // If attacker is still invulnerable and cannot deal damage
final PlayerData sourceData = PlayerData.get(source); final PlayerData sourceData = PlayerData.get(source);
if (!MMOCore.plugin.configManager.pvpModeInvulnerabilityCanDamage && sourceData.getCombat().isInvulnerable()) { if (!MMOCore.plugin.configManager.pvpModeInvulnerabilityCanDamage && sourceData.getCombat().isInvulnerable()) {
final long left = sourceData.getCombat().getInvulnerableTill() - System.currentTimeMillis(); if (event.getDamage() > 0) {
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.invulnerable-self", final long left = sourceData.getCombat().getInvulnerableTill() - System.currentTimeMillis();
"left", MythicLib.plugin.getMMOConfig().decimal.format(left / 1000d)).send(source); MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.invulnerable-self",
"left", MythicLib.plugin.getMMOConfig().decimal.format(left / 1000d)).send(source);
}
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
@ -68,13 +75,15 @@ public class PvPModeListener implements Listener {
// Defender has not enabled PvP mode // Defender has not enabled PvP mode
if (!targetData.getCombat().isInPvpMode()) { if (!targetData.getCombat().isInPvpMode()) {
event.setCancelled(true); event.setCancelled(true);
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.pvp-mode-disabled-target").send(source); if (event.getDamage() > 0)
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.pvp-mode-disabled-target").send(source);
} }
// Attacker has not enabled PvP mode // Attacker has not enabled PvP mode
else if (!sourceData.getCombat().isInPvpMode()) { else if (!sourceData.getCombat().isInPvpMode()) {
event.setCancelled(true); event.setCancelled(true);
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.pvp-mode-disabled-self").send(source); if (event.getDamage() > 0)
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.pvp-mode-disabled-self").send(source);
} }
} }
} }