From 4d85f24d9810b47dfec45fd892de65b9a746e0d9 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Thu, 22 Feb 2024 18:04:57 -0800 Subject: [PATCH] 2.1.230 --- Changelog.txt | 3 ++- .../nossr50/listeners/EntityListener.java | 26 ++++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index e036098ec9..99528ae534 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,5 +1,6 @@ Version 2.1.230 - Fixed an error that could happen when mcMMO was saving when parties were disabled by party.yml + Fixed an error that could happen when mcMMO was saving when parties were disabled by party.yml (thanks IAISI & L4BORG) + Fixed several exceptions when checking PVP damage when parties were disabled by party.yml (thanks IAISI & L4BORG) Version 2.1.229 Added new party.yml config, which lets admins disable the party system entirely without having to use permissions diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index 8076fc1fd9..c762e94363 100644 --- a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java @@ -9,7 +9,6 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.metadata.MobMetaFlagType; import com.gmail.nossr50.metadata.MobMetadataService; -import com.gmail.nossr50.party.PartyManager; import com.gmail.nossr50.runnables.TravelingBlockMetaCleanup; import com.gmail.nossr50.skills.archery.Archery; import com.gmail.nossr50.skills.mining.BlastMining; @@ -259,16 +258,16 @@ else if (isTracked) { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityCombustByEntityEvent(EntityCombustByEntityEvent event) { //Prevent players from setting fire to each other if they are in the same party - if(mcMMO.p.getPartyConfig().isPartyEnabled() && event.getEntity() instanceof Player defender) { + if(event.getEntity() instanceof Player defender) { if(event.getCombuster() instanceof Projectile projectile) { if(projectile.getShooter() instanceof Player attacker) { - if(checkParties(event, defender, attacker)) { + if(checkIfInPartyOrSamePlayer(event, defender, attacker)) { event.setCancelled(true); } } } else if(event.getCombuster() instanceof Player attacker) { - if(checkParties(event, defender, attacker)) { + if(checkIfInPartyOrSamePlayer(event, defender, attacker)) { event.setCancelled(true); } } @@ -364,8 +363,8 @@ else if (attacker instanceof TNTPrimed && defender instanceof Player) { //If the attacker is a Player or a projectile belonging to a player if(attacker instanceof Projectile projectile) { if(projectile.getShooter() instanceof Player attackingPlayer && !attackingPlayer.equals(defendingPlayer)) { - //Check for party friendly fire and cancel the event - if (mcMMO.p.getPartyConfig().isPartyEnabled() && checkParties(event, defendingPlayer, attackingPlayer)) { + //Check for friendly fire and cancel the event + if (checkIfInPartyOrSamePlayer(event, defendingPlayer, attackingPlayer)) { return; } } @@ -383,7 +382,7 @@ else if (attacker instanceof TNTPrimed && defender instanceof Player) { } } } else if (attacker instanceof Player attackingPlayer){ - if (mcMMO.p.getPartyConfig().isPartyEnabled() && checkParties(event, defendingPlayer, attackingPlayer)) + if (checkIfInPartyOrSamePlayer(event, defendingPlayer, attackingPlayer)) return; } } @@ -482,14 +481,17 @@ public void onEntityDamageMonitor(EntityDamageByEntityEvent entityDamageEvent) { } } - public boolean checkParties(Cancellable event, Player defendingPlayer, Player attackingPlayer) { - if (!UserManager.hasPlayerDataKey(defendingPlayer) || !UserManager.hasPlayerDataKey(attackingPlayer)) { + public boolean checkIfInPartyOrSamePlayer(Cancellable event, Player defendingPlayer, Player attackingPlayer) { + // This check is probably necessary outside of the party system + if (defendingPlayer.equals(attackingPlayer)) { return true; } - // We want to make sure we're not gaining XP or applying abilities - // when we hit ourselves - if (defendingPlayer.equals(attackingPlayer)) { + if(!pluginRef.isPartySystemEnabled()) { + return false; + } + + if (!UserManager.hasPlayerDataKey(defendingPlayer) || !UserManager.hasPlayerDataKey(attackingPlayer)) { return true; }