From 239200a3d2abd7aca92a4c22c3d96a20847faf16 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Tue, 28 Apr 2020 13:47:33 -0700 Subject: [PATCH] child skills can have their xp bars turned on --- Changelog.txt | 6 +++++ .../nossr50/datatypes/player/McMMOPlayer.java | 9 ++++---- .../datatypes/player/PlayerProfile.java | 9 ++++++++ .../util/experience/ExperienceBarManager.java | 22 ++++++++++++------- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/Changelog.txt b/Changelog.txt index 2fe5d0ca7..7e73011da 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -1,3 +1,9 @@ +Version 2.1.127 + Child Skills now have XP bars, they are hidden by default + + NOTES: + You can enable the child skill bars with the command /mmoxpbar show + Version 2.1.126 mcMMO now relies on NMS for some of its features, if NMS cannot properly be wired up when initializing mcMMO behaviours relying on NMS will either be partially supported or disabled mcMMO now has a compatibility mode, any features that require specific versions of Minecraft for full functionality will be disabled if your server is not running a compatible version, mcMMO will still function in compatibility mode, but either the feature will be modified or disabled depending on the version of the server software diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java index a90280805..6fcae8bdd 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java @@ -190,17 +190,16 @@ public class McMMOPlayer { public void updateXPBar(PrimarySkillType primarySkillType, Plugin plugin) { - //Skill Unlock Notifications - - if(primarySkillType.isChildSkill()) - return; - //XP BAR UPDATES experienceBarManager.updateExperienceBar(primarySkillType, plugin); } public double getProgressInCurrentSkillLevel(PrimarySkillType primarySkillType) { + if(primarySkillType.isChildSkill()) { + return 1.0D; + } + double currentXP = profile.getSkillXpLevel(primarySkillType); double maxXP = profile.getXpToLevel(primarySkillType); diff --git a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java index a9582c095..d58a872c7 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java @@ -12,6 +12,7 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask; import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.util.player.UserManager; +import com.gmail.nossr50.util.skills.SkillUtils; import com.google.common.collect.ImmutableMap; import java.util.HashMap; @@ -266,6 +267,10 @@ public class PlayerProfile { } public int getSkillXpLevel(PrimarySkillType skill) { + if(skill.isChildSkill()) { + return 0; + } + return (int) Math.floor(getSkillXpLevelRaw(skill)); } @@ -415,6 +420,10 @@ public class PlayerProfile { * @return the total amount of Xp until next level */ public int getXpToLevel(PrimarySkillType primarySkillType) { + if(primarySkillType.isChildSkill()) { + return 0; + } + int level = (ExperienceConfig.getInstance().getCumulativeCurveEnabled()) ? UserManager.getPlayer(playerName).getPowerLevel() : skills.get(primarySkillType); FormulaType formulaType = ExperienceConfig.getInstance().getFormulaType(); diff --git a/src/main/java/com/gmail/nossr50/util/experience/ExperienceBarManager.java b/src/main/java/com/gmail/nossr50/util/experience/ExperienceBarManager.java index a36799895..9bd52cd57 100644 --- a/src/main/java/com/gmail/nossr50/util/experience/ExperienceBarManager.java +++ b/src/main/java/com/gmail/nossr50/util/experience/ExperienceBarManager.java @@ -117,19 +117,25 @@ public class ExperienceBarManager { hideExperienceBar(skillType); break; case RESET: - //Hide all currently permanent bars - for(PrimarySkillType permanent : alwaysVisible) { - hideExperienceBar(permanent); - } - - alwaysVisible.clear(); - disabledBars.clear(); - + resetBarSettings(); break; } informPlayer(settingTarget, skillType); + } + private void resetBarSettings() { + //Hide all currently permanent bars + for(PrimarySkillType permanent : alwaysVisible) { + hideExperienceBar(permanent); + } + + alwaysVisible.clear(); + disabledBars.clear(); + + //Hide child skills by default + disabledBars.add(PrimarySkillType.SALVAGE); + disabledBars.add(PrimarySkillType.SMELTING); } private void informPlayer(@NotNull ExperienceBarManager.@NotNull XPBarSettingTarget settingTarget, @Nullable PrimarySkillType skillType) {