From 76ddcc4cf0933bc3e8b80b800f52204961c769d0 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Mon, 21 Jan 2019 15:43:54 -0800 Subject: [PATCH] You can now enable Party Friendly Fire --- Changelog.txt | 1 + .../java/com/gmail/nossr50/config/Config.java | 1 + .../nossr50/listeners/EntityListener.java | 21 ++++++++++++------- .../nossr50/util/skills/CombatUtils.java | 2 +- src/main/resources/config.yml | 2 ++ 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 31e1721a0..dbd889dad 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -79,6 +79,7 @@ Version 2.1.0 = (MySQL) When converting from MySQL to flatfile mcMMO will now properly include all users in the conversion process = (Commands) '/mcMMO help' no longer displays the other/special commands category to players lacking permissions + (Party) Parties can now have size limits (configurable in config.yml), party size is unlimited by default + + (Party) You can now turn on Friendly Fire for parties in config.yml ! (Deaths) Fixed the bug where mob names would be replaced by hearts ! (Experience) The XP values of fish are now based on their rarity and have been drastically changed ! (Experience) Skills now start at level 1 (configurable in advanced.yml) diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index c7db9dd1d..005fd27d4 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -409,6 +409,7 @@ public class Config extends AutoUpdateConfigLoader { public boolean getLargeFireworks() { return config.getBoolean("Particles.LargeFireworks", true); } /* PARTY SETTINGS */ + public boolean getPartyFriendlyFire() { return config.getBoolean("Party.FriendlyFire", false);} public int getPartyMaxSize() {return config.getInt("Party.MaxSize", -1); } public int getAutoPartyKickInterval() { return config.getInt("Party.AutoKick_Interval", 12); } public int getAutoPartyKickTime() { return config.getInt("Party.Old_Party_Member_Cutoff", 7); } diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index f26f2fddb..86cf67ac7 100644 --- a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java @@ -1,6 +1,7 @@ package com.gmail.nossr50.listeners; import com.gmail.nossr50.config.AdvancedConfig; +import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.meta.OldName; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.SubSkillType; @@ -150,10 +151,12 @@ public class EntityListener implements Listener { Player defendingPlayer = (Player) defender; Player attackingPlayer = (Player) attacker; if (event.getDamage(DamageModifier.ABSORPTION) > 0) { - if ((PartyManager.inSameParty(defendingPlayer, attackingPlayer) || PartyManager.areAllies(defendingPlayer, attackingPlayer)) && !(Permissions.friendlyFire(attackingPlayer) && Permissions.friendlyFire(defendingPlayer))) { - event.setCancelled(true); - return; - } + //If friendly fire is off don't allow players to hurt one another + if(!Config.getInstance().getPartyFriendlyFire()) + if ((PartyManager.inSameParty(defendingPlayer, attackingPlayer) || PartyManager.areAllies(defendingPlayer, attackingPlayer)) && !(Permissions.friendlyFire(attackingPlayer) && Permissions.friendlyFire(defendingPlayer))) { + event.setCancelled(true); + return; + } } } return; @@ -219,10 +222,12 @@ public class EntityListener implements Listener { return; } - if ((PartyManager.inSameParty(defendingPlayer, attackingPlayer) || PartyManager.areAllies(defendingPlayer, attackingPlayer)) && !(Permissions.friendlyFire(attackingPlayer) && Permissions.friendlyFire(defendingPlayer))) { - event.setCancelled(true); - return; - } + //Party Friendly Fire + if(!Config.getInstance().getPartyFriendlyFire()) + if ((PartyManager.inSameParty(defendingPlayer, attackingPlayer) || PartyManager.areAllies(defendingPlayer, attackingPlayer)) && !(Permissions.friendlyFire(attackingPlayer) && Permissions.friendlyFire(defendingPlayer))) { + event.setCancelled(true); + return; + } } CombatUtils.processCombatAttack(event, attacker, target); diff --git a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java index fc88b6bab..92f7892d7 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java @@ -453,7 +453,7 @@ public final class CombatUtils { XPGainReason xpGainReason; if (target instanceof Player) { - if (!ExperienceConfig.getInstance().getExperienceGainsPlayerVersusPlayerEnabled()) { + if (!ExperienceConfig.getInstance().getExperienceGainsPlayerVersusPlayerEnabled() || PartyManager.inSameParty(mcMMOPlayer.getPlayer(), (Player) target)) { return; } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index d0d8727f2..467d75503 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -237,6 +237,8 @@ Items: # Settings for Parties ### Party: + # Enable Hurting other players in the same party + FriendlyFire: false # Maximum size for a party, -1 for infinite MaxSize: -1 # Amount of time (in hours) to wait between automatically kicking old party members