diff --git a/Changelog.txt b/Changelog.txt index 536bed57b..310e09eaa 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -60,6 +60,7 @@ Version 2.1.0 = (MySQL) You can now inspect offline players = (MySQL) When converting from MySQL to flatfile mcMMO will now properly include all users in the conversion process + (Party) Parties can now have size limits (configurable in config.yml), party size is unlimited by default + ! (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 ! (Item) Improved some of the messages sent to the player regarding the Chimaera Wing ! (Party) Party member list will only include members of the party that you can see (aren't vanished) diff --git a/src/main/java/com/gmail/nossr50/datatypes/meta/OldName.java b/src/main/java/com/gmail/nossr50/datatypes/meta/OldName.java new file mode 100644 index 000000000..b300f92cc --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/meta/OldName.java @@ -0,0 +1,15 @@ +package com.gmail.nossr50.datatypes.meta; + +import com.gmail.nossr50.mcMMO; +import org.bukkit.metadata.FixedMetadataValue; + +/** + * This class is for storing mob names since we switch them to heart values + */ +public class OldName extends FixedMetadataValue { + + public OldName(String oldName, mcMMO plugin) + { + super(plugin, oldName); + } +} diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index 2364d551b..62bd33dd0 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.datatypes.meta.OldName; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.subskills.interfaces.InteractType; @@ -36,10 +37,13 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageModifier; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.metadata.FixedMetadataValue; +import org.bukkit.metadata.MetadataValue; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.projectiles.ProjectileSource; +import java.util.List; + public class EntityListener implements Listener { private final mcMMO plugin; @@ -223,7 +227,28 @@ public class EntityListener implements Listener { } CombatUtils.processCombatAttack(event, attacker, target); - CombatUtils.handleHealthbars(attacker, target, event.getFinalDamage()); + CombatUtils.handleHealthbars(attacker, target, event.getFinalDamage(), plugin); + + /** + * This sets entity names back to whatever they are supposed to be + */ + if(!(attacker instanceof Player) && defender instanceof Player) + { + if(event.getFinalDamage() >= ((LivingEntity) defender).getHealth()) + { + List metadataValue = attacker.getMetadata("mcMMO_oldName"); + + if(metadataValue.size() <= 0) + return; + + if(metadataValue != null) + { + OldName oldName = (OldName) metadataValue.get(0); + attacker.setCustomName(oldName.asString()); + attacker.setCustomNameVisible(false); + } + } + } } /** @@ -294,6 +319,7 @@ public class EntityListener implements Listener { if (event.getFinalDamage() >= 1) { mcMMOPlayer.actualizeRecentlyHurt(); } + } else if (livingEntity instanceof Tameable) { diff --git a/src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java b/src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java index 758e8a622..2dbb5caa0 100644 --- a/src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java +++ b/src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java @@ -3,6 +3,7 @@ package com.gmail.nossr50.util; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.MobHealthbarType; +import com.gmail.nossr50.datatypes.meta.OldName; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.MobHealthDisplayUpdaterTask; @@ -13,6 +14,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.metadata.FixedMetadataValue; +import org.bukkit.metadata.MetadataValue; public final class MobHealthbarUtils { private MobHealthbarUtils() {} @@ -38,7 +40,7 @@ public final class MobHealthbarUtils { * @param target the targetted entity * @param damage damage done by the attack triggering this */ - public static void handleMobHealthbars(Player player, LivingEntity target, double damage) { + public static void handleMobHealthbars(Player player, LivingEntity target, double damage, mcMMO plugin) { if (mcMMO.isHealthBarPluginEnabled() || !Permissions.mobHealthDisplay(player) || !Config.getInstance().getMobHealthbarEnabled()) { return; } @@ -57,8 +59,16 @@ public final class MobHealthbarUtils { return; } + String originalName = target.getName(); String oldName = target.getCustomName(); + + /* + * Store the name in metadata + */ + if(target.getMetadata("mcMMO_oldName").size() <= 0 && originalName != null) + target.setMetadata("mcMMO_oldName", new OldName(originalName, plugin)); + if (oldName == null) { oldName = ""; } 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 8957228b4..03b8a4b0a 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java @@ -703,7 +703,7 @@ public final class CombatUtils { return tier; } - public static void handleHealthbars(Entity attacker, LivingEntity target, double damage) { + public static void handleHealthbars(Entity attacker, LivingEntity target, double damage, mcMMO plugin) { if (!(attacker instanceof Player)) { return; } @@ -718,6 +718,6 @@ public final class CombatUtils { return; } - MobHealthbarUtils.handleMobHealthbars(player, target, damage); + MobHealthbarUtils.handleMobHealthbars(player, target, damage, plugin); } }