From d81c3d06c5134ceea97730ffa6d038891b4e88d8 Mon Sep 17 00:00:00 2001 From: nossr50 Date: Sun, 27 Jan 2019 18:11:51 -0800 Subject: [PATCH] XP Gains now report sources, added some config options regarding XP bars Fixed some issues with Roll Fixes https://github.com/mcMMO-Dev/mcMMO/issues/3732 --- Changelog.txt | 9 ++++ pom.xml | 2 +- .../com/gmail/nossr50/api/ExperienceAPI.java | 17 ++++---- .../commands/experience/AddlevelsCommand.java | 2 +- .../commands/experience/AddxpCommand.java | 5 ++- .../commands/experience/MmoeditCommand.java | 2 +- .../experience/SkillresetCommand.java | 2 +- .../commands/skills/MmoInfoCommand.java | 1 - .../config/experience/ExperienceConfig.java | 13 +++++- .../{skills => experience}/XPGainReason.java | 2 +- .../datatypes/experience/XPGainSource.java | 10 +++++ .../nossr50/datatypes/player/McMMOPlayer.java | 40 +++++++++++------- .../skills/subskills/acrobatics/Roll.java | 7 ++- .../McMMOPlayerExperienceEvent.java | 2 +- .../McMMOPlayerLevelChangeEvent.java | 2 +- .../experience/McMMOPlayerLevelDownEvent.java | 2 +- .../experience/McMMOPlayerLevelUpEvent.java | 2 +- .../experience/McMMOPlayerXpGainEvent.java | 2 +- .../nossr50/listeners/BlockListener.java | 1 - .../gmail/nossr50/listeners/SelfListener.java | 2 +- .../com/gmail/nossr50/party/ShareHandler.java | 5 ++- .../runnables/skills/AwardCombatXpTask.java | 5 ++- .../gmail/nossr50/skills/SkillManager.java | 22 +++++++++- .../skills/acrobatics/AcrobaticsManager.java | 2 +- .../skills/alchemy/AlchemyManager.java | 5 ++- .../skills/excavation/ExcavationManager.java | 3 +- .../skills/fishing/FishingManager.java | 2 +- .../skills/herbalism/HerbalismManager.java | 6 ++- .../nossr50/skills/mining/MiningManager.java | 2 +- .../nossr50/skills/repair/RepairManager.java | 2 +- .../skills/smelting/SmeltingManager.java | 15 ++++--- .../nossr50/skills/taming/TamingManager.java | 2 +- .../woodcutting/WoodcuttingManager.java | 2 +- .../com/gmail/nossr50/util/EventUtils.java | 5 ++- .../nossr50/util/skills/CombatUtils.java | 2 +- .../gmail/nossr50/util/skills/SkillUtils.java | 9 +++- src/main/resources/experience.yml | 11 +++++ .../resources/locale/locale_ja_JP.properties | Bin 11794 -> 23820 bytes 38 files changed, 154 insertions(+), 71 deletions(-) rename src/main/java/com/gmail/nossr50/datatypes/{skills => experience}/XPGainReason.java (88%) create mode 100644 src/main/java/com/gmail/nossr50/datatypes/experience/XPGainSource.java diff --git a/Changelog.txt b/Changelog.txt index defd5527f..70a2c7fb9 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -7,6 +7,15 @@ Key: ! Change - Removal +Version 2.1.2 + (Experience) Wood blocks now give XP and are affected by Tree Feller (6 sided bark blocks) + (API) Moved XPGainReason from skills to experience package + (API) Added XpGainSource for tracking sources of XP + (API) You can now specify XpGainSource when adding xp to players + (Config) The Extra Stats option for XP bars now overrides the setting for updating XP bars every time XP is gained + (Config) Added an option for Party XP gains to not update XP bars + (Config) Added an option for Passive XP gains to not update XP bars (smelting/brewing) + Version 2.1.1 = Fixed an issue where excavation wasn't using the correct permission node = Added protection against AFK fishing diff --git a/pom.xml b/pom.xml index a65814ea2..5ce362bca 100755 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 com.gmail.nossr50.mcMMO mcMMO - 2.1.1 + 2.1.2-SNAPSHOT mcMMO https://github.com/mcMMO-Dev/mcMMO diff --git a/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java b/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java index e4c72911e..7eca726c1 100644 --- a/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java +++ b/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java @@ -4,10 +4,11 @@ import com.gmail.nossr50.api.exceptions.*; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.experience.FormulaType; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.util.player.UserManager; @@ -102,11 +103,11 @@ public final class ExperienceAPI { */ public static void addRawXP(Player player, String skillType, float XP, String xpGainReason, boolean isUnshared) { if (isUnshared) { - getPlayer(player).beginUnsharedXpGain(getSkillType(skillType), XP, getXPGainReason(xpGainReason)); + getPlayer(player).beginUnsharedXpGain(getSkillType(skillType), XP, getXPGainReason(xpGainReason), XPGainSource.CUSTOM); return; } - getPlayer(player).applyXpGain(getSkillType(skillType), XP, getXPGainReason(xpGainReason)); + getPlayer(player).applyXpGain(getSkillType(skillType), XP, getXPGainReason(xpGainReason), XPGainSource.CUSTOM); } /** @@ -188,7 +189,7 @@ public final class ExperienceAPI { * @throws InvalidXPGainReasonException if the given xpGainReason is not valid */ public static void addMultipliedXP(Player player, String skillType, int XP, String xpGainReason) { - getPlayer(player).applyXpGain(getSkillType(skillType), (int) (XP * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()), getXPGainReason(xpGainReason)); + getPlayer(player).applyXpGain(getSkillType(skillType), (int) (XP * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()), getXPGainReason(xpGainReason), XPGainSource.CUSTOM); } /** @@ -259,11 +260,11 @@ public final class ExperienceAPI { PrimarySkillType skill = getSkillType(skillType); if (isUnshared) { - getPlayer(player).beginUnsharedXpGain(skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()), getXPGainReason(xpGainReason)); + getPlayer(player).beginUnsharedXpGain(skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()), getXPGainReason(xpGainReason), XPGainSource.CUSTOM); return; } - getPlayer(player).applyXpGain(skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()), getXPGainReason(xpGainReason)); + getPlayer(player).applyXpGain(skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()), getXPGainReason(xpGainReason), XPGainSource.CUSTOM); } /** @@ -337,11 +338,11 @@ public final class ExperienceAPI { */ public static void addXP(Player player, String skillType, int XP, String xpGainReason, boolean isUnshared) { if (isUnshared) { - getPlayer(player).beginUnsharedXpGain(getSkillType(skillType), XP, getXPGainReason(xpGainReason)); + getPlayer(player).beginUnsharedXpGain(getSkillType(skillType), XP, getXPGainReason(xpGainReason), XPGainSource.CUSTOM); return; } - getPlayer(player).beginXpGain(getSkillType(skillType), XP, getXPGainReason(xpGainReason)); + getPlayer(player).beginXpGain(getSkillType(skillType), XP, getXPGainReason(xpGainReason), XPGainSource.CUSTOM); } /** diff --git a/src/main/java/com/gmail/nossr50/commands/experience/AddlevelsCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/AddlevelsCommand.java index a8f8a940d..22cc3e6f3 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/AddlevelsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/AddlevelsCommand.java @@ -1,8 +1,8 @@ package com.gmail.nossr50.commands.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.EventUtils; import com.gmail.nossr50.util.Permissions; diff --git a/src/main/java/com/gmail/nossr50/commands/experience/AddxpCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/AddxpCommand.java index df1659da3..f79c8b9ca 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/AddxpCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/AddxpCommand.java @@ -1,8 +1,9 @@ package com.gmail.nossr50.commands.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.player.UserManager; @@ -23,7 +24,7 @@ public class AddxpCommand extends ExperienceCommand { @Override protected void handleCommand(Player player, PlayerProfile profile, PrimarySkillType skill, int value) { if (player != null) { - UserManager.getPlayer(player).applyXpGain(skill, value, XPGainReason.COMMAND); + UserManager.getPlayer(player).applyXpGain(skill, value, XPGainReason.COMMAND, XPGainSource.COMMAND); } else { profile.addXp(skill, value); diff --git a/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java index 0b18ad2dc..d5d6de39a 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java @@ -1,8 +1,8 @@ package com.gmail.nossr50.commands.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.EventUtils; import com.gmail.nossr50.util.Permissions; diff --git a/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java index d82e8b96d..16a28d720 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java @@ -1,9 +1,9 @@ package com.gmail.nossr50.commands.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.EventUtils; diff --git a/src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java index 06c2647ea..95dc29458 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/MmoInfoCommand.java @@ -6,7 +6,6 @@ import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill; import com.gmail.nossr50.listeners.InteractionManager; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; -import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.TextComponentFactory; import com.google.common.collect.ImmutableList; import org.bukkit.command.Command; diff --git a/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java b/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java index 82fb79458..d6811cfac 100644 --- a/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java +++ b/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java @@ -250,9 +250,20 @@ public class ExperienceConfig extends AutoUpdateConfigLoader { /* * Experience Bar Stuff */ + + public boolean isPartyExperienceBarsEnabled() + { + return config.getBoolean("Experience_Bars.Update.Party", true); + } + + public boolean isPassiveGainsExperienceBarsEnabled() + { + return config.getBoolean("Experience_Bars.Update.Passive", true); + } + public boolean getDoExperienceBarsAlwaysUpdateTitle() { - return config.getBoolean("Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained.Enable", false); + return config.getBoolean("Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained.Enable", false) || getAddExtraDetails(); } public boolean getAddExtraDetails() { return config.getBoolean("Experience_Bars.ThisMayCauseLag.AlwaysUpdateTitlesWhenXPIsGained.ExtraDetails", false);} diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/XPGainReason.java b/src/main/java/com/gmail/nossr50/datatypes/experience/XPGainReason.java similarity index 88% rename from src/main/java/com/gmail/nossr50/datatypes/skills/XPGainReason.java rename to src/main/java/com/gmail/nossr50/datatypes/experience/XPGainReason.java index 61d72d876..12557bf21 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/XPGainReason.java +++ b/src/main/java/com/gmail/nossr50/datatypes/experience/XPGainReason.java @@ -1,4 +1,4 @@ -package com.gmail.nossr50.datatypes.skills; +package com.gmail.nossr50.datatypes.experience; public enum XPGainReason { PVP, diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/XPGainSource.java b/src/main/java/com/gmail/nossr50/datatypes/experience/XPGainSource.java new file mode 100644 index 000000000..20a801a15 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/experience/XPGainSource.java @@ -0,0 +1,10 @@ +package com.gmail.nossr50.datatypes.experience; + +public enum XPGainSource { + SELF, + VAMPIRISM, //From Vampirism kills + PASSIVE, //Smelting, Brewing, etc... + PARTY_MEMBERS, //From other members of a party + COMMAND, + CUSTOM, //Outside Sources +} 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 c5adea085..81626a715 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java @@ -5,6 +5,8 @@ import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.chat.ChatMode; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.mods.CustomTool; import com.gmail.nossr50.datatypes.party.Party; @@ -12,7 +14,6 @@ import com.gmail.nossr50.datatypes.party.PartyTeleportRecord; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; import com.gmail.nossr50.datatypes.skills.ToolType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.party.PartyManager; @@ -144,10 +145,17 @@ public class McMMOPlayer { experienceBarManager.hideExperienceBar(primarySkillType); }*/ - public void processPostXpEvent(XPGainReason xpGainReason, PrimarySkillType primarySkillType, Plugin plugin) + public void processPostXpEvent(XPGainReason xpGainReason, PrimarySkillType primarySkillType, Plugin plugin, XPGainSource xpGainSource) { - if(xpGainReason != XPGainReason.SHARED_PVP && xpGainReason != XPGainReason.SHARED_PVE && xpGainReason != XPGainReason.VAMPIRISM) - updateXPBar(primarySkillType, plugin); + //Updates from Party sources + if(xpGainSource == XPGainSource.PARTY_MEMBERS && !ExperienceConfig.getInstance().isPartyExperienceBarsEnabled()) + return; + + //Updates from passive sources (Alchemy, Smelting, etc...) + if(xpGainSource == XPGainSource.PASSIVE && !ExperienceConfig.getInstance().isPassiveGainsExperienceBarsEnabled()) + return; + + updateXPBar(primarySkillType, plugin); } public void processUnlockNotifications(mcMMO plugin, PrimarySkillType primarySkillType, int skillLevel) @@ -452,7 +460,7 @@ public class McMMOPlayer { * @param skill Skill being used * @param xp Experience amount to process */ - public void beginXpGain(PrimarySkillType skill, float xp, XPGainReason xpGainReason) { + public void beginXpGain(PrimarySkillType skill, float xp, XPGainReason xpGainReason, XPGainSource xpGainSource) { Validate.isTrue(xp >= 0.0, "XP gained should be greater than or equal to zero."); if (xp <= 0.0) { @@ -465,7 +473,7 @@ public class McMMOPlayer { for (PrimarySkillType parentSkill : parentSkills) { if (parentSkill.getPermissions(player)) { - beginXpGain(parentSkill, splitXp, xpGainReason); + beginXpGain(parentSkill, splitXp, xpGainReason, xpGainSource); } } @@ -477,7 +485,7 @@ public class McMMOPlayer { return; } - beginUnsharedXpGain(skill, xp, xpGainReason); + beginUnsharedXpGain(skill, xp, xpGainReason, xpGainSource); } /** @@ -486,8 +494,8 @@ public class McMMOPlayer { * @param skill Skill being used * @param xp Experience amount to process */ - public void beginUnsharedXpGain(PrimarySkillType skill, float xp, XPGainReason xpGainReason) { - applyXpGain(skill, modifyXpGain(skill, xp), xpGainReason); + public void beginUnsharedXpGain(PrimarySkillType skill, float xp, XPGainReason xpGainReason, XPGainSource xpGainSource) { + applyXpGain(skill, modifyXpGain(skill, xp), xpGainReason, xpGainSource); if (party == null) { return; @@ -504,7 +512,7 @@ public class McMMOPlayer { * @param primarySkillType Skill being used * @param xp Experience amount to add */ - public void applyXpGain(PrimarySkillType primarySkillType, float xp, XPGainReason xpGainReason) { + public void applyXpGain(PrimarySkillType primarySkillType, float xp, XPGainReason xpGainReason, XPGainSource xpGainSource) { if (!primarySkillType.getPermissions(player)) { return; } @@ -513,7 +521,7 @@ public class McMMOPlayer { Set parentSkills = FamilyTree.getParents(primarySkillType); for (PrimarySkillType parentSkill : parentSkills) { - applyXpGain(parentSkill, xp / parentSkills.size(), xpGainReason); + applyXpGain(parentSkill, xp / parentSkills.size(), xpGainReason, xpGainSource); } return; @@ -524,7 +532,7 @@ public class McMMOPlayer { } isUsingUnarmed = (primarySkillType == PrimarySkillType.UNARMED); - checkXp(primarySkillType, xpGainReason); + checkXp(primarySkillType, xpGainReason, xpGainSource); } /** @@ -532,9 +540,9 @@ public class McMMOPlayer { * * @param primarySkillType The skill to check */ - private void checkXp(PrimarySkillType primarySkillType, XPGainReason xpGainReason) { + private void checkXp(PrimarySkillType primarySkillType, XPGainReason xpGainReason, XPGainSource xpGainSource) { if (getSkillXpLevelRaw(primarySkillType) < getXpToLevel(primarySkillType)) { - UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p); + UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p, xpGainSource); return; } @@ -552,7 +560,7 @@ public class McMMOPlayer { } if (!EventUtils.handleLevelChangeEvent(player, primarySkillType, levelsGained, xpRemoved, true, xpGainReason)) { - UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p); + UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p, xpGainSource); return; } @@ -567,7 +575,7 @@ public class McMMOPlayer { NotificationManager.sendPlayerLevelUpNotification(UserManager.getPlayer(player), primarySkillType, levelsGained, profile.getSkillLevel(primarySkillType)); //UPDATE XP BARS - UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p); + UserManager.getPlayer(player).processPostXpEvent(xpGainReason, primarySkillType, mcMMO.p, xpGainSource); } /* diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java b/src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java index a9fdded8a..0355c8821 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/subskills/acrobatics/Roll.java @@ -4,15 +4,14 @@ import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.LimitedSizeList; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.EventUtils; -import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.player.NotificationManager; import com.gmail.nossr50.util.player.UserManager; @@ -282,7 +281,7 @@ public class Roll extends AcrobaticsSubSkill { } if(fallLocationMap.get(player) == null) - fallLocationMap.put(player, new LimitedSizeList(100)); + fallLocationMap.put(player, new LimitedSizeList(50)); LimitedSizeList fallLocations = fallLocationMap.get(player); @@ -428,7 +427,7 @@ public class Roll extends AcrobaticsSubSkill { public void addFallLocation(Player player) { if(fallLocationMap.get(player) == null) - fallLocationMap.put(player, new LimitedSizeList(20)); + fallLocationMap.put(player, new LimitedSizeList(50)); LimitedSizeList fallLocations = fallLocationMap.get(player); diff --git a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java index de37a6778..78592b03b 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.util.player.UserManager; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; diff --git a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java index 058225782..bf23d4443 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import org.bukkit.entity.Player; /** diff --git a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java index cb0f28911..3834726f8 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; diff --git a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java index aaa2d7fed..062dd4a2a 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; diff --git a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerXpGainEvent.java b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerXpGainEvent.java index 3127821d9..d789fde70 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerXpGainEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerXpGainEvent.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; diff --git a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java index 3ea0fdf98..aeb3fa28a 100644 --- a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java @@ -3,7 +3,6 @@ package com.gmail.nossr50.listeners; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.HiddenConfig; import com.gmail.nossr50.config.WorldBlacklist; -import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; diff --git a/src/main/java/com/gmail/nossr50/listeners/SelfListener.java b/src/main/java/com/gmail/nossr50/listeners/SelfListener.java index 3c3268d07..433263300 100644 --- a/src/main/java/com/gmail/nossr50/listeners/SelfListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/SelfListener.java @@ -2,9 +2,9 @@ package com.gmail.nossr50.listeners; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent; import com.gmail.nossr50.events.experience.McMMOPlayerXpGainEvent; import com.gmail.nossr50.events.skills.abilities.McMMOPlayerAbilityActivateEvent; diff --git a/src/main/java/com/gmail/nossr50/party/ShareHandler.java b/src/main/java/com/gmail/nossr50/party/ShareHandler.java index 8416c3129..0cdafff8f 100644 --- a/src/main/java/com/gmail/nossr50/party/ShareHandler.java +++ b/src/main/java/com/gmail/nossr50/party/ShareHandler.java @@ -2,12 +2,13 @@ package com.gmail.nossr50.party; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.party.ItemWeightConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.party.ItemShareType; import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.ShareMode; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.player.UserManager; import org.bukkit.entity.Item; @@ -47,7 +48,7 @@ public final class ShareHandler { float splitXp = (float) (xp / partySize * shareBonus); for (Player member : nearMembers) { - UserManager.getPlayer(member).beginUnsharedXpGain(primarySkillType, splitXp, xpGainReason); + UserManager.getPlayer(member).beginUnsharedXpGain(primarySkillType, splitXp, xpGainReason, XPGainSource.PARTY_MEMBERS); } return true; diff --git a/src/main/java/com/gmail/nossr50/runnables/skills/AwardCombatXpTask.java b/src/main/java/com/gmail/nossr50/runnables/skills/AwardCombatXpTask.java index 0dfafc593..d7aee1718 100644 --- a/src/main/java/com/gmail/nossr50/runnables/skills/AwardCombatXpTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/skills/AwardCombatXpTask.java @@ -1,8 +1,9 @@ package com.gmail.nossr50.runnables.skills; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import org.bukkit.entity.LivingEntity; import org.bukkit.scheduler.BukkitRunnable; @@ -38,6 +39,6 @@ public class AwardCombatXpTask extends BukkitRunnable { damage += health; } - mcMMOPlayer.beginXpGain(primarySkillType, (int) (damage * baseXp), xpGainReason); + mcMMOPlayer.beginXpGain(primarySkillType, (int) (damage * baseXp), xpGainReason, XPGainSource.SELF); } } diff --git a/src/main/java/com/gmail/nossr50/skills/SkillManager.java b/src/main/java/com/gmail/nossr50/skills/SkillManager.java index 0201c9ad8..28d307230 100644 --- a/src/main/java/com/gmail/nossr50/skills/SkillManager.java +++ b/src/main/java/com/gmail/nossr50/skills/SkillManager.java @@ -1,8 +1,9 @@ package com.gmail.nossr50.skills; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.util.skills.PerksUtils; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; @@ -27,8 +28,25 @@ public abstract class SkillManager { return mcMMOPlayer.getSkillLevel(skill); } + /** + * Applies XP to a player, provides SELF as an XpGainSource source + * @param xp amount of XP to apply + * @param xpGainReason the reason for the XP gain + * @deprecated use applyXpGain(float, XPGainReason, XPGainSource) + */ + @Deprecated public void applyXpGain(float xp, XPGainReason xpGainReason) { - mcMMOPlayer.beginXpGain(skill, xp, xpGainReason); + mcMMOPlayer.beginXpGain(skill, xp, xpGainReason, XPGainSource.SELF); + } + + /** + * Applies XP to a player + * @param xp amount of XP to apply + * @param xpGainReason the reason for the XP gain + * @param xpGainSource the source of the XP + */ + public void applyXpGain(float xp, XPGainReason xpGainReason, XPGainSource xpGainSource) { + mcMMOPlayer.beginXpGain(skill, xp, xpGainReason, xpGainSource); } public XPGainReason getXPGainReason(LivingEntity target, Entity damager) { diff --git a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java index 3f3299fa4..49bf29a09 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.skills.acrobatics; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; diff --git a/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.java b/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.java index 49ea47db2..01c8e7665 100644 --- a/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.java +++ b/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.java @@ -2,10 +2,11 @@ package com.gmail.nossr50.skills.alchemy; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.skills.alchemy.PotionConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.StringUtils; @@ -52,6 +53,6 @@ public class AlchemyManager extends SkillManager { } public void handlePotionBrewSuccesses(PotionStage potionStage, int amount) { - applyXpGain((float) (ExperienceConfig.getInstance().getPotionXP(potionStage) * amount), XPGainReason.PVE); + applyXpGain((float) (ExperienceConfig.getInstance().getPotionXP(potionStage) * amount), XPGainReason.PVE, XPGainSource.PASSIVE); } } \ No newline at end of file diff --git a/src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java b/src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java index 77cfca207..40f3bfebc 100644 --- a/src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java +++ b/src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.skills.excavation; import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.Misc; @@ -13,7 +13,6 @@ import com.gmail.nossr50.util.random.RandomChanceUtil; import com.gmail.nossr50.util.skills.SkillUtils; import com.gmail.nossr50.worldguard.WorldGuardManager; import com.gmail.nossr50.worldguard.WorldGuardUtils; -import org.apache.commons.lang.math.RandomUtils; import org.bukkit.Location; import org.bukkit.block.BlockState; import org.bukkit.entity.Player; diff --git a/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java b/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java index d252d8a6c..4b1790d8b 100644 --- a/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java @@ -4,11 +4,11 @@ import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.treasure.TreasureConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.treasure.EnchantmentTreasure; import com.gmail.nossr50.datatypes.treasure.FishingTreasure; import com.gmail.nossr50.datatypes.treasure.Rarity; diff --git a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java index 4bdb9f4c1..3e60581d5 100644 --- a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java +++ b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java @@ -3,10 +3,14 @@ package com.gmail.nossr50.skills.herbalism; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.treasure.TreasureConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.mods.CustomBlock; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.*; +import com.gmail.nossr50.datatypes.skills.PrimarySkillType; +import com.gmail.nossr50.datatypes.skills.SubSkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbilityType; +import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.datatypes.treasure.HylianTreasure; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.skills.HerbalismBlockUpdaterTask; diff --git a/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java b/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java index 288923412..69ceac9a9 100644 --- a/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java +++ b/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java @@ -2,12 +2,12 @@ package com.gmail.nossr50.skills.mining; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.skills.AbilityCooldownTask; import com.gmail.nossr50.skills.SkillManager; diff --git a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java index b09b7442e..eebe0cd9c 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java @@ -3,11 +3,11 @@ package com.gmail.nossr50.skills.repair; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.SkillManager; diff --git a/src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java b/src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java index a1743f6d1..146b67e9f 100644 --- a/src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java @@ -1,10 +1,11 @@ package com.gmail.nossr50.skills.smelting; import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillRandomCheckEvent; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; @@ -39,11 +40,15 @@ public class SmeltingManager extends SkillManager { } public boolean canUseFluxMining(BlockState blockState) { - return getSkillLevel() >= Smelting.fluxMiningUnlockLevel && BlockUtils.affectedByFluxMining(blockState) && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.SMELTING_FLUX_MINING) && !mcMMO.getPlaceStore().isTrue(blockState); + return getSkillLevel() >= Smelting.fluxMiningUnlockLevel + && BlockUtils.affectedByFluxMining(blockState) + && Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.SMELTING_FLUX_MINING) + && !mcMMO.getPlaceStore().isTrue(blockState); } public boolean isSecondSmeltSuccessful() { - return Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.SMELTING_SECOND_SMELT) && RandomChanceUtil.isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.SMELTING_SECOND_SMELT, getPlayer()); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkillType.SMELTING_SECOND_SMELT) + && RandomChanceUtil.isActivationSuccessful(SkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkillType.SMELTING_SECOND_SMELT, getPlayer()); } /** @@ -82,7 +87,7 @@ public class SmeltingManager extends SkillManager { } // We need to distribute Mining XP here, because the block break event gets cancelled - applyXpGain(Mining.getBlockXp(blockState), XPGainReason.PVE); + applyXpGain(Mining.getBlockXp(blockState), XPGainReason.PVE, XPGainSource.PASSIVE); SkillUtils.handleDurabilityChange(getPlayer().getInventory().getItemInMainHand(), Config.getInstance().getAbilityToolDamage()); @@ -133,7 +138,7 @@ public class SmeltingManager extends SkillManager { } public ItemStack smeltProcessing(ItemStack smelting, ItemStack result) { - applyXpGain(Smelting.getResourceXp(smelting), XPGainReason.PVE); + applyXpGain(Smelting.getResourceXp(smelting), XPGainReason.PVE, XPGainSource.PASSIVE); if (isSecondSmeltSuccessful()) { ItemStack newResult = result.clone(); diff --git a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java index a70fa223a..ba93fe39c 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java @@ -3,11 +3,11 @@ package com.gmail.nossr50.skills.taming; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.events.fake.FakeEntityTameEvent; import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillRandomCheckEvent; import com.gmail.nossr50.locale.LocaleLoader; diff --git a/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java b/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java index 5393b3df5..886f62cfc 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java @@ -1,12 +1,12 @@ package com.gmail.nossr50.skills.woodcutting; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.mods.CustomBlock; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.skills.woodcutting.Woodcutting.ExperienceGainMethod; diff --git a/src/main/java/com/gmail/nossr50/util/EventUtils.java b/src/main/java/com/gmail/nossr50/util/EventUtils.java index 512cecd55..e807e01c2 100644 --- a/src/main/java/com/gmail/nossr50/util/EventUtils.java +++ b/src/main/java/com/gmail/nossr50/util/EventUtils.java @@ -1,12 +1,13 @@ package com.gmail.nossr50.util; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill; import com.gmail.nossr50.events.experience.McMMOPlayerLevelChangeEvent; import com.gmail.nossr50.events.experience.McMMOPlayerLevelDownEvent; @@ -336,7 +337,7 @@ public class EventUtils { int victimSkillLevel = victimProfile.getSkillLevel(primarySkillType); killerPlayer.addLevels(primarySkillType, levelChangedKiller.get(skillName)); - killerPlayer.beginUnsharedXpGain(primarySkillType, experienceChangedKiller.get(skillName), XPGainReason.VAMPIRISM); + killerPlayer.beginUnsharedXpGain(primarySkillType, experienceChangedKiller.get(skillName), XPGainReason.VAMPIRISM, XPGainSource.VAMPIRISM); victimProfile.modifySkill(primarySkillType, victimSkillLevel - levelChangedVictim.get(skillName)); victimProfile.removeXp(primarySkillType, experienceChangedVictim.get(skillName)); 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 7241e8d99..471045496 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java @@ -1,11 +1,11 @@ package com.gmail.nossr50.util.skills; import com.gmail.nossr50.config.experience.ExperienceConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent; import com.gmail.nossr50.events.fake.FakeEntityDamageEvent; import com.gmail.nossr50.mcMMO; diff --git a/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java b/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java index b4144b792..ae1d75474 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java @@ -3,12 +3,13 @@ package com.gmail.nossr50.util.skills; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.HiddenConfig; +import com.gmail.nossr50.datatypes.experience.XPGainReason; +import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.ItemUtils; @@ -34,7 +35,11 @@ import java.util.List; public class SkillUtils { public static void applyXpGain(McMMOPlayer mcMMOPlayer, PrimarySkillType skill, float xp, XPGainReason xpGainReason) { - mcMMOPlayer.beginXpGain(skill, xp, xpGainReason); + mcMMOPlayer.beginXpGain(skill, xp, xpGainReason, XPGainSource.SELF); + } + + public static void applyXpGain(McMMOPlayer mcMMOPlayer, PrimarySkillType skill, float xp, XPGainReason xpGainReason, XPGainSource xpGainSource) { + mcMMOPlayer.beginXpGain(skill, xp, xpGainReason, xpGainSource); } /* diff --git a/src/main/resources/experience.yml b/src/main/resources/experience.yml index ff8336463..c197f40e6 100644 --- a/src/main/resources/experience.yml +++ b/src/main/resources/experience.yml @@ -25,6 +25,11 @@ Experience_Bars: # Turn this to false if you wanna disable XP bars Enable: true + Update: + # XP that you gained from your party but not yourself + Party: true + # Passive is stuff like smelting, brewing + Passive: true # If you want to use a fancy edited title from the locale, then you'll probably want to turn this on, but it will make your server do a lot more work! # I recommend leaving this off! ThisMayCauseLag: @@ -242,6 +247,12 @@ Experience: Stripped_Jungle_Log: 100 Stripped_Acacia_Log: 90 Stripped_Dark_Oak_Log: 90 + Oak_Wood: 70 + Spruce_Wood: 70 + Birch_Wood: 70 + Jungle_Wood: 70 + Acacia_Wood: 70 + Dark_Oak_Wood: 70 Mycelium: 70 Red_Mushroom_Block: 70 Brown_Mushroom_Block: 70 diff --git a/src/main/resources/locale/locale_ja_JP.properties b/src/main/resources/locale/locale_ja_JP.properties index c01d981a9fc2aaad91068cda5f58dc5c16383ae0..aeb9a4c4131821997677643f2ab5c9d4a9e64d85 100644 GIT binary patch literal 23820 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 a99WI~S#l^CzRXVq5Hd!}cq4xeY5fO6ey6bj literal 11794 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