diff --git a/Changelog.txt b/Changelog.txt index 10ed8848e..828cb6d06 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -8,7 +8,13 @@ Key: - Removal Version 2.0.1 + + Added config setting to enable or disable classic mcMMO mode + ! (API) SkillType is now PrimarySkill + ! (API) SecondarySkill is now SubSkill + ! (API) AbilityType is now SuperAbility + ! (API) SecondaryAbilityEvent is now SubSkillEvent ! (API) SecondarySkill ENUM is being updated to have the parent skill as a prefix and a getter method for grabbing the parent skill + ! (API) GREEN_THUMB_PLANT & GREEN_THUMB_BLOCK are replaced by GREEN_THUMB ! Skill Super Powers (Tree Feller, etc...) will now require level 10+ to use ! mcMMO skills will now be on a scale from 1-100 instead of 0-1000 (I'll be explaining this in a write-up) ! Refactored some unreadable code relating to SecondaryAbility activation in SkillUtils diff --git a/pom.xml b/pom.xml index 9a05b407e..8a82d960f 100755 --- a/pom.xml +++ b/pom.xml @@ -9,8 +9,9 @@ https://github.com/mcMMO-Dev/mcMMO/issues GitHub + jar - mcMMO + ${project.artifactId} ${basedir}/src/main/java diff --git a/src/main/java/com/gmail/nossr50/api/AbilityAPI.java b/src/main/java/com/gmail/nossr50/api/AbilityAPI.java index 8aa59f202..5571ceba3 100644 --- a/src/main/java/com/gmail/nossr50/api/AbilityAPI.java +++ b/src/main/java/com/gmail/nossr50/api/AbilityAPI.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.api; +import com.gmail.nossr50.datatypes.skills.SuperAbility; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.runnables.skills.BleedTimerTask; import com.gmail.nossr50.util.player.UserManager; @@ -12,37 +12,37 @@ public final class AbilityAPI { private AbilityAPI() {} public static boolean berserkEnabled(Player player) { - return UserManager.getPlayer(player).getAbilityMode(AbilityType.BERSERK); + return UserManager.getPlayer(player).getAbilityMode(SuperAbility.BERSERK); } public static boolean gigaDrillBreakerEnabled(Player player) { - return UserManager.getPlayer(player).getAbilityMode(AbilityType.GIGA_DRILL_BREAKER); + return UserManager.getPlayer(player).getAbilityMode(SuperAbility.GIGA_DRILL_BREAKER); } public static boolean greenTerraEnabled(Player player) { - return UserManager.getPlayer(player).getAbilityMode(AbilityType.GREEN_TERRA); + return UserManager.getPlayer(player).getAbilityMode(SuperAbility.GREEN_TERRA); } public static boolean serratedStrikesEnabled(Player player) { - return UserManager.getPlayer(player).getAbilityMode(AbilityType.SERRATED_STRIKES); + return UserManager.getPlayer(player).getAbilityMode(SuperAbility.SERRATED_STRIKES); } public static boolean skullSplitterEnabled(Player player) { - return UserManager.getPlayer(player).getAbilityMode(AbilityType.SKULL_SPLITTER); + return UserManager.getPlayer(player).getAbilityMode(SuperAbility.SKULL_SPLITTER); } public static boolean superBreakerEnabled(Player player) { - return UserManager.getPlayer(player).getAbilityMode(AbilityType.SUPER_BREAKER); + return UserManager.getPlayer(player).getAbilityMode(SuperAbility.SUPER_BREAKER); } public static boolean treeFellerEnabled(Player player) { - return UserManager.getPlayer(player).getAbilityMode(AbilityType.TREE_FELLER); + return UserManager.getPlayer(player).getAbilityMode(SuperAbility.TREE_FELLER); } public static boolean isAnyAbilityEnabled(Player player) { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - for (AbilityType ability : AbilityType.values()) { + for (SuperAbility ability : SuperAbility.values()) { if (mcMMOPlayer.getAbilityMode(ability)) { return true; } @@ -56,31 +56,31 @@ public final class AbilityAPI { } public static void setBerserkCooldown(Player player, long cooldown) { - UserManager.getPlayer(player).setAbilityDATS(AbilityType.BERSERK, cooldown); + UserManager.getPlayer(player).setAbilityDATS(SuperAbility.BERSERK, cooldown); } public static void setGigaDrillBreakerCooldown(Player player, long cooldown) { - UserManager.getPlayer(player).setAbilityDATS(AbilityType.GIGA_DRILL_BREAKER, cooldown); + UserManager.getPlayer(player).setAbilityDATS(SuperAbility.GIGA_DRILL_BREAKER, cooldown); } public static void setGreenTerraCooldown(Player player, long cooldown) { - UserManager.getPlayer(player).setAbilityDATS(AbilityType.GREEN_TERRA, cooldown); + UserManager.getPlayer(player).setAbilityDATS(SuperAbility.GREEN_TERRA, cooldown); } public static void setSerratedStrikesCooldown(Player player, long cooldown) { - UserManager.getPlayer(player).setAbilityDATS(AbilityType.SERRATED_STRIKES, cooldown); + UserManager.getPlayer(player).setAbilityDATS(SuperAbility.SERRATED_STRIKES, cooldown); } public static void setSkullSplitterCooldown(Player player, long cooldown) { - UserManager.getPlayer(player).setAbilityDATS(AbilityType.SKULL_SPLITTER, cooldown); + UserManager.getPlayer(player).setAbilityDATS(SuperAbility.SKULL_SPLITTER, cooldown); } public static void setSuperBreakerCooldown(Player player, long cooldown) { - UserManager.getPlayer(player).setAbilityDATS(AbilityType.SUPER_BREAKER, cooldown); + UserManager.getPlayer(player).setAbilityDATS(SuperAbility.SUPER_BREAKER, cooldown); } public static void setTreeFellerCooldown(Player player, long cooldown) { - UserManager.getPlayer(player).setAbilityDATS(AbilityType.TREE_FELLER, cooldown); + UserManager.getPlayer(player).setAbilityDATS(SuperAbility.TREE_FELLER, cooldown); } public static boolean isBleeding(LivingEntity entity) { diff --git a/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java b/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java index ec2492605..a13618db0 100644 --- a/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java +++ b/src/main/java/com/gmail/nossr50/api/ExperienceAPI.java @@ -3,6 +3,7 @@ package com.gmail.nossr50.api; import java.util.Set; import java.util.UUID; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import com.gmail.nossr50.mcMMO; @@ -16,7 +17,6 @@ import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.util.player.UserManager; @@ -34,7 +34,7 @@ public final class ExperienceAPI { * @return true if this is a valid mcMMO skill */ public static boolean isValidSkillType(String skillType) { - return SkillType.getSkill(skillType) != null; + return PrimarySkill.getSkill(skillType) != null; } /** @@ -48,7 +48,7 @@ public final class ExperienceAPI { * @return true if this is a valid, non-child mcMMO skill */ public static boolean isNonChildSkill(String skillType) { - SkillType skill = SkillType.getSkill(skillType); + PrimarySkill skill = PrimarySkill.getSkill(skillType); return skill != null && !skill.isChildSkill(); } @@ -261,7 +261,7 @@ public final class ExperienceAPI { * @throws InvalidXPGainReasonException if the given xpGainReason is not valid */ public static void addModifiedXP(Player player, String skillType, int XP, String xpGainReason, boolean isUnshared) { - SkillType skill = getSkillType(skillType); + PrimarySkill skill = getSkillType(skillType); if (isUnshared) { getPlayer(player).beginUnsharedXpGain(skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()), getXPGainReason(xpGainReason)); @@ -285,7 +285,7 @@ public final class ExperienceAPI { */ @Deprecated public static void addModifiedXPOffline(String playerName, String skillType, int XP) { - SkillType skill = getSkillType(skillType); + PrimarySkill skill = getSkillType(skillType); addOfflineXP(playerName, skill, (int) (XP / skill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier())); } @@ -515,7 +515,7 @@ public final class ExperienceAPI { * @throws UnsupportedOperationException if the given skill is a child skill */ public static int getXPRemaining(Player player, String skillType) { - SkillType skill = getNonChildSkillType(skillType); + PrimarySkill skill = getNonChildSkillType(skillType); PlayerProfile profile = getPlayer(player).getProfile(); @@ -537,7 +537,7 @@ public final class ExperienceAPI { */ @Deprecated public static int getOfflineXPRemaining(String playerName, String skillType) { - SkillType skill = getNonChildSkillType(skillType); + PrimarySkill skill = getNonChildSkillType(skillType); PlayerProfile profile = getOfflineProfile(playerName); return profile.getXpToLevel(skill) - profile.getSkillXpLevel(skill); @@ -557,7 +557,7 @@ public final class ExperienceAPI { * @throws UnsupportedOperationException if the given skill is a child skill */ public static float getOfflineXPRemaining(UUID uuid, String skillType) { - SkillType skill = getNonChildSkillType(skillType); + PrimarySkill skill = getNonChildSkillType(skillType); PlayerProfile profile = getOfflineProfile(uuid); return profile.getXpToLevel(skill) - profile.getSkillXpLevelRaw(skill); @@ -593,12 +593,12 @@ public final class ExperienceAPI { @Deprecated public static void addLevelOffline(String playerName, String skillType, int levels) { PlayerProfile profile = getOfflineProfile(playerName); - SkillType skill = getSkillType(skillType); + PrimarySkill skill = getSkillType(skillType); if (skill.isChildSkill()) { - Set parentSkills = FamilyTree.getParents(skill); + Set parentSkills = FamilyTree.getParents(skill); - for (SkillType parentSkill : parentSkills) { + for (PrimarySkill parentSkill : parentSkills) { profile.addLevels(parentSkill, (levels / parentSkills.size())); } @@ -624,12 +624,12 @@ public final class ExperienceAPI { */ public static void addLevelOffline(UUID uuid, String skillType, int levels) { PlayerProfile profile = getOfflineProfile(uuid); - SkillType skill = getSkillType(skillType); + PrimarySkill skill = getSkillType(skillType); if (skill.isChildSkill()) { - Set parentSkills = FamilyTree.getParents(skill); + Set parentSkills = FamilyTree.getParents(skill); - for (SkillType parentSkill : parentSkills) { + for (PrimarySkill parentSkill : parentSkills) { profile.addLevels(parentSkill, (levels / parentSkills.size())); } @@ -716,7 +716,7 @@ public final class ExperienceAPI { int powerLevel = 0; PlayerProfile profile = getOfflineProfile(playerName); - for (SkillType type : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill type : PrimarySkill.NON_CHILD_SKILLS) { powerLevel += profile.getSkillLevel(type); } @@ -737,7 +737,7 @@ public final class ExperienceAPI { int powerLevel = 0; PlayerProfile profile = getOfflineProfile(uuid); - for (SkillType type : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill type : PrimarySkill.NON_CHILD_SKILLS) { powerLevel += profile.getSkillLevel(type); } @@ -1015,7 +1015,7 @@ public final class ExperienceAPI { } // Utility methods follow. - private static void addOfflineXP(UUID playerUniqueId, SkillType skill, int XP) { + private static void addOfflineXP(UUID playerUniqueId, PrimarySkill skill, int XP) { PlayerProfile profile = getOfflineProfile(playerUniqueId); profile.addXp(skill, XP); @@ -1023,7 +1023,7 @@ public final class ExperienceAPI { } @Deprecated - private static void addOfflineXP(String playerName, SkillType skill, int XP) { + private static void addOfflineXP(String playerName, PrimarySkill skill, int XP) { PlayerProfile profile = getOfflineProfile(playerName); profile.addXp(skill, XP); @@ -1052,8 +1052,8 @@ public final class ExperienceAPI { return profile; } - private static SkillType getSkillType(String skillType) throws InvalidSkillException { - SkillType skill = SkillType.getSkill(skillType); + private static PrimarySkill getSkillType(String skillType) throws InvalidSkillException { + PrimarySkill skill = PrimarySkill.getSkill(skillType); if (skill == null) { throw new InvalidSkillException(); @@ -1062,8 +1062,8 @@ public final class ExperienceAPI { return skill; } - private static SkillType getNonChildSkillType(String skillType) throws InvalidSkillException, UnsupportedOperationException { - SkillType skill = getSkillType(skillType); + private static PrimarySkill getNonChildSkillType(String skillType) throws InvalidSkillException, UnsupportedOperationException { + PrimarySkill skill = getSkillType(skillType); if (skill.isChildSkill()) { throw new UnsupportedOperationException("Child skills do not have XP"); diff --git a/src/main/java/com/gmail/nossr50/api/SkillAPI.java b/src/main/java/com/gmail/nossr50/api/SkillAPI.java index 6565a7cb1..728b7cb9e 100644 --- a/src/main/java/com/gmail/nossr50/api/SkillAPI.java +++ b/src/main/java/com/gmail/nossr50/api/SkillAPI.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; public final class SkillAPI { private SkillAPI() {} @@ -18,7 +18,7 @@ public final class SkillAPI { * @return a list of strings with valid skill names */ public static List getSkills() { - return getListFromEnum(Arrays.asList(SkillType.values())); + return getListFromEnum(Arrays.asList(PrimarySkill.values())); } /** @@ -30,7 +30,7 @@ public final class SkillAPI { * @return a list of strings with valid skill names */ public static List getNonChildSkills() { - return getListFromEnum(SkillType.NON_CHILD_SKILLS); + return getListFromEnum(PrimarySkill.NON_CHILD_SKILLS); } /** @@ -42,7 +42,7 @@ public final class SkillAPI { * @return a list of strings with valid skill names */ public static List getChildSkills() { - return getListFromEnum(SkillType.CHILD_SKILLS); + return getListFromEnum(PrimarySkill.CHILD_SKILLS); } /** @@ -54,7 +54,7 @@ public final class SkillAPI { * @return a list of strings with valid skill names */ public static List getCombatSkills() { - return getListFromEnum(SkillType.COMBAT_SKILLS); + return getListFromEnum(PrimarySkill.COMBAT_SKILLS); } /** @@ -66,7 +66,7 @@ public final class SkillAPI { * @return a list of strings with valid skill names */ public static List getGatheringSkills() { - return getListFromEnum(SkillType.GATHERING_SKILLS); + return getListFromEnum(PrimarySkill.GATHERING_SKILLS); } /** @@ -78,14 +78,14 @@ public final class SkillAPI { * @return a list of strings with valid skill names */ public static List getMiscSkills() { - return getListFromEnum(SkillType.MISC_SKILLS); + return getListFromEnum(PrimarySkill.MISC_SKILLS); } - private static List getListFromEnum(List skillsTypes) { + private static List getListFromEnum(List skillsTypes) { List skills = new ArrayList(); - for (SkillType skillType : skillsTypes) { - skills.add(skillType.name()); + for (PrimarySkill primarySkill : skillsTypes) { + skills.add(primarySkill.name()); } return skills; 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 85121d3fe..d85bd3218 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/AddlevelsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/AddlevelsCommand.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.commands.experience; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.EventUtils; @@ -22,7 +22,7 @@ public class AddlevelsCommand extends ExperienceCommand { } @Override - protected void handleCommand(Player player, PlayerProfile profile, SkillType skill, int value) { + protected void handleCommand(Player player, PlayerProfile profile, PrimarySkill skill, int value) { float xpRemoved = profile.getSkillXpLevelRaw(skill); profile.addLevels(skill, value); @@ -40,7 +40,7 @@ public class AddlevelsCommand extends ExperienceCommand { } @Override - protected void handlePlayerMessageSkill(Player player, int value, SkillType skill) { + protected void handlePlayerMessageSkill(Player player, int value, PrimarySkill skill) { player.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardSkill.1", value, skill.getName())); } } 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 b4358f8be..dc74ec7b4 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/AddxpCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/AddxpCommand.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.commands.experience; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; @@ -22,7 +22,7 @@ public class AddxpCommand extends ExperienceCommand { } @Override - protected void handleCommand(Player player, PlayerProfile profile, SkillType skill, int value) { + protected void handleCommand(Player player, PlayerProfile profile, PrimarySkill skill, int value) { if (player != null) { UserManager.getPlayer(player).applyXpGain(skill, value, XPGainReason.COMMAND); } @@ -38,7 +38,7 @@ public class AddxpCommand extends ExperienceCommand { } @Override - protected void handlePlayerMessageSkill(Player player, int value, SkillType skill) { + protected void handlePlayerMessageSkill(Player player, int value, PrimarySkill skill) { player.sendMessage(LocaleLoader.getString("Commands.addxp.AwardSkill", value, skill.getName())); } } diff --git a/src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java b/src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java index bf0e0c37a..32b24c3e4 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/ExperienceCommand.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -14,7 +15,6 @@ import org.bukkit.util.StringUtil; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.player.UserManager; @@ -23,7 +23,7 @@ import com.google.common.collect.ImmutableList; public abstract class ExperienceCommand implements TabExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - SkillType skill; + PrimarySkill skill; switch (args.length) { case 2: @@ -40,7 +40,7 @@ public abstract class ExperienceCommand implements TabExecutor { return true; } - skill = SkillType.getSkill(args[0]); + skill = PrimarySkill.getSkill(args[0]); if (args[1].equalsIgnoreCase("all")) { skill = null; @@ -65,7 +65,7 @@ public abstract class ExperienceCommand implements TabExecutor { return true; } - skill = SkillType.getSkill(args[1]); + skill = PrimarySkill.getSkill(args[1]); if (args[1].equalsIgnoreCase("all")) { skill = null; @@ -116,7 +116,7 @@ public abstract class ExperienceCommand implements TabExecutor { List playerNames = CommandUtils.getOnlinePlayerNames(sender); return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList(playerNames.size())); case 2: - return StringUtil.copyPartialMatches(args[1], SkillType.SKILL_NAMES, new ArrayList(SkillType.SKILL_NAMES.size())); + return StringUtil.copyPartialMatches(args[1], PrimarySkill.SKILL_NAMES, new ArrayList(PrimarySkill.SKILL_NAMES.size())); default: return ImmutableList.of(); } @@ -124,15 +124,15 @@ public abstract class ExperienceCommand implements TabExecutor { protected abstract boolean permissionsCheckSelf(CommandSender sender); protected abstract boolean permissionsCheckOthers(CommandSender sender); - protected abstract void handleCommand(Player player, PlayerProfile profile, SkillType skill, int value); + protected abstract void handleCommand(Player player, PlayerProfile profile, PrimarySkill skill, int value); protected abstract void handlePlayerMessageAll(Player player, int value); - protected abstract void handlePlayerMessageSkill(Player player, int value, SkillType skill); + protected abstract void handlePlayerMessageSkill(Player player, int value, PrimarySkill skill); private boolean validateArguments(CommandSender sender, String skillName, String value) { return !(CommandUtils.isInvalidInteger(sender, value) || (!skillName.equalsIgnoreCase("all") && CommandUtils.isInvalidSkill(sender, skillName))); } - protected static void handleSenderMessage(CommandSender sender, String playerName, SkillType skill) { + protected static void handleSenderMessage(CommandSender sender, String playerName, PrimarySkill skill) { if (skill == null) { sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.2", playerName)); } @@ -141,10 +141,10 @@ public abstract class ExperienceCommand implements TabExecutor { } } - protected void editValues(Player player, PlayerProfile profile, SkillType skill, int value) { + protected void editValues(Player player, PlayerProfile profile, PrimarySkill skill, int value) { if (skill == null) { - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - handleCommand(player, profile, skillType, value); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + handleCommand(player, profile, primarySkill, value); } if (player != null) { 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 6041e0576..759b318c6 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/MmoeditCommand.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.commands.experience; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.EventUtils; @@ -22,7 +22,7 @@ public class MmoeditCommand extends ExperienceCommand { } @Override - protected void handleCommand(Player player, PlayerProfile profile, SkillType skill, int value) { + protected void handleCommand(Player player, PlayerProfile profile, PrimarySkill skill, int value) { int skillLevel = profile.getSkillLevel(skill); float xpRemoved = profile.getSkillXpLevelRaw(skill); @@ -46,7 +46,7 @@ public class MmoeditCommand extends ExperienceCommand { } @Override - protected void handlePlayerMessageSkill(Player player, int value, SkillType skill) { + protected void handlePlayerMessageSkill(Player player, int value, PrimarySkill skill) { player.sendMessage(LocaleLoader.getString("Commands.mmoedit.Modified.1", skill.getName(), value)); } } 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 db705fa1a..0efd84cb8 100644 --- a/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/experience/SkillresetCommand.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.OfflinePlayer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -14,7 +15,6 @@ import org.bukkit.util.StringUtil; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.EventUtils; @@ -30,7 +30,7 @@ import com.google.common.collect.ImmutableList; public class SkillresetCommand implements TabExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - SkillType skill; + PrimarySkill skill; switch (args.length) { case 1: if (CommandUtils.noConsoleUsage(sender)) { @@ -50,7 +50,7 @@ public class SkillresetCommand implements TabExecutor { skill = null; } else { - skill = SkillType.getSkill(args[1]); + skill = PrimarySkill.getSkill(args[1]); } editValues((Player) sender, UserManager.getPlayer(sender.getName()).getProfile(), skill); @@ -70,7 +70,7 @@ public class SkillresetCommand implements TabExecutor { skill = null; } else { - skill = SkillType.getSkill(args[1]); + skill = PrimarySkill.getSkill(args[1]); } String playerName = CommandUtils.getMatchedPlayerName(args[0]); @@ -110,13 +110,13 @@ public class SkillresetCommand implements TabExecutor { List playerNames = CommandUtils.getOnlinePlayerNames(sender); return StringUtil.copyPartialMatches(args[0], playerNames, new ArrayList(playerNames.size())); case 2: - return StringUtil.copyPartialMatches(args[1], SkillType.SKILL_NAMES, new ArrayList(SkillType.SKILL_NAMES.size())); + return StringUtil.copyPartialMatches(args[1], PrimarySkill.SKILL_NAMES, new ArrayList(PrimarySkill.SKILL_NAMES.size())); default: return ImmutableList.of(); } } - protected void handleCommand(Player player, PlayerProfile profile, SkillType skill) { + protected void handleCommand(Player player, PlayerProfile profile, PrimarySkill skill) { int levelsRemoved = profile.getSkillLevel(skill); float xpRemoved = profile.getSkillXpLevelRaw(skill); @@ -142,7 +142,7 @@ public class SkillresetCommand implements TabExecutor { player.sendMessage(LocaleLoader.getString("Commands.Reset.All")); } - protected void handlePlayerMessageSkill(Player player, SkillType skill) { + protected void handlePlayerMessageSkill(Player player, PrimarySkill skill) { player.sendMessage(LocaleLoader.getString("Commands.Reset.Single", skill.getName())); } @@ -150,7 +150,7 @@ public class SkillresetCommand implements TabExecutor { return skillName.equalsIgnoreCase("all") || !CommandUtils.isInvalidSkill(sender, skillName); } - protected static void handleSenderMessage(CommandSender sender, String playerName, SkillType skill) { + protected static void handleSenderMessage(CommandSender sender, String playerName, PrimarySkill skill) { if (skill == null) { sender.sendMessage(LocaleLoader.getString("Commands.addlevels.AwardAll.2", playerName)); } @@ -159,10 +159,10 @@ public class SkillresetCommand implements TabExecutor { } } - protected void editValues(Player player, PlayerProfile profile, SkillType skill) { + protected void editValues(Player player, PlayerProfile profile, PrimarySkill skill) { if (skill == null) { - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - handleCommand(player, profile, skillType); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + handleCommand(player, profile, primarySkill); } if (player != null) { diff --git a/src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreCommand.java b/src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreCommand.java index bf0b17aa9..d51bbf96c 100644 --- a/src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreCommand.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.commands.hardcore; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.CommandSender; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; @@ -20,10 +20,10 @@ public class HardcoreCommand extends HardcoreModeCommand { } @Override - protected boolean checkEnabled(SkillType skill) { + protected boolean checkEnabled(PrimarySkill skill) { if (skill == null) { - for (SkillType skillType : SkillType.values()) { - if (!skillType.getHardcoreStatLossEnabled()) { + for (PrimarySkill primarySkill : PrimarySkill.values()) { + if (!primarySkill.getHardcoreStatLossEnabled()) { return false; } } @@ -35,12 +35,12 @@ public class HardcoreCommand extends HardcoreModeCommand { } @Override - protected void enable(SkillType skill) { + protected void enable(PrimarySkill skill) { toggle(true, skill); } @Override - protected void disable(SkillType skill) { + protected void disable(PrimarySkill skill) { toggle(false, skill); } @@ -50,10 +50,10 @@ public class HardcoreCommand extends HardcoreModeCommand { sender.sendMessage(LocaleLoader.getString("Hardcore.DeathStatLoss.PercentageChanged", percent.format(newPercentage / 100.0D))); } - private void toggle(boolean enable, SkillType skill) { + private void toggle(boolean enable, PrimarySkill skill) { if (skill == null) { - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - skillType.setHardcoreStatLossEnabled(enable); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + primarySkill.setHardcoreStatLossEnabled(enable); } } else { diff --git a/src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreModeCommand.java b/src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreModeCommand.java index cbfa728d8..47e1f4dd8 100644 --- a/src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreModeCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/hardcore/HardcoreModeCommand.java @@ -4,12 +4,12 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.util.StringUtil; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.commands.CommandUtils; @@ -76,7 +76,7 @@ public abstract class HardcoreModeCommand implements TabExecutor { return true; } - SkillType skill = SkillType.getSkill(args[0]); + PrimarySkill skill = PrimarySkill.getSkill(args[0]); if (!CommandUtils.isChildSkill(sender, skill)) { return true; @@ -125,8 +125,8 @@ public abstract class HardcoreModeCommand implements TabExecutor { protected abstract boolean checkTogglePermissions(CommandSender sender); protected abstract boolean checkModifyPermissions(CommandSender sender); - protected abstract boolean checkEnabled(SkillType skill); - protected abstract void enable(SkillType skill); - protected abstract void disable(SkillType skill); + protected abstract boolean checkEnabled(PrimarySkill skill); + protected abstract void enable(PrimarySkill skill); + protected abstract void disable(PrimarySkill skill); protected abstract void modify(CommandSender sender, double newPercentage); } diff --git a/src/main/java/com/gmail/nossr50/commands/hardcore/VampirismCommand.java b/src/main/java/com/gmail/nossr50/commands/hardcore/VampirismCommand.java index b3380463a..e85aa6e4c 100644 --- a/src/main/java/com/gmail/nossr50/commands/hardcore/VampirismCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/hardcore/VampirismCommand.java @@ -4,7 +4,7 @@ import org.bukkit.command.CommandSender; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; @@ -20,10 +20,10 @@ public class VampirismCommand extends HardcoreModeCommand { } @Override - protected boolean checkEnabled(SkillType skill) { + protected boolean checkEnabled(PrimarySkill skill) { if (skill == null) { - for (SkillType skillType : SkillType.values()) { - if (!skillType.getHardcoreVampirismEnabled()) { + for (PrimarySkill primarySkill : PrimarySkill.values()) { + if (!primarySkill.getHardcoreVampirismEnabled()) { return false; } } @@ -35,12 +35,12 @@ public class VampirismCommand extends HardcoreModeCommand { } @Override - protected void enable(SkillType skill) { + protected void enable(PrimarySkill skill) { toggle(true, skill); } @Override - protected void disable(SkillType skill) { + protected void disable(PrimarySkill skill) { toggle(false, skill); } @@ -50,10 +50,10 @@ public class VampirismCommand extends HardcoreModeCommand { sender.sendMessage(LocaleLoader.getString("Hardcore.Vampirism.PercentageChanged", percent.format(newPercentage / 100.0D))); } - private void toggle(boolean enable, SkillType skill) { + private void toggle(boolean enable, PrimarySkill skill) { if (skill == null) { - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - skillType.setHardcoreVampirismEnabled(enable); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + primarySkill.setHardcoreVampirismEnabled(enable); } } else { diff --git a/src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java b/src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java index 78c19d907..9fcde0739 100644 --- a/src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/player/InspectCommand.java @@ -3,6 +3,7 @@ package com.gmail.nossr50.commands.player; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; @@ -13,7 +14,6 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.commands.CommandUtils; @@ -53,17 +53,17 @@ public class InspectCommand implements TabExecutor { sender.sendMessage(LocaleLoader.getString("Inspect.OfflineStats", playerName)); sender.sendMessage(LocaleLoader.getString("Stats.Header.Gathering")); - for (SkillType skill : SkillType.GATHERING_SKILLS) { + for (PrimarySkill skill : PrimarySkill.GATHERING_SKILLS) { sender.sendMessage(CommandUtils.displaySkill(profile, skill)); } sender.sendMessage(LocaleLoader.getString("Stats.Header.Combat")); - for (SkillType skill : SkillType.COMBAT_SKILLS) { + for (PrimarySkill skill : PrimarySkill.COMBAT_SKILLS) { sender.sendMessage(CommandUtils.displaySkill(profile, skill)); } sender.sendMessage(LocaleLoader.getString("Stats.Header.Misc")); - for (SkillType skill : SkillType.MISC_SKILLS) { + for (PrimarySkill skill : PrimarySkill.MISC_SKILLS) { sender.sendMessage(CommandUtils.displaySkill(profile, skill)); } diff --git a/src/main/java/com/gmail/nossr50/commands/player/MccooldownCommand.java b/src/main/java/com/gmail/nossr50/commands/player/MccooldownCommand.java index e55159901..1e6a306b4 100644 --- a/src/main/java/com/gmail/nossr50/commands/player/MccooldownCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/player/MccooldownCommand.java @@ -2,6 +2,7 @@ package com.gmail.nossr50.commands.player; import java.util.List; +import com.gmail.nossr50.datatypes.skills.SuperAbility; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; @@ -9,7 +10,6 @@ import org.bukkit.entity.Player; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.commands.CommandUtils; import com.gmail.nossr50.util.player.UserManager; @@ -45,7 +45,7 @@ public class MccooldownCommand implements TabExecutor { player.sendMessage(LocaleLoader.getString("Commands.Cooldowns.Header")); player.sendMessage(LocaleLoader.getString("mcMMO.NoSkillNote")); - for (AbilityType ability : AbilityType.values()) { + for (SuperAbility ability : SuperAbility.values()) { if (!ability.getPermissions(player)) { continue; } diff --git a/src/main/java/com/gmail/nossr50/commands/player/MctopCommand.java b/src/main/java/com/gmail/nossr50/commands/player/MctopCommand.java index 4a6f29707..f80ed914c 100644 --- a/src/main/java/com/gmail/nossr50/commands/player/MctopCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/player/MctopCommand.java @@ -2,7 +2,7 @@ package com.gmail.nossr50.commands.player; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.commands.MctopCommandAsyncTask; @@ -24,7 +24,7 @@ import java.util.List; public class MctopCommand implements TabExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - SkillType skill = null; + PrimarySkill skill = null; switch (args.length) { case 0: @@ -69,13 +69,13 @@ public class MctopCommand implements TabExecutor { public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { switch (args.length) { case 1: - return StringUtil.copyPartialMatches(args[0], SkillType.SKILL_NAMES, new ArrayList(SkillType.SKILL_NAMES.size())); + return StringUtil.copyPartialMatches(args[0], PrimarySkill.SKILL_NAMES, new ArrayList(PrimarySkill.SKILL_NAMES.size())); default: return ImmutableList.of(); } } - private void display(int page, SkillType skill, CommandSender sender, Command command) { + private void display(int page, PrimarySkill skill, CommandSender sender, Command command) { if (skill != null && !Permissions.mctop(sender, skill)) { sender.sendMessage(command.getPermissionMessage()); return; @@ -112,19 +112,19 @@ public class MctopCommand implements TabExecutor { display(page, skill, sender); } - private void display(int page, SkillType skill, CommandSender sender) { + private void display(int page, PrimarySkill skill, CommandSender sender) { boolean useBoard = (sender instanceof Player) && (Config.getInstance().getTopUseBoard()); boolean useChat = !useBoard || Config.getInstance().getTopUseChat(); new MctopCommandAsyncTask(page, skill, sender, useBoard, useChat).runTaskAsynchronously(mcMMO.p); } - private SkillType extractSkill(CommandSender sender, String skillName) { + private PrimarySkill extractSkill(CommandSender sender, String skillName) { if (CommandUtils.isInvalidSkill(sender, skillName)) { return null; } - SkillType skill = SkillType.getSkill(skillName); + PrimarySkill skill = PrimarySkill.getSkill(skillName); if (CommandUtils.isChildSkill(sender, skill)) { return null; diff --git a/src/main/java/com/gmail/nossr50/commands/server/Mcmmoupgrade.java b/src/main/java/com/gmail/nossr50/commands/server/Mcmmoupgrade.java new file mode 100644 index 000000000..8fe4ef496 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/commands/server/Mcmmoupgrade.java @@ -0,0 +1,15 @@ +package com.gmail.nossr50.commands.server; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; + +/** + * This command facilitates switching the skill system scale between classic and modern scale + */ +public class Mcmmoupgrade implements CommandExecutor { + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + return false; + } +} diff --git a/src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java index 5bc3aa0b4..b15945c4f 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java @@ -3,10 +3,10 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; @@ -23,28 +23,28 @@ public class AcrobaticsCommand extends SkillCommand { private boolean canGracefulRoll; public AcrobaticsCommand() { - super(SkillType.ACROBATICS); + super(PrimarySkill.ACROBATICS); } @Override protected void dataCalculations(Player player, float skillValue, boolean isLucky) { - // DODGE + // ACROBATICS_DODGE if (canDodge) { - String[] dodgeStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.DODGE, isLucky); + String[] dodgeStrings = calculateAbilityDisplayValues(skillValue, SubSkill.ACROBATICS_DODGE, isLucky); dodgeChance = dodgeStrings[0]; dodgeChanceLucky = dodgeStrings[1]; } - // ROLL + // ACROBATICS_ROLL if (canRoll) { - String[] rollStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.ROLL, isLucky); + String[] rollStrings = calculateAbilityDisplayValues(skillValue, SubSkill.ACROBATICS_ROLL, isLucky); rollChance = rollStrings[0]; rollChanceLucky = rollStrings[1]; } - // GRACEFUL ROLL + // GRACEFUL ACROBATICS_ROLL if (canGracefulRoll) { - String[] gracefulRollStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.GRACEFUL_ROLL, isLucky); + String[] gracefulRollStrings = calculateAbilityDisplayValues(skillValue, SubSkill.ACROBATICS_GRACEFUL_ROLL, isLucky); gracefulRollChance = gracefulRollStrings[0]; gracefulRollChanceLucky = gracefulRollStrings[1]; } @@ -52,9 +52,9 @@ public class AcrobaticsCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canDodge = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.DODGE); - canRoll = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ROLL); - canGracefulRoll = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.GRACEFUL_ROLL); + canDodge = Permissions.isSubSkillEnabled(player, SubSkill.ACROBATICS_DODGE); + canRoll = Permissions.isSubSkillEnabled(player, SubSkill.ACROBATICS_ROLL); + canGracefulRoll = Permissions.isSubSkillEnabled(player, SubSkill.ACROBATICS_GRACEFUL_ROLL); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/AlchemyCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/AlchemyCommand.java index 1853a4083..3b4a88885 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/AlchemyCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/AlchemyCommand.java @@ -3,11 +3,11 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; import com.gmail.nossr50.config.AdvancedConfig; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.alchemy.Alchemy.Tier; import com.gmail.nossr50.skills.alchemy.AlchemyManager; @@ -26,7 +26,7 @@ public class AlchemyCommand extends SkillCommand { private boolean canConcoctions; public AlchemyCommand() { - super(SkillType.ALCHEMY); + super(PrimarySkill.ALCHEMY); } protected String[] calculateAbilityDisplayValues(Player player, boolean isLucky) { @@ -41,14 +41,14 @@ public class AlchemyCommand extends SkillCommand { @Override protected void dataCalculations(Player player, float skillValue, boolean isLucky) { - // CATALYSIS + // ALCHEMY_CATALYSIS if (canCatalysis) { String[] catalysisStrings = calculateAbilityDisplayValues(player, isLucky); brewSpeed = catalysisStrings[0]; brewSpeedLucky = catalysisStrings[1]; } - // CONCOCTIONS + // ALCHEMY_CONCOCTIONS if (canConcoctions) { AlchemyManager alchemyManager = UserManager.getPlayer(player).getAlchemyManager(); tier = alchemyManager.getTier(); @@ -59,8 +59,8 @@ public class AlchemyCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canCatalysis = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.CATALYSIS); - canConcoctions = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.CONCOCTIONS); + canCatalysis = Permissions.isSubSkillEnabled(player, SubSkill.ALCHEMY_CATALYSIS); + canConcoctions = Permissions.isSubSkillEnabled(player, SubSkill.ALCHEMY_CONCOCTIONS); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java index 9ac0da7f5..ebd1dff46 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java @@ -3,10 +3,10 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.archery.Archery; import com.gmail.nossr50.util.Permissions; @@ -23,7 +23,7 @@ public class ArcheryCommand extends SkillCommand { private boolean canRetrieve; public ArcheryCommand() { - super(SkillType.ARCHERY); + super(PrimarySkill.ARCHERY); } @Override @@ -34,16 +34,16 @@ public class ArcheryCommand extends SkillCommand { skillShotBonus = percent.format(Math.min(bonus, Archery.skillShotMaxBonusPercentage)); } - // DAZE + // ARCHERY_DAZE if (canDaze) { - String[] dazeStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.DAZE, isLucky); + String[] dazeStrings = calculateAbilityDisplayValues(skillValue, SubSkill.ARCHERY_DAZE, isLucky); dazeChance = dazeStrings[0]; dazeChanceLucky = dazeStrings[1]; } - // RETRIEVE + // ARCHERY_RETRIEVE if (canRetrieve) { - String[] retrieveStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.RETRIEVE, isLucky); + String[] retrieveStrings = calculateAbilityDisplayValues(skillValue, SubSkill.ARCHERY_RETRIEVE, isLucky); retrieveChance = retrieveStrings[0]; retrieveChanceLucky = retrieveStrings[1]; } @@ -51,9 +51,9 @@ public class ArcheryCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canSkillShot = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SKILL_SHOT); - canDaze = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.DAZE); - canRetrieve = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.RETRIEVE); + canSkillShot = Permissions.isSubSkillEnabled(player, SubSkill.ARCHERY_SKILL_SHOT); + canDaze = Permissions.isSubSkillEnabled(player, SubSkill.ARCHERY_DAZE); + canRetrieve = Permissions.isSubSkillEnabled(player, SubSkill.ARCHERY_RETRIEVE); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java index 0916a0c21..9ee25921b 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java @@ -3,10 +3,10 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.axes.Axes; import com.gmail.nossr50.util.Permissions; @@ -26,7 +26,7 @@ public class AxesCommand extends SkillCommand { private boolean canGreaterImpact; public AxesCommand() { - super(SkillType.AXES); + super(PrimarySkill.AXES); } @Override @@ -45,7 +45,7 @@ public class AxesCommand extends SkillCommand { // CRITICAL HIT if (canCritical) { - String[] criticalHitStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.CRITICAL_HIT, isLucky); + String[] criticalHitStrings = calculateAbilityDisplayValues(skillValue, SubSkill.AXES_CRITICAL_HIT, isLucky); critChance = criticalHitStrings[0]; critChanceLucky = criticalHitStrings[1]; } @@ -59,10 +59,10 @@ public class AxesCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { canSkullSplitter = Permissions.skullSplitter(player); - canCritical = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.CRITICAL_HIT); - canAxeMastery = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.AXE_MASTERY); - canImpact = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ARMOR_IMPACT); - canGreaterImpact = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.GREATER_IMPACT); + canCritical = Permissions.isSubSkillEnabled(player, SubSkill.AXES_CRITICAL_HIT); + canAxeMastery = Permissions.isSubSkillEnabled(player, SubSkill.AXES_AXE_MASTERY); + canImpact = Permissions.isSubSkillEnabled(player, SubSkill.AXES_ARMOR_IMPACT); + canGreaterImpact = Permissions.isSubSkillEnabled(player, SubSkill.AXES_GREATER_IMPACT); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java index acc231d26..7cc161639 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java @@ -5,8 +5,8 @@ import java.util.List; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; @@ -18,7 +18,7 @@ public class ExcavationCommand extends SkillCommand { private boolean canTreasureHunt; public ExcavationCommand() { - super(SkillType.EXCAVATION); + super(PrimarySkill.EXCAVATION); } @Override @@ -34,7 +34,7 @@ public class ExcavationCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { canGigaDrill = Permissions.gigaDrillBreaker(player); - canTreasureHunt = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.EXCAVATION_TREASURE_HUNTER); + canTreasureHunt = Permissions.isSubSkillEnabled(player, SubSkill.EXCAVATION_TREASURE_HUNTER); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java index 72f6acf30..f7bc70c79 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java @@ -3,14 +3,14 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.Location; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.treasure.TreasureConfig; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.treasure.Rarity; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.fishing.Fishing; @@ -44,7 +44,7 @@ public class FishingCommand extends SkillCommand { private boolean canIceFish; public FishingCommand() { - super(SkillType.FISHING); + super(PrimarySkill.FISHING); } @Override @@ -76,7 +76,7 @@ public class FishingCommand extends SkillCommand { magicChance = percent.format(totalEnchantChance / 100.0); } - // SHAKE + // FISHING_SHAKE if (canShake) { String[] shakeStrings = calculateAbilityDisplayValues(UserManager.getPlayer(player).getFishingManager().getShakeProbability(), isLucky); shakeChance = shakeStrings[0]; @@ -111,12 +111,12 @@ public class FishingCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canTreasureHunt = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FISHING_TREASURE_HUNTER); - canMagicHunt = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.MAGIC_HUNTER); - canShake = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SHAKE); - canFishermansDiet = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FISHERMANS_DIET); - canMasterAngler = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.MASTER_ANGLER); - canIceFish = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ICE_FISHING); + canTreasureHunt = Permissions.isSubSkillEnabled(player, SubSkill.FISHING_TREASURE_HUNTER); + canMagicHunt = Permissions.isSubSkillEnabled(player, SubSkill.FISHING_MAGIC_HUNTER); + canShake = Permissions.isSubSkillEnabled(player, SubSkill.FISHING_SHAKE); + canFishermansDiet = Permissions.isSubSkillEnabled(player, SubSkill.FISHING_FISHERMANS_DIET); + canMasterAngler = Permissions.isSubSkillEnabled(player, SubSkill.FISHING_MASTER_ANGLER); + canIceFish = Permissions.isSubSkillEnabled(player, SubSkill.FISHING_ICE_FISHING); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java index c26a3abd1..d796bb2a2 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.commands.skills; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.herbalism.Herbalism; import com.gmail.nossr50.util.Permissions; @@ -34,7 +34,7 @@ public class HerbalismCommand extends SkillCommand { private boolean canShroomThumb; public HerbalismCommand() { - super(SkillType.HERBALISM); + super(PrimarySkill.HERBALISM); } @Override @@ -55,28 +55,28 @@ public class HerbalismCommand extends SkillCommand { if (canGreenThumbBlocks || canGreenThumbPlants) { greenThumbStage = calculateRank(skillValue, Herbalism.greenThumbStageMaxLevel, Herbalism.greenThumbStageChangeLevel); - String[] greenThumbStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.GREEN_THUMB_PLANT, isLucky); + String[] greenThumbStrings = calculateAbilityDisplayValues(skillValue, SubSkill.HERBALISM_GREEN_THUMB, isLucky); greenThumbChance = greenThumbStrings[0]; greenThumbChanceLucky = greenThumbStrings[1]; } // DOUBLE DROPS if (canDoubleDrop) { - String[] doubleDropStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.HERBALISM_DOUBLE_DROPS, isLucky); + String[] doubleDropStrings = calculateAbilityDisplayValues(skillValue, SubSkill.HERBALISM_DOUBLE_DROPS, isLucky); doubleDropChance = doubleDropStrings[0]; doubleDropChanceLucky = doubleDropStrings[1]; } // HYLIAN LUCK if (hasHylianLuck) { - String[] hylianLuckStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.HYLIAN_LUCK, isLucky); + String[] hylianLuckStrings = calculateAbilityDisplayValues(skillValue, SubSkill.HERBALISM_HYLIAN_LUCK, isLucky); hylianLuckChance = hylianLuckStrings[0]; hylianLuckChanceLucky = hylianLuckStrings[1]; } // SHROOM THUMB if (canShroomThumb) { - String[] shroomThumbStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.SHROOM_THUMB, isLucky); + String[] shroomThumbStrings = calculateAbilityDisplayValues(skillValue, SubSkill.HERBALISM_SHROOM_THUMB, isLucky); shroomThumbChance = shroomThumbStrings[0]; shroomThumbChanceLucky = shroomThumbStrings[1]; } @@ -84,13 +84,13 @@ public class HerbalismCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - hasHylianLuck = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.HYLIAN_LUCK); + hasHylianLuck = Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_HYLIAN_LUCK); canGreenTerra = Permissions.greenTerra(player); canGreenThumbPlants = Permissions.greenThumbPlant(player, Material.WHEAT) || Permissions.greenThumbPlant(player, Material.CARROT) || Permissions.greenThumbPlant(player, Material.POTATO) || Permissions.greenThumbPlant(player, Material.BEETROOT) || Permissions.greenThumbPlant(player, Material.NETHER_WART) || Permissions.greenThumbPlant(player, Material.COCOA); canGreenThumbBlocks = Permissions.greenThumbBlock(player, Material.DIRT) || Permissions.greenThumbBlock(player, Material.COBBLESTONE) || Permissions.greenThumbBlock(player, Material.COBBLESTONE_WALL) || Permissions.greenThumbBlock(player, Material.STONE_BRICKS); - canFarmersDiet = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FARMERS_DIET); - canDoubleDrop = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.HERBALISM_DOUBLE_DROPS) && !skill.getDoubleDropsDisabled(); - canShroomThumb = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SHROOM_THUMB); + canFarmersDiet = Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_FARMERS_DIET); + canDoubleDrop = Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_DOUBLE_DROPS) && !skill.getDoubleDropsDisabled(); + canShroomThumb = Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_SHROOM_THUMB); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java index bf5cab61f..211bbb32c 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java @@ -3,11 +3,11 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; import com.gmail.nossr50.config.AdvancedConfig; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.mining.BlastMining; import com.gmail.nossr50.skills.mining.BlastMining.Tier; @@ -35,7 +35,7 @@ public class MiningCommand extends SkillCommand { private boolean canDemoExpert; public MiningCommand() { - super(SkillType.MINING); + super(PrimarySkill.MINING); } @Override @@ -49,7 +49,7 @@ public class MiningCommand extends SkillCommand { // DOUBLE DROPS if (canDoubleDrop) { - String[] doubleDropStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.MINING_DOUBLE_DROPS, isLucky); + String[] doubleDropStrings = calculateAbilityDisplayValues(skillValue, SubSkill.MINING_DOUBLE_DROPS, isLucky); doubleDropChance = doubleDropStrings[0]; doubleDropChanceLucky = doubleDropStrings[1]; } @@ -72,7 +72,7 @@ public class MiningCommand extends SkillCommand { canBiggerBombs = Permissions.biggerBombs(player); canBlast = Permissions.remoteDetonation(player); canDemoExpert = Permissions.demolitionsExpertise(player); - canDoubleDrop = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.MINING_DOUBLE_DROPS) && !skill.getDoubleDropsDisabled(); + canDoubleDrop = Permissions.isSubSkillEnabled(player, SubSkill.MINING_DOUBLE_DROPS) && !skill.getDoubleDropsDisabled(); canSuperBreaker = Permissions.superBreaker(player); } diff --git a/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java index 02c6ab7f9..f16b597d6 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java @@ -1,8 +1,8 @@ package com.gmail.nossr50.commands.skills; import com.gmail.nossr50.datatypes.skills.MaterialType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.repair.ArcaneForging; @@ -41,7 +41,7 @@ public class RepairCommand extends SkillCommand { private int stoneLevel; public RepairCommand() { - super(SkillType.REPAIR); + super(PrimarySkill.REPAIR); } @Override @@ -65,7 +65,7 @@ public class RepairCommand extends SkillCommand { // SUPER REPAIR if (canSuperRepair) { - String[] superRepairStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.SUPER_REPAIR, isLucky); + String[] superRepairStrings = calculateAbilityDisplayValues(skillValue, SubSkill.REPAIR_SUPER_REPAIR, isLucky); superRepairChance = superRepairStrings[0]; superRepairChanceLucky = superRepairStrings[1]; } @@ -73,9 +73,9 @@ public class RepairCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canSuperRepair = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SUPER_REPAIR); - canMasterRepair = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.REPAIR_MASTERY); - canArcaneForge = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ARCANE_FORGING); + canSuperRepair = Permissions.isSubSkillEnabled(player, SubSkill.REPAIR_SUPER_REPAIR); + canMasterRepair = Permissions.isSubSkillEnabled(player, SubSkill.REPAIR_REPAIR_MASTERY); + canArcaneForge = Permissions.isSubSkillEnabled(player, SubSkill.REPAIR_ARCANE_FORGING); canRepairDiamond = Permissions.repairMaterialType(player, MaterialType.DIAMOND); canRepairGold = Permissions.repairMaterialType(player, MaterialType.GOLD); canRepairIron = Permissions.repairMaterialType(player, MaterialType.IRON); diff --git a/src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java index 67b245214..4b09ea46f 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java @@ -3,10 +3,10 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.salvage.Salvage; import com.gmail.nossr50.skills.salvage.SalvageManager; @@ -18,7 +18,7 @@ public class SalvageCommand extends SkillCommand { private boolean canArcaneSalvage; public SalvageCommand() { - super(SkillType.SALVAGE); + super(PrimarySkill.SALVAGE); } @Override @@ -29,8 +29,8 @@ public class SalvageCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canAdvancedSalvage = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ADVANCED_SALVAGE); - canArcaneSalvage = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ARCANE_SALVAGE); + canAdvancedSalvage = Permissions.isSubSkillEnabled(player, SubSkill.SALVAGE_ADVANCED_SALVAGE); + canArcaneSalvage = Permissions.isSubSkillEnabled(player, SubSkill.SALVAGE_ARCANE_SALVAGE); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java index 44c31af07..1b859f19b 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java @@ -4,6 +4,7 @@ import java.text.DecimalFormat; import java.util.List; import java.util.Set; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -13,8 +14,7 @@ import org.bukkit.entity.Player; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.util.Motd; @@ -28,7 +28,7 @@ import com.gmail.nossr50.util.skills.PerksUtils; import com.google.common.collect.ImmutableList; public abstract class SkillCommand implements TabExecutor { - protected SkillType skill; + protected PrimarySkill skill; private String skillName; protected DecimalFormat percent = new DecimalFormat("##0.00%"); @@ -36,7 +36,7 @@ public abstract class SkillCommand implements TabExecutor { private CommandExecutor skillGuideCommand; - public SkillCommand(SkillType skill) { + public SkillCommand(PrimarySkill skill) { this.skill = skill; skillName = skill.getName(); skillGuideCommand = new SkillGuideCommand(skill); @@ -79,9 +79,9 @@ public abstract class SkillCommand implements TabExecutor { player.sendMessage(LocaleLoader.getString("Effects.Child", (int) skillValue)); player.sendMessage(LocaleLoader.getString("Skills.Header", LocaleLoader.getString("Skills.Parents"))); - Set parents = FamilyTree.getParents(skill); + Set parents = FamilyTree.getParents(skill); - for (SkillType parent : parents) { + for (PrimarySkill parent : parents) { player.sendMessage(parent.getName() + " - " + LocaleLoader.getString("Effects.Level", mcMMOPlayer.getSkillLevel(parent), mcMMOPlayer.getSkillXpLevel(parent), mcMMOPlayer.getXpToLevel(parent))); } } @@ -141,10 +141,10 @@ public abstract class SkillCommand implements TabExecutor { return displayValues; } - protected String[] calculateAbilityDisplayValues(float skillValue, SecondaryAbility skillAbility, boolean isLucky) { - int maxBonusLevel = AdvancedConfig.getInstance().getMaxBonusLevel(skillAbility); + protected String[] calculateAbilityDisplayValues(float skillValue, SubSkill subSkill, boolean isLucky) { + int maxBonusLevel = AdvancedConfig.getInstance().getMaxBonusLevel(subSkill); - return calculateAbilityDisplayValues((AdvancedConfig.getInstance().getMaxChance(skillAbility) / maxBonusLevel) * Math.min(skillValue, maxBonusLevel), isLucky); + return calculateAbilityDisplayValues((AdvancedConfig.getInstance().getMaxChance(subSkill) / maxBonusLevel) * Math.min(skillValue, maxBonusLevel), isLucky); } protected String[] calculateLengthDisplayValues(Player player, float skillValue) { diff --git a/src/main/java/com/gmail/nossr50/commands/skills/SkillGuideCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SkillGuideCommand.java index 34024f06a..6f39198e5 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SkillGuideCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SkillGuideCommand.java @@ -7,7 +7,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.StringUtils; @@ -17,7 +17,7 @@ public class SkillGuideCommand implements CommandExecutor { private String invalidPage = LocaleLoader.getString("Guides.Page.Invalid"); - public SkillGuideCommand(SkillType skill) { + public SkillGuideCommand(PrimarySkill skill) { header = LocaleLoader.getString("Guides.Header", skill.getName()); guide = getGuide(skill); } @@ -86,7 +86,7 @@ public class SkillGuideCommand implements CommandExecutor { return allStrings; } - private ArrayList getGuide(SkillType skill) { + private ArrayList getGuide(PrimarySkill skill) { ArrayList guide = new ArrayList(); for (int i = 0; i < 10; i++) { diff --git a/src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java index ddb4604cd..c2ab266c8 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java @@ -3,11 +3,11 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; import com.gmail.nossr50.config.AdvancedConfig; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.smelting.Smelting; import com.gmail.nossr50.skills.smelting.Smelting.Tier; @@ -27,7 +27,7 @@ public class SmeltingCommand extends SkillCommand { private boolean canVanillaXPBoost; public SmeltingCommand() { - super(SkillType.SMELTING); + super(PrimarySkill.SMELTING); } @Override @@ -39,7 +39,7 @@ public class SmeltingCommand extends SkillCommand { // SECOND SMELT if (canSecondSmelt) { - String[] secondSmeltStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.SECOND_SMELT, isLucky); + String[] secondSmeltStrings = calculateAbilityDisplayValues(skillValue, SubSkill.SMELTING_SECOND_SMELT, isLucky); secondSmeltChance = secondSmeltStrings[0]; secondSmeltChanceLucky = secondSmeltStrings[1]; } @@ -54,9 +54,9 @@ public class SmeltingCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canFuelEfficiency = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FUEL_EFFICIENCY); - canSecondSmelt = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SECOND_SMELT); - canFluxMine = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FLUX_MINING); + canFuelEfficiency = Permissions.isSubSkillEnabled(player, SubSkill.SMELTING_FUEL_EFFICIENCY); + canSecondSmelt = Permissions.isSubSkillEnabled(player, SubSkill.SMELTING_SECOND_SMELT); + canFluxMine = Permissions.isSubSkillEnabled(player, SubSkill.SMELTING_FLUX_MINING); canVanillaXPBoost = Permissions.vanillaXpBoost(player, skill); } diff --git a/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java index bfd29ecac..703d8a74d 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java @@ -3,11 +3,11 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; import com.gmail.nossr50.config.AdvancedConfig; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.swords.Swords; import com.gmail.nossr50.util.Permissions; @@ -26,7 +26,7 @@ public class SwordsCommand extends SkillCommand { private boolean canBleed; public SwordsCommand() { - super(SkillType.SWORDS); + super(PrimarySkill.SWORDS); } @Override @@ -38,18 +38,18 @@ public class SwordsCommand extends SkillCommand { serratedStrikesLengthEndurance = serratedStrikesStrings[1]; } - // BLEED + // SWORDS_BLEED if (canBleed) { - bleedLength = (skillValue >= AdvancedConfig.getInstance().getMaxBonusLevel(SecondaryAbility.BLEED)) ? Swords.bleedMaxTicks : Swords.bleedBaseTicks; + bleedLength = (skillValue >= AdvancedConfig.getInstance().getMaxBonusLevel(SubSkill.SWORDS_BLEED)) ? Swords.bleedMaxTicks : Swords.bleedBaseTicks; - String[] bleedStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.BLEED, isLucky); + String[] bleedStrings = calculateAbilityDisplayValues(skillValue, SubSkill.SWORDS_BLEED, isLucky); bleedChance = bleedStrings[0]; bleedChanceLucky = bleedStrings[1]; } - // COUNTER + // SWORDS_COUNTER if (canCounter) { - String[] counterStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.COUNTER, isLucky); + String[] counterStrings = calculateAbilityDisplayValues(skillValue, SubSkill.SWORDS_COUNTER, isLucky); counterChance = counterStrings[0]; counterChanceLucky = counterStrings[1]; } @@ -57,8 +57,8 @@ public class SwordsCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canBleed = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.BLEED); - canCounter = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.COUNTER); + canBleed = Permissions.isSubSkillEnabled(player, SubSkill.SWORDS_BLEED); + canCounter = Permissions.isSubSkillEnabled(player, SubSkill.SWORDS_COUNTER); canSerratedStrike = Permissions.serratedStrikes(player); } diff --git a/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java index 92f60c2a4..0fb566c1a 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java @@ -3,12 +3,12 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import com.gmail.nossr50.config.Config; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.taming.Taming; import com.gmail.nossr50.util.Permissions; @@ -29,13 +29,13 @@ public class TamingCommand extends SkillCommand { private boolean canHolyHound; public TamingCommand() { - super(SkillType.TAMING); + super(PrimarySkill.TAMING); } @Override protected void dataCalculations(Player player, float skillValue, boolean isLucky) { if (canGore) { - String[] goreStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.GORE, isLucky); + String[] goreStrings = calculateAbilityDisplayValues(skillValue, SubSkill.TAMING_GORE, isLucky); goreChance = goreStrings[0]; goreChanceLucky = goreStrings[1]; } @@ -43,15 +43,15 @@ public class TamingCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canBeastLore = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.BEAST_LORE); + canBeastLore = Permissions.isSubSkillEnabled(player, SubSkill.TAMING_BEAST_LORE); canCallWild = Permissions.callOfTheWild(player, EntityType.HORSE) || Permissions.callOfTheWild(player, EntityType.WOLF) || Permissions.callOfTheWild(player, EntityType.OCELOT); - canEnvironmentallyAware = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ENVIRONMENTALLY_AWARE); - canFastFood = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FAST_FOOD); - canGore = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.GORE); - canSharpenedClaws = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SHARPENED_CLAWS); - canShockProof = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SHOCK_PROOF); - canThickFur = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.THICK_FUR); - canHolyHound = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.HOLY_HOUND); + canEnvironmentallyAware = Permissions.isSubSkillEnabled(player, SubSkill.TAMING_ENVIRONMENTALLY_AWARE); + canFastFood = Permissions.isSubSkillEnabled(player, SubSkill.TAMING_FAST_FOOD); + canGore = Permissions.isSubSkillEnabled(player, SubSkill.TAMING_GORE); + canSharpenedClaws = Permissions.isSubSkillEnabled(player, SubSkill.TAMING_SHARPENED_CLAWS); + canShockProof = Permissions.isSubSkillEnabled(player, SubSkill.TAMING_SHOCK_PROOF); + canThickFur = Permissions.isSubSkillEnabled(player, SubSkill.TAMING_THICK_FUR); + canHolyHound = Permissions.isSubSkillEnabled(player, SubSkill.TAMING_HOLY_HOUND); } @Override diff --git a/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java index 310af6e89..d2cf64430 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java @@ -3,10 +3,10 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.unarmed.Unarmed; import com.gmail.nossr50.util.Permissions; @@ -29,7 +29,7 @@ public class UnarmedCommand extends SkillCommand { private boolean canIronGrip; public UnarmedCommand() { - super(SkillType.UNARMED); + super(PrimarySkill.UNARMED); } @Override @@ -41,16 +41,16 @@ public class UnarmedCommand extends SkillCommand { berserkLengthEndurance = berserkStrings[1]; } - // DISARM + // UNARMED_DISARM if (canDisarm) { - String[] disarmStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.DISARM, isLucky); + String[] disarmStrings = calculateAbilityDisplayValues(skillValue, SubSkill.UNARMED_DISARM, isLucky); disarmChance = disarmStrings[0]; disarmChanceLucky = disarmStrings[1]; } - // DEFLECT + // UNARMED_DEFLECT if (canDeflect) { - String[] deflectStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.DEFLECT, isLucky); + String[] deflectStrings = calculateAbilityDisplayValues(skillValue, SubSkill.UNARMED_DEFLECT, isLucky); deflectChance = deflectStrings[0]; deflectChanceLucky = deflectStrings[1]; } @@ -62,7 +62,7 @@ public class UnarmedCommand extends SkillCommand { // IRON GRIP if (canIronGrip) { - String[] ironGripStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.IRON_GRIP, isLucky); + String[] ironGripStrings = calculateAbilityDisplayValues(skillValue, SubSkill.UNARMED_IRON_GRIP, isLucky); ironGripChance = ironGripStrings[0]; ironGripChanceLucky = ironGripStrings[1]; } @@ -71,10 +71,10 @@ public class UnarmedCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { canBerserk = Permissions.berserk(player); - canIronArm = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.IRON_ARM); - canDeflect = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.DEFLECT); - canDisarm = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.DISARM); - canIronGrip = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.IRON_GRIP); + canIronArm = Permissions.isSubSkillEnabled(player, SubSkill.UNARMED_IRON_ARM); + canDeflect = Permissions.isSubSkillEnabled(player, SubSkill.UNARMED_DEFLECT); + canDisarm = Permissions.isSubSkillEnabled(player, SubSkill.UNARMED_DISARM); + canIronGrip = Permissions.isSubSkillEnabled(player, SubSkill.UNARMED_IRON_GRIP); // TODO: Apparently we forgot about block cracker? } diff --git a/src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java b/src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java index 06ed32840..286bb92a6 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java @@ -3,11 +3,11 @@ package com.gmail.nossr50.commands.skills; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; import com.gmail.nossr50.config.AdvancedConfig; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Permissions; @@ -22,7 +22,7 @@ public class WoodcuttingCommand extends SkillCommand { private boolean canDoubleDrop; public WoodcuttingCommand() { - super(SkillType.WOODCUTTING); + super(PrimarySkill.WOODCUTTING); } @Override @@ -36,7 +36,7 @@ public class WoodcuttingCommand extends SkillCommand { // DOUBLE DROPS if (canDoubleDrop) { - String[] doubleDropStrings = calculateAbilityDisplayValues(skillValue, SecondaryAbility.WOODCUTTING_HARVEST, isLucky); + String[] doubleDropStrings = calculateAbilityDisplayValues(skillValue, SubSkill.WOODCUTTING_DOUBLE_DROPS, isLucky); doubleDropChance = doubleDropStrings[0]; doubleDropChanceLucky = doubleDropStrings[1]; } @@ -45,8 +45,8 @@ public class WoodcuttingCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { canTreeFell = Permissions.treeFeller(player); - canDoubleDrop = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.WOODCUTTING_HARVEST) && !skill.getDoubleDropsDisabled(); - canLeafBlow = Permissions.secondaryAbilityEnabled(player, SecondaryAbility.WOODCUTTING_LEAF_BLOWER); + canDoubleDrop = Permissions.isSubSkillEnabled(player, SubSkill.WOODCUTTING_DOUBLE_DROPS) && !skill.getDoubleDropsDisabled(); + canLeafBlow = Permissions.isSubSkillEnabled(player, SubSkill.WOODCUTTING_LEAF_BLOWER); } @Override diff --git a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java index 23da636d7..4da7f5845 100644 --- a/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java +++ b/src/main/java/com/gmail/nossr50/config/AdvancedConfig.java @@ -4,15 +4,13 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.skills.alchemy.Alchemy; import com.gmail.nossr50.skills.fishing.Fishing; import com.gmail.nossr50.skills.mining.BlastMining; import com.gmail.nossr50.skills.repair.ArcaneForging; import com.gmail.nossr50.skills.salvage.Salvage; import com.gmail.nossr50.skills.smelting.Smelting; -import com.gmail.nossr50.util.StringUtils; public class AdvancedConfig extends AutoUpdateConfigLoader { private static AdvancedConfig instance; @@ -45,11 +43,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { } /* ACROBATICS */ - if (getMaxChance(SecondaryAbility.DODGE) < 1) { + if (getMaxChance(SubSkill.ACROBATICS_DODGE) < 1) { reason.add("Skills.Acrobatics.Dodge.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.DODGE) < 1) { + if (getMaxBonusLevel(SubSkill.ACROBATICS_DODGE) < 1) { reason.add("Skills.Acrobatics.Dodge.MaxBonusLevel should be at least 1!"); } @@ -57,11 +55,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Acrobatics.Dodge.DamageModifier should be greater than 1!"); } - if (getMaxChance(SecondaryAbility.ROLL) < 1) { + if (getMaxChance(SubSkill.ACROBATICS_ROLL) < 1) { reason.add("Skills.Acrobatics.Roll.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.ROLL) < 1) { + if (getMaxBonusLevel(SubSkill.ACROBATICS_ROLL) < 1) { reason.add("Skills.Acrobatics.Roll.MaxBonusLevel should be at least 1!"); } @@ -69,11 +67,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Acrobatics.Roll.DamageThreshold should be at least 0!"); } - if (getMaxChance(SecondaryAbility.GRACEFUL_ROLL) < 1) { + if (getMaxChance(SubSkill.ACROBATICS_GRACEFUL_ROLL) < 1) { reason.add("Skills.Acrobatics.GracefulRoll.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.GRACEFUL_ROLL) < 1) { + if (getMaxBonusLevel(SubSkill.ACROBATICS_GRACEFUL_ROLL) < 1) { reason.add("Skills.Acrobatics.GracefulRoll.MaxBonusLevel should be at least 1!"); } @@ -126,11 +124,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Archery.SkillShot.MaxBonus should be at least 0!"); } - if (getMaxChance(SecondaryAbility.DAZE) < 1) { + if (getMaxChance(SubSkill.ARCHERY_DAZE) < 1) { reason.add("Skills.Acrobatics.Daze.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.DAZE) < 1) { + if (getMaxBonusLevel(SubSkill.ARCHERY_DAZE) < 1) { reason.add("Skills.Acrobatics.Daze.MaxBonusLevel should be at least 1!"); } @@ -138,11 +136,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Acrobatics.Daze.BonusDamage should be at least 0!"); } - if (getMaxChance(SecondaryAbility.RETRIEVE) < 1) { + if (getMaxChance(SubSkill.ARCHERY_RETRIEVE) < 1) { reason.add("Skills.Acrobatics.Retrieve.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.RETRIEVE) < 1) { + if (getMaxBonusLevel(SubSkill.ARCHERY_RETRIEVE) < 1) { reason.add("Skills.Acrobatics.Retrieve.MaxBonusLevel should be at least 1!"); } @@ -159,11 +157,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Axes.AxeMastery.MaxBonusLevel should be at least 1!"); } - if (getMaxChance(SecondaryAbility.CRITICAL_HIT) < 1) { + if (getMaxChance(SubSkill.AXES_CRITICAL_HIT) < 1) { reason.add("Skills.Axes.CriticalHit.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.CRITICAL_HIT) < 1) { + if (getMaxBonusLevel(SubSkill.AXES_CRITICAL_HIT) < 1) { reason.add("Skills.Axes.CriticalHit.MaxBonusLevel should be at least 1!"); } @@ -265,44 +263,44 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Herbalism.GreenThumb.StageChange should be at least 1!"); } - if (getMaxChance(SecondaryAbility.GREEN_THUMB_PLANT) < 1) { + if (getMaxChance(SubSkill.HERBALISM_GREEN_THUMB) < 1) { reason.add("Skills.Herbalism.GreenThumb.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.GREEN_THUMB_PLANT) < 1) { + if (getMaxBonusLevel(SubSkill.HERBALISM_GREEN_THUMB) < 1) { reason.add("Skills.Herbalism.GreenThumb.MaxBonusLevel should be at least 1!"); } - if (getMaxChance(SecondaryAbility.HERBALISM_DOUBLE_DROPS) < 1) { + if (getMaxChance(SubSkill.HERBALISM_DOUBLE_DROPS) < 1) { reason.add("Skills.Herbalism.DoubleDrops.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.HERBALISM_DOUBLE_DROPS) < 1) { + if (getMaxBonusLevel(SubSkill.HERBALISM_DOUBLE_DROPS) < 1) { reason.add("Skills.Herbalism.DoubleDrops.MaxBonusLevel should be at least 1!"); } - if (getMaxChance(SecondaryAbility.HYLIAN_LUCK) < 1) { + if (getMaxChance(SubSkill.HERBALISM_HYLIAN_LUCK) < 1) { reason.add("Skills.Herbalism.HylianLuck.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.HYLIAN_LUCK) < 1) { + if (getMaxBonusLevel(SubSkill.HERBALISM_HYLIAN_LUCK) < 1) { reason.add("Skills.Herbalism.HylianLuck.MaxBonusLevel should be at least 1!"); } - if (getMaxChance(SecondaryAbility.SHROOM_THUMB) < 1) { + if (getMaxChance(SubSkill.HERBALISM_SHROOM_THUMB) < 1) { reason.add("Skills.Herbalism.ShroomThumb.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.SHROOM_THUMB) < 1) { + if (getMaxBonusLevel(SubSkill.HERBALISM_SHROOM_THUMB) < 1) { reason.add("Skills.Herbalism.ShroomThumb.MaxBonusLevel should be at least 1!"); } /* MINING */ - if (getMaxChance(SecondaryAbility.MINING_DOUBLE_DROPS) < 1) { + if (getMaxChance(SubSkill.MINING_DOUBLE_DROPS) < 1) { reason.add("Skills.Mining.DoubleDrops.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.MINING_DOUBLE_DROPS) < 1) { + if (getMaxBonusLevel(SubSkill.MINING_DOUBLE_DROPS) < 1) { reason.add("Skills.Mining.DoubleDrops.MaxBonusLevel should be at least 1!"); } @@ -371,11 +369,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Repair.RepairMastery.MaxBonusLevel should be at least 1!"); } - if (getMaxChance(SecondaryAbility.SUPER_REPAIR) < 1) { + if (getMaxChance(SubSkill.REPAIR_SUPER_REPAIR) < 1) { reason.add("Skills.Repair.SuperRepair.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.SUPER_REPAIR) < 1) { + if (getMaxBonusLevel(SubSkill.REPAIR_SUPER_REPAIR) < 1) { reason.add("Skills.Repair.SuperRepair.MaxBonusLevel should be at least 1!"); } @@ -465,11 +463,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Smelting.FuelEfficiency.Multiplier should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.SECOND_SMELT) < 1) { + if (getMaxBonusLevel(SubSkill.SMELTING_SECOND_SMELT) < 1) { reason.add("Skills.Smelting.SecondSmelt.MaxBonusLevel should be at least 1!"); } - if (getMaxChance(SecondaryAbility.SECOND_SMELT) < 1) { + if (getMaxChance(SubSkill.SMELTING_SECOND_SMELT) < 1) { reason.add("Skills.Smelting.SecondSmelt.ChanceMax should be at least 1!"); } @@ -506,11 +504,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { } /* SWORDS */ - if (getMaxChance(SecondaryAbility.BLEED) < 1) { + if (getMaxChance(SubSkill.SWORDS_BLEED) < 1) { reason.add("Skills.Swords.Bleed.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.BLEED) < 1) { + if (getMaxBonusLevel(SubSkill.SWORDS_BLEED) < 1) { reason.add("Skills.Swords.Bleed.MaxBonusLevel should be at least 1!"); } @@ -526,11 +524,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Swords.Bleed.BaseTicks should be at least 1!"); } - if (getMaxChance(SecondaryAbility.COUNTER) < 1) { + if (getMaxChance(SubSkill.SWORDS_COUNTER) < 1) { reason.add("Skills.Swords.Counter.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.COUNTER) < 1) { + if (getMaxBonusLevel(SubSkill.SWORDS_COUNTER) < 1) { reason.add("Skills.Swords.Counter.MaxBonusLevel should be at least 1!"); } @@ -548,11 +546,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { /* TAMING */ - if (getMaxChance(SecondaryAbility.GORE) < 1) { + if (getMaxChance(SubSkill.TAMING_GORE) < 1) { reason.add("Skills.Taming.Gore.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.GORE) < 1) { + if (getMaxBonusLevel(SubSkill.TAMING_GORE) < 1) { reason.add("Skills.Taming.Gore.MaxBonusLevel should be at least 1!"); } @@ -609,27 +607,27 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { } /* UNARMED */ - if (getMaxChance(SecondaryAbility.DISARM) < 1) { + if (getMaxChance(SubSkill.UNARMED_DISARM) < 1) { reason.add("Skills.Unarmed.Disarm.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.DISARM) < 1) { + if (getMaxBonusLevel(SubSkill.UNARMED_DISARM) < 1) { reason.add("Skills.Unarmed.Disarm.MaxBonusLevel should be at least 1!"); } - if (getMaxChance(SecondaryAbility.DEFLECT) < 1) { + if (getMaxChance(SubSkill.UNARMED_DEFLECT) < 1) { reason.add("Skills.Unarmed.Deflect.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.DEFLECT) < 1) { + if (getMaxBonusLevel(SubSkill.UNARMED_DEFLECT) < 1) { reason.add("Skills.Unarmed.Deflect.MaxBonusLevel should be at least 1!"); } - if (getMaxChance(SecondaryAbility.IRON_GRIP) < 1) { + if (getMaxChance(SubSkill.UNARMED_IRON_GRIP) < 1) { reason.add("Skills.Unarmed.IronGrip.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.IRON_GRIP) < 1) { + if (getMaxBonusLevel(SubSkill.UNARMED_IRON_GRIP) < 1) { reason.add("Skills.Unarmed.IronGrip.MaxBonusLevel should be at least 1!"); } @@ -654,11 +652,11 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { reason.add("Skills.Woodcutting.LeafBlower.UnlockLevel should be at least 0!"); } - if (getMaxChance(SecondaryAbility.WOODCUTTING_HARVEST) < 1) { + if (getMaxChance(SubSkill.WOODCUTTING_DOUBLE_DROPS) < 1) { reason.add("Skills.Woodcutting.DoubleDrops.ChanceMax should be at least 1!"); } - if (getMaxBonusLevel(SecondaryAbility.WOODCUTTING_HARVEST) < 1) { + if (getMaxBonusLevel(SubSkill.WOODCUTTING_DOUBLE_DROPS) < 1) { reason.add("Skills.Woodcutting.DoubleDrops.MaxBonusLevel should be at least 1!"); } @@ -689,8 +687,8 @@ public class AdvancedConfig extends AutoUpdateConfigLoader { public int getAbilityLength() { return config.getInt("Skills.General.Ability.IncreaseLevel", 50); } public int getEnchantBuff() { return config.getInt("Skills.General.Ability.EnchantBuff", 5); } - public int getMaxBonusLevel(SecondaryAbility skillAbility) { return config.getInt("Skills." + StringUtils.getCapitalized(SkillType.bySecondaryAbility(skillAbility).toString()) + "." + StringUtils.getPrettySecondaryAbilityString(skillAbility).replace(" ", "") + ".MaxBonusLevel"); } - public double getMaxChance(SecondaryAbility skillAbility) { return config.getDouble("Skills." + StringUtils.getCapitalized(SkillType.bySecondaryAbility(skillAbility).toString()) + "." + StringUtils.getPrettySecondaryAbilityString(skillAbility).replace(" ", "") + ".ChanceMax", 100.0D); } + public int getMaxBonusLevel(SubSkill subSkill) { return config.getInt(subSkill.getAdvConfigAddress() + ".MaxBonusLevel"); } + public double getMaxChance(SubSkill subSkill) { return config.getDouble(subSkill.getAdvConfigAddress() + ".ChanceMax", 100.0D);} /* ACROBATICS */ public double getDodgeDamageModifier() { return config.getDouble("Skills.Acrobatics.Dodge.DamageModifier", 2.0D); } diff --git a/src/main/java/com/gmail/nossr50/config/Config.java b/src/main/java/com/gmail/nossr50/config/Config.java index 1b6860588..e6dfbe882 100644 --- a/src/main/java/com/gmail/nossr50/config/Config.java +++ b/src/main/java/com/gmail/nossr50/config/Config.java @@ -3,8 +3,8 @@ package com.gmail.nossr50.config; import com.gmail.nossr50.database.SQLDatabaseManager.PoolIdentifier; import com.gmail.nossr50.datatypes.MobHealthbarType; import com.gmail.nossr50.datatypes.party.PartyFeature; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.util.StringUtils; import org.bukkit.Material; import org.bukkit.block.data.BlockData; @@ -244,6 +244,8 @@ public class Config extends AutoUpdateConfigLoader { */ /* General Settings */ + //Classic mode will default the value to true if the config file doesn't contain the entry (server is from a previous mcMMO install) + public boolean getClassicMode() { return config.getBoolean("General.Classic_Mode", true); } public String getLocale() { return config.getString("General.Locale", "en_us"); } public boolean getMOTDEnabled() { return config.getBoolean("General.MOTD_Enabled", true); } public boolean getShowProfileLoadedMessage() { return config.getBoolean("General.Show_Profile_Loaded", true); } @@ -350,16 +352,16 @@ public class Config extends AutoUpdateConfigLoader { } /* Hardcore Mode */ - public boolean getHardcoreStatLossEnabled(SkillType skillType) { return config.getBoolean("Hardcore.Death_Stat_Loss.Enabled." + StringUtils.getCapitalized(skillType.toString()), false); } - public void setHardcoreStatLossEnabled(SkillType skillType, boolean enabled) { config.set("Hardcore.Death_Stat_Loss.Enabled." + StringUtils.getCapitalized(skillType.toString()), enabled); } + public boolean getHardcoreStatLossEnabled(PrimarySkill primarySkill) { return config.getBoolean("Hardcore.Death_Stat_Loss.Enabled." + StringUtils.getCapitalized(primarySkill.toString()), false); } + public void setHardcoreStatLossEnabled(PrimarySkill primarySkill, boolean enabled) { config.set("Hardcore.Death_Stat_Loss.Enabled." + StringUtils.getCapitalized(primarySkill.toString()), enabled); } public double getHardcoreDeathStatPenaltyPercentage() { return config.getDouble("Hardcore.Death_Stat_Loss.Penalty_Percentage", 75.0D); } public void setHardcoreDeathStatPenaltyPercentage(double value) { config.set("Hardcore.Death_Stat_Loss.Penalty_Percentage", value); } public int getHardcoreDeathStatPenaltyLevelThreshold() { return config.getInt("Hardcore.Death_Stat_Loss.Level_Threshold", 0); } - public boolean getHardcoreVampirismEnabled(SkillType skillType) { return config.getBoolean("Hardcore.Vampirism.Enabled." + StringUtils.getCapitalized(skillType.toString()), false); } - public void setHardcoreVampirismEnabled(SkillType skillType, boolean enabled) { config.set("Hardcore.Vampirism.Enabled." + StringUtils.getCapitalized(skillType.toString()), enabled); } + public boolean getHardcoreVampirismEnabled(PrimarySkill primarySkill) { return config.getBoolean("Hardcore.Vampirism.Enabled." + StringUtils.getCapitalized(primarySkill.toString()), false); } + public void setHardcoreVampirismEnabled(PrimarySkill primarySkill, boolean enabled) { config.set("Hardcore.Vampirism.Enabled." + StringUtils.getCapitalized(primarySkill.toString()), enabled); } public double getHardcoreVampirismStatLeechPercentage() { return config.getDouble("Hardcore.Vampirism.Leech_Percentage", 5.0D); } public void setHardcoreVampirismStatLeechPercentage(double value) { config.set("Hardcore.Vampirism.Leech_Percentage", value); } @@ -440,8 +442,8 @@ public class Config extends AutoUpdateConfigLoader { public boolean getAbilitiesOnlyActivateWhenSneaking() { return config.getBoolean("Abilities.Activation.Only_Activate_When_Sneaking", false); } public boolean getAbilitiesGateEnabled() { return config.getBoolean("Abilities.Activation.Level_Gate_Abilities"); } - public int getCooldown(AbilityType ability) { return config.getInt("Abilities.Cooldowns." + ability.toString()); } - public int getMaxLength(AbilityType ability) { return config.getInt("Abilities.Max_Seconds." + ability.toString()); } + public int getCooldown(SuperAbility ability) { return config.getInt("Abilities.Cooldowns." + ability.toString()); } + public int getMaxLength(SuperAbility ability) { return config.getInt("Abilities.Max_Seconds." + ability.toString()); } /* Durability Settings */ public int getAbilityToolDamage() { return config.getInt("Abilities.Tools.Durability_Loss", 1); } @@ -452,9 +454,9 @@ public class Config extends AutoUpdateConfigLoader { /* * SKILL SETTINGS */ - public boolean getDoubleDropsEnabled(SkillType skill, Material material) { return config.getBoolean("Double_Drops." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); } + public boolean getDoubleDropsEnabled(PrimarySkill skill, Material material) { return config.getBoolean("Double_Drops." + StringUtils.getCapitalized(skill.toString()) + "." + StringUtils.getPrettyItemString(material).replace(" ", "_")); } - public boolean getDoubleDropsDisabled(SkillType skill) { + public boolean getDoubleDropsDisabled(PrimarySkill skill) { String skillName = StringUtils.getCapitalized(skill.toString()); ConfigurationSection section = config.getConfigurationSection("Double_Drops." + skillName); if (section == null) @@ -544,20 +546,20 @@ public class Config extends AutoUpdateConfigLoader { return (cap <= 0) ? Integer.MAX_VALUE : cap; } - public int getLevelCap(SkillType skill) { + public int getLevelCap(PrimarySkill skill) { int cap = config.getInt("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Level_Cap"); return (cap <= 0) ? Integer.MAX_VALUE : cap; } - public int getSkillAbilityGate(SkillType skill) { + public int getSkillAbilityGate(PrimarySkill skill) { return config.getInt("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Ability_Activation_Level_Gate"); } public boolean getTruncateSkills() { return config.getBoolean("General.TruncateSkills", false); } /* PVP & PVE Settings */ - public boolean getPVPEnabled(SkillType skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVP", true); } - public boolean getPVEEnabled(SkillType skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVE", true); } + public boolean getPVPEnabled(PrimarySkill skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVP", true); } + public boolean getPVEEnabled(PrimarySkill skill) { return config.getBoolean("Skills." + StringUtils.getCapitalized(skill.toString()) + ".Enabled_For_PVE", true); } public float getMasterVolume() { return (float) config.getDouble("Sounds.MasterVolume", 1.0); } } 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 c6c3f77c6..90c241099 100644 --- a/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java +++ b/src/main/java/com/gmail/nossr50/config/experience/ExperienceConfig.java @@ -3,7 +3,7 @@ package com.gmail.nossr50.config.experience; import com.gmail.nossr50.config.AutoUpdateConfigLoader; import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.skills.MaterialType; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage; import com.gmail.nossr50.util.StringUtils; import org.bukkit.Material; @@ -160,14 +160,14 @@ public class ExperienceConfig extends AutoUpdateConfigLoader { public double getBredMobXpMultiplier() { return config.getDouble("Experience_Formula.Breeding.Multiplier", 1.0); } /* Skill modifiers */ - public double getFormulaSkillModifier(SkillType skill) { return config.getDouble("Experience_Formula.Modifier." + StringUtils.getCapitalized(skill.toString())); } + public double getFormulaSkillModifier(PrimarySkill skill) { return config.getDouble("Experience_Formula.Modifier." + StringUtils.getCapitalized(skill.toString())); } /* Custom XP perk */ public double getCustomXpPerkBoost() { return config.getDouble("Experience_Formula.Custom_XP_Perk.Boost", 1.25); } /* Diminished Returns */ public boolean getDiminishedReturnsEnabled() { return config.getBoolean("Diminished_Returns.Enabled", false); } - public int getDiminishedReturnsThreshold(SkillType skill) { return config.getInt("Diminished_Returns.Threshold." + StringUtils.getCapitalized(skill.toString()), 20000); } + public int getDiminishedReturnsThreshold(PrimarySkill skill) { return config.getInt("Diminished_Returns.Threshold." + StringUtils.getCapitalized(skill.toString()), 20000); } public int getDiminishedReturnsTimeInterval() { return config.getInt("Diminished_Returns.Time_Interval", 10); } /* Conversion */ @@ -187,7 +187,7 @@ public class ExperienceConfig extends AutoUpdateConfigLoader { public boolean hasCombatXP(EntityType entity) {return config.contains("Experience.Combat.Multiplier." + StringUtils.getPrettyEntityTypeString(entity).replace(" ", "_")); } /* Materials */ - public int getXp(SkillType skill, Material data) + public int getXp(PrimarySkill skill, Material data) { String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + "."; String explicitString = baseString + StringUtils.getExplicitConfigMaterialString(data); @@ -203,7 +203,7 @@ public class ExperienceConfig extends AutoUpdateConfigLoader { } /* Materials */ - public int getXp(SkillType skill, BlockData data) + public int getXp(PrimarySkill skill, BlockData data) { String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + "."; String explicitString = baseString + StringUtils.getExplicitConfigBlockDataString(data); @@ -218,7 +218,7 @@ public class ExperienceConfig extends AutoUpdateConfigLoader { return 0; } - public boolean isSkillBlock(SkillType skill, Material data) + public boolean isSkillBlock(PrimarySkill skill, Material data) { String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + "."; String explicitString = baseString + StringUtils.getExplicitConfigMaterialString(data); @@ -231,7 +231,7 @@ public class ExperienceConfig extends AutoUpdateConfigLoader { return config.contains(wildcardString); } - public boolean isSkillBlock(SkillType skill, BlockData data) + public boolean isSkillBlock(PrimarySkill skill, BlockData data) { String baseString = "Experience." + StringUtils.getCapitalized(skill.toString()) + "."; String explicitString = baseString + StringUtils.getExplicitConfigBlockDataString(data); diff --git a/src/main/java/com/gmail/nossr50/database/DatabaseManager.java b/src/main/java/com/gmail/nossr50/database/DatabaseManager.java index 66bea5714..793f0366c 100644 --- a/src/main/java/com/gmail/nossr50/database/DatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/DatabaseManager.java @@ -8,7 +8,7 @@ import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.database.DatabaseType; import com.gmail.nossr50.datatypes.database.PlayerStat; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; public interface DatabaseManager { // One month in milliseconds @@ -50,10 +50,10 @@ public interface DatabaseManager { * @param statsPerPage The number of stats per page * @return the requested leaderboard information */ - public List readLeaderboard(SkillType skill, int pageNumber, int statsPerPage); + public List readLeaderboard(PrimarySkill skill, int pageNumber, int statsPerPage); /** - * Retrieve rank info into a HashMap from SkillType to the rank. + * Retrieve rank info into a HashMap from PrimarySkill to the rank. *

* The special value null is used to represent the Power * Level rank (the combination of all skill levels). @@ -61,7 +61,7 @@ public interface DatabaseManager { * @param playerName The name of the user to retrieve the rankings for * @return the requested rank information */ - public Map readRank(String playerName); + public Map readRank(String playerName); /** * Add a new user to the database. diff --git a/src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java b/src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java index 6287a9e72..cd8cfe52b 100644 --- a/src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/FlatfileDatabaseManager.java @@ -17,6 +17,8 @@ import java.util.List; import java.util.Map; import java.util.UUID; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SuperAbility; import org.bukkit.OfflinePlayer; import com.gmail.nossr50.mcMMO; @@ -26,16 +28,12 @@ import com.gmail.nossr50.datatypes.database.DatabaseType; import com.gmail.nossr50.datatypes.database.PlayerStat; import com.gmail.nossr50.datatypes.database.UpgradeType; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.runnables.database.UUIDUpdateAsyncTask; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.StringUtils; -import org.apache.commons.lang.ArrayUtils; - public final class FlatfileDatabaseManager implements DatabaseManager { - private final HashMap> playerStatHash = new HashMap>(); + private final HashMap> playerStatHash = new HashMap>(); private final List powerLevels = new ArrayList(); private long lastUpdate = 0; @@ -71,7 +69,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager { while ((line = in.readLine()) != null) { String[] character = line.split(":"); - Map skills = getSkillMapFromLine(character); + Map skills = getSkillMapFromLine(character); boolean powerless = true; for (int skill : skills.values()) { @@ -279,47 +277,47 @@ public final class FlatfileDatabaseManager implements DatabaseManager { else { // Otherwise write the new player information writer.append(playerName).append(":"); - writer.append(profile.getSkillLevel(SkillType.MINING)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.MINING)).append(":"); writer.append(":"); writer.append(":"); - writer.append(profile.getSkillXpLevel(SkillType.MINING)).append(":"); - writer.append(profile.getSkillLevel(SkillType.WOODCUTTING)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.WOODCUTTING)).append(":"); - writer.append(profile.getSkillLevel(SkillType.REPAIR)).append(":"); - writer.append(profile.getSkillLevel(SkillType.UNARMED)).append(":"); - writer.append(profile.getSkillLevel(SkillType.HERBALISM)).append(":"); - writer.append(profile.getSkillLevel(SkillType.EXCAVATION)).append(":"); - writer.append(profile.getSkillLevel(SkillType.ARCHERY)).append(":"); - writer.append(profile.getSkillLevel(SkillType.SWORDS)).append(":"); - writer.append(profile.getSkillLevel(SkillType.AXES)).append(":"); - writer.append(profile.getSkillLevel(SkillType.ACROBATICS)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.REPAIR)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.UNARMED)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.HERBALISM)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.EXCAVATION)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.ARCHERY)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.SWORDS)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.AXES)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.ACROBATICS)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.MINING)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.WOODCUTTING)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.WOODCUTTING)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.REPAIR)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.UNARMED)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.HERBALISM)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.EXCAVATION)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.ARCHERY)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.SWORDS)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.AXES)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.ACROBATICS)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.REPAIR)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.UNARMED)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.HERBALISM)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.EXCAVATION)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.ARCHERY)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.SWORDS)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.AXES)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.ACROBATICS)).append(":"); writer.append(":"); - writer.append(profile.getSkillLevel(SkillType.TAMING)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.TAMING)).append(":"); - writer.append((int) profile.getAbilityDATS(AbilityType.BERSERK)).append(":"); - writer.append((int) profile.getAbilityDATS(AbilityType.GIGA_DRILL_BREAKER)).append(":"); - writer.append((int) profile.getAbilityDATS(AbilityType.TREE_FELLER)).append(":"); - writer.append((int) profile.getAbilityDATS(AbilityType.GREEN_TERRA)).append(":"); - writer.append((int) profile.getAbilityDATS(AbilityType.SERRATED_STRIKES)).append(":"); - writer.append((int) profile.getAbilityDATS(AbilityType.SKULL_SPLITTER)).append(":"); - writer.append((int) profile.getAbilityDATS(AbilityType.SUPER_BREAKER)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.TAMING)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.TAMING)).append(":"); + writer.append((int) profile.getAbilityDATS(SuperAbility.BERSERK)).append(":"); + writer.append((int) profile.getAbilityDATS(SuperAbility.GIGA_DRILL_BREAKER)).append(":"); + writer.append((int) profile.getAbilityDATS(SuperAbility.TREE_FELLER)).append(":"); + writer.append((int) profile.getAbilityDATS(SuperAbility.GREEN_TERRA)).append(":"); + writer.append((int) profile.getAbilityDATS(SuperAbility.SERRATED_STRIKES)).append(":"); + writer.append((int) profile.getAbilityDATS(SuperAbility.SKULL_SPLITTER)).append(":"); + writer.append((int) profile.getAbilityDATS(SuperAbility.SUPER_BREAKER)).append(":"); writer.append(":"); - writer.append(profile.getSkillLevel(SkillType.FISHING)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.FISHING)).append(":"); - writer.append((int) profile.getAbilityDATS(AbilityType.BLAST_MINING)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.FISHING)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.FISHING)).append(":"); + writer.append((int) profile.getAbilityDATS(SuperAbility.BLAST_MINING)).append(":"); writer.append(System.currentTimeMillis() / Misc.TIME_CONVERSION_FACTOR).append(":"); MobHealthbarType mobHealthbarType = profile.getMobHealthbarType(); writer.append(mobHealthbarType == null ? Config.getInstance().getMobHealthbarDefault().toString() : mobHealthbarType.toString()).append(":"); - writer.append(profile.getSkillLevel(SkillType.ALCHEMY)).append(":"); - writer.append(profile.getSkillXpLevel(SkillType.ALCHEMY)).append(":"); + writer.append(profile.getSkillLevel(PrimarySkill.ALCHEMY)).append(":"); + writer.append(profile.getSkillXpLevel(PrimarySkill.ALCHEMY)).append(":"); writer.append(uuid != null ? uuid.toString() : "NULL").append(":"); writer.append(profile.getScoreboardTipsShown()).append(":"); writer.append("\r\n"); @@ -356,7 +354,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager { } } - public List readLeaderboard(SkillType skill, int pageNumber, int statsPerPage) { + public List readLeaderboard(PrimarySkill skill, int pageNumber, int statsPerPage) { updateLeaderboards(); List statsList = skill == null ? powerLevels : playerStatHash.get(skill); int fromIndex = (Math.max(pageNumber, 1) - 1) * statsPerPage; @@ -364,12 +362,12 @@ public final class FlatfileDatabaseManager implements DatabaseManager { return statsList.subList(Math.min(fromIndex, statsList.size()), Math.min(fromIndex + statsPerPage, statsList.size())); } - public Map readRank(String playerName) { + public Map readRank(String playerName) { updateLeaderboards(); - Map skills = new HashMap(); + Map skills = new HashMap(); - for (SkillType skill : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill skill : PrimarySkill.NON_CHILD_SKILLS) { skills.put(skill, getPlayerRank(playerName, playerStatHash.get(skill))); } @@ -764,21 +762,21 @@ public final class FlatfileDatabaseManager implements DatabaseManager { playerName = data[USERNAME]; int powerLevel = 0; - Map skills = getSkillMapFromLine(data); + Map skills = getSkillMapFromLine(data); - powerLevel += putStat(acrobatics, playerName, skills.get(SkillType.ACROBATICS)); - powerLevel += putStat(alchemy, playerName, skills.get(SkillType.ALCHEMY)); - powerLevel += putStat(archery, playerName, skills.get(SkillType.ARCHERY)); - powerLevel += putStat(axes, playerName, skills.get(SkillType.AXES)); - powerLevel += putStat(excavation, playerName, skills.get(SkillType.EXCAVATION)); - powerLevel += putStat(fishing, playerName, skills.get(SkillType.FISHING)); - powerLevel += putStat(herbalism, playerName, skills.get(SkillType.HERBALISM)); - powerLevel += putStat(mining, playerName, skills.get(SkillType.MINING)); - powerLevel += putStat(repair, playerName, skills.get(SkillType.REPAIR)); - powerLevel += putStat(swords, playerName, skills.get(SkillType.SWORDS)); - powerLevel += putStat(taming, playerName, skills.get(SkillType.TAMING)); - powerLevel += putStat(unarmed, playerName, skills.get(SkillType.UNARMED)); - powerLevel += putStat(woodcutting, playerName, skills.get(SkillType.WOODCUTTING)); + powerLevel += putStat(acrobatics, playerName, skills.get(PrimarySkill.ACROBATICS)); + powerLevel += putStat(alchemy, playerName, skills.get(PrimarySkill.ALCHEMY)); + powerLevel += putStat(archery, playerName, skills.get(PrimarySkill.ARCHERY)); + powerLevel += putStat(axes, playerName, skills.get(PrimarySkill.AXES)); + powerLevel += putStat(excavation, playerName, skills.get(PrimarySkill.EXCAVATION)); + powerLevel += putStat(fishing, playerName, skills.get(PrimarySkill.FISHING)); + powerLevel += putStat(herbalism, playerName, skills.get(PrimarySkill.HERBALISM)); + powerLevel += putStat(mining, playerName, skills.get(PrimarySkill.MINING)); + powerLevel += putStat(repair, playerName, skills.get(PrimarySkill.REPAIR)); + powerLevel += putStat(swords, playerName, skills.get(PrimarySkill.SWORDS)); + powerLevel += putStat(taming, playerName, skills.get(PrimarySkill.TAMING)); + powerLevel += putStat(unarmed, playerName, skills.get(PrimarySkill.UNARMED)); + powerLevel += putStat(woodcutting, playerName, skills.get(PrimarySkill.WOODCUTTING)); putStat(powerLevels, playerName, powerLevel); } @@ -815,19 +813,19 @@ public final class FlatfileDatabaseManager implements DatabaseManager { Collections.sort(alchemy, c); Collections.sort(powerLevels, c); - playerStatHash.put(SkillType.MINING, mining); - playerStatHash.put(SkillType.WOODCUTTING, woodcutting); - playerStatHash.put(SkillType.REPAIR, repair); - playerStatHash.put(SkillType.UNARMED, unarmed); - playerStatHash.put(SkillType.HERBALISM, herbalism); - playerStatHash.put(SkillType.EXCAVATION, excavation); - playerStatHash.put(SkillType.ARCHERY, archery); - playerStatHash.put(SkillType.SWORDS, swords); - playerStatHash.put(SkillType.AXES, axes); - playerStatHash.put(SkillType.ACROBATICS, acrobatics); - playerStatHash.put(SkillType.TAMING, taming); - playerStatHash.put(SkillType.FISHING, fishing); - playerStatHash.put(SkillType.ALCHEMY, alchemy); + playerStatHash.put(PrimarySkill.MINING, mining); + playerStatHash.put(PrimarySkill.WOODCUTTING, woodcutting); + playerStatHash.put(PrimarySkill.REPAIR, repair); + playerStatHash.put(PrimarySkill.UNARMED, unarmed); + playerStatHash.put(PrimarySkill.HERBALISM, herbalism); + playerStatHash.put(PrimarySkill.EXCAVATION, excavation); + playerStatHash.put(PrimarySkill.ARCHERY, archery); + playerStatHash.put(PrimarySkill.SWORDS, swords); + playerStatHash.put(PrimarySkill.AXES, axes); + playerStatHash.put(PrimarySkill.ACROBATICS, acrobatics); + playerStatHash.put(PrimarySkill.TAMING, taming); + playerStatHash.put(PrimarySkill.FISHING, fishing); + playerStatHash.put(PrimarySkill.ALCHEMY, alchemy); } /** @@ -894,7 +892,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager { } if (Config.getInstance().getTruncateSkills()) { - for (SkillType skill : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill skill : PrimarySkill.NON_CHILD_SKILLS) { int index = getSkillIndex(skill); if (index >= character.length) { continue; @@ -1034,8 +1032,8 @@ public final class FlatfileDatabaseManager implements DatabaseManager { updated |= oldVersion != null; if (Config.getInstance().getTruncateSkills()) { - Map skills = getSkillMapFromLine(character); - for (SkillType skill : SkillType.NON_CHILD_SKILLS) { + Map skills = getSkillMapFromLine(character); + for (PrimarySkill skill : PrimarySkill.NON_CHILD_SKILLS) { int cap = Config.getInstance().getLevelCap(skill); if (skills.get(skill) > cap) { updated = true; @@ -1129,40 +1127,40 @@ public final class FlatfileDatabaseManager implements DatabaseManager { } private PlayerProfile loadFromLine(String[] character) { - Map skills = getSkillMapFromLine(character); // Skill levels - Map skillsXp = new EnumMap(SkillType.class); // Skill & XP - Map skillsDATS = new EnumMap(AbilityType.class); // Ability & Cooldown + Map skills = getSkillMapFromLine(character); // Skill levels + Map skillsXp = new EnumMap(PrimarySkill.class); // Skill & XP + Map skillsDATS = new EnumMap(SuperAbility.class); // Ability & Cooldown MobHealthbarType mobHealthbarType; int scoreboardTipsShown; // TODO on updates, put new values in a try{} ? - skillsXp.put(SkillType.TAMING, (float) Integer.valueOf(character[EXP_TAMING])); - skillsXp.put(SkillType.MINING, (float) Integer.valueOf(character[EXP_MINING])); - skillsXp.put(SkillType.REPAIR, (float) Integer.valueOf(character[EXP_REPAIR])); - skillsXp.put(SkillType.WOODCUTTING, (float) Integer.valueOf(character[EXP_WOODCUTTING])); - skillsXp.put(SkillType.UNARMED, (float) Integer.valueOf(character[EXP_UNARMED])); - skillsXp.put(SkillType.HERBALISM, (float) Integer.valueOf(character[EXP_HERBALISM])); - skillsXp.put(SkillType.EXCAVATION, (float) Integer.valueOf(character[EXP_EXCAVATION])); - skillsXp.put(SkillType.ARCHERY, (float) Integer.valueOf(character[EXP_ARCHERY])); - skillsXp.put(SkillType.SWORDS, (float) Integer.valueOf(character[EXP_SWORDS])); - skillsXp.put(SkillType.AXES, (float) Integer.valueOf(character[EXP_AXES])); - skillsXp.put(SkillType.ACROBATICS, (float) Integer.valueOf(character[EXP_ACROBATICS])); - skillsXp.put(SkillType.FISHING, (float) Integer.valueOf(character[EXP_FISHING])); - skillsXp.put(SkillType.ALCHEMY, (float) Integer.valueOf(character[EXP_ALCHEMY])); + skillsXp.put(PrimarySkill.TAMING, (float) Integer.valueOf(character[EXP_TAMING])); + skillsXp.put(PrimarySkill.MINING, (float) Integer.valueOf(character[EXP_MINING])); + skillsXp.put(PrimarySkill.REPAIR, (float) Integer.valueOf(character[EXP_REPAIR])); + skillsXp.put(PrimarySkill.WOODCUTTING, (float) Integer.valueOf(character[EXP_WOODCUTTING])); + skillsXp.put(PrimarySkill.UNARMED, (float) Integer.valueOf(character[EXP_UNARMED])); + skillsXp.put(PrimarySkill.HERBALISM, (float) Integer.valueOf(character[EXP_HERBALISM])); + skillsXp.put(PrimarySkill.EXCAVATION, (float) Integer.valueOf(character[EXP_EXCAVATION])); + skillsXp.put(PrimarySkill.ARCHERY, (float) Integer.valueOf(character[EXP_ARCHERY])); + skillsXp.put(PrimarySkill.SWORDS, (float) Integer.valueOf(character[EXP_SWORDS])); + skillsXp.put(PrimarySkill.AXES, (float) Integer.valueOf(character[EXP_AXES])); + skillsXp.put(PrimarySkill.ACROBATICS, (float) Integer.valueOf(character[EXP_ACROBATICS])); + skillsXp.put(PrimarySkill.FISHING, (float) Integer.valueOf(character[EXP_FISHING])); + skillsXp.put(PrimarySkill.ALCHEMY, (float) Integer.valueOf(character[EXP_ALCHEMY])); // Taming - Unused - skillsDATS.put(AbilityType.SUPER_BREAKER, Integer.valueOf(character[COOLDOWN_SUPER_BREAKER])); + skillsDATS.put(SuperAbility.SUPER_BREAKER, Integer.valueOf(character[COOLDOWN_SUPER_BREAKER])); // Repair - Unused - skillsDATS.put(AbilityType.TREE_FELLER, Integer.valueOf(character[COOLDOWN_TREE_FELLER])); - skillsDATS.put(AbilityType.BERSERK, Integer.valueOf(character[COOLDOWN_BERSERK])); - skillsDATS.put(AbilityType.GREEN_TERRA, Integer.valueOf(character[COOLDOWN_GREEN_TERRA])); - skillsDATS.put(AbilityType.GIGA_DRILL_BREAKER, Integer.valueOf(character[COOLDOWN_GIGA_DRILL_BREAKER])); + skillsDATS.put(SuperAbility.TREE_FELLER, Integer.valueOf(character[COOLDOWN_TREE_FELLER])); + skillsDATS.put(SuperAbility.BERSERK, Integer.valueOf(character[COOLDOWN_BERSERK])); + skillsDATS.put(SuperAbility.GREEN_TERRA, Integer.valueOf(character[COOLDOWN_GREEN_TERRA])); + skillsDATS.put(SuperAbility.GIGA_DRILL_BREAKER, Integer.valueOf(character[COOLDOWN_GIGA_DRILL_BREAKER])); // Archery - Unused - skillsDATS.put(AbilityType.SERRATED_STRIKES, Integer.valueOf(character[COOLDOWN_SERRATED_STRIKES])); - skillsDATS.put(AbilityType.SKULL_SPLITTER, Integer.valueOf(character[COOLDOWN_SKULL_SPLITTER])); + skillsDATS.put(SuperAbility.SERRATED_STRIKES, Integer.valueOf(character[COOLDOWN_SERRATED_STRIKES])); + skillsDATS.put(SuperAbility.SKULL_SPLITTER, Integer.valueOf(character[COOLDOWN_SKULL_SPLITTER])); // Acrobatics - Unused - skillsDATS.put(AbilityType.BLAST_MINING, Integer.valueOf(character[COOLDOWN_BLAST_MINING])); + skillsDATS.put(SuperAbility.BLAST_MINING, Integer.valueOf(character[COOLDOWN_BLAST_MINING])); try { mobHealthbarType = MobHealthbarType.valueOf(character[HEALTHBAR]); @@ -1189,22 +1187,22 @@ public final class FlatfileDatabaseManager implements DatabaseManager { return new PlayerProfile(character[USERNAME], uuid, skills, skillsXp, skillsDATS, mobHealthbarType, scoreboardTipsShown); } - private Map getSkillMapFromLine(String[] character) { - Map skills = new EnumMap(SkillType.class); // Skill & Level + private Map getSkillMapFromLine(String[] character) { + Map skills = new EnumMap(PrimarySkill.class); // Skill & Level - skills.put(SkillType.TAMING, Integer.valueOf(character[SKILLS_TAMING])); - skills.put(SkillType.MINING, Integer.valueOf(character[SKILLS_MINING])); - skills.put(SkillType.REPAIR, Integer.valueOf(character[SKILLS_REPAIR])); - skills.put(SkillType.WOODCUTTING, Integer.valueOf(character[SKILLS_WOODCUTTING])); - skills.put(SkillType.UNARMED, Integer.valueOf(character[SKILLS_UNARMED])); - skills.put(SkillType.HERBALISM, Integer.valueOf(character[SKILLS_HERBALISM])); - skills.put(SkillType.EXCAVATION, Integer.valueOf(character[SKILLS_EXCAVATION])); - skills.put(SkillType.ARCHERY, Integer.valueOf(character[SKILLS_ARCHERY])); - skills.put(SkillType.SWORDS, Integer.valueOf(character[SKILLS_SWORDS])); - skills.put(SkillType.AXES, Integer.valueOf(character[SKILLS_AXES])); - skills.put(SkillType.ACROBATICS, Integer.valueOf(character[SKILLS_ACROBATICS])); - skills.put(SkillType.FISHING, Integer.valueOf(character[SKILLS_FISHING])); - skills.put(SkillType.ALCHEMY, Integer.valueOf(character[SKILLS_ALCHEMY])); + skills.put(PrimarySkill.TAMING, Integer.valueOf(character[SKILLS_TAMING])); + skills.put(PrimarySkill.MINING, Integer.valueOf(character[SKILLS_MINING])); + skills.put(PrimarySkill.REPAIR, Integer.valueOf(character[SKILLS_REPAIR])); + skills.put(PrimarySkill.WOODCUTTING, Integer.valueOf(character[SKILLS_WOODCUTTING])); + skills.put(PrimarySkill.UNARMED, Integer.valueOf(character[SKILLS_UNARMED])); + skills.put(PrimarySkill.HERBALISM, Integer.valueOf(character[SKILLS_HERBALISM])); + skills.put(PrimarySkill.EXCAVATION, Integer.valueOf(character[SKILLS_EXCAVATION])); + skills.put(PrimarySkill.ARCHERY, Integer.valueOf(character[SKILLS_ARCHERY])); + skills.put(PrimarySkill.SWORDS, Integer.valueOf(character[SKILLS_SWORDS])); + skills.put(PrimarySkill.AXES, Integer.valueOf(character[SKILLS_AXES])); + skills.put(PrimarySkill.ACROBATICS, Integer.valueOf(character[SKILLS_ACROBATICS])); + skills.put(PrimarySkill.FISHING, Integer.valueOf(character[SKILLS_FISHING])); + skills.put(PrimarySkill.ALCHEMY, Integer.valueOf(character[SKILLS_ALCHEMY])); return skills; } @@ -1216,7 +1214,7 @@ public final class FlatfileDatabaseManager implements DatabaseManager { @Override public void onDisable() { } - private int getSkillIndex(SkillType skill) { + private int getSkillIndex(PrimarySkill skill) { switch (skill) { case ACROBATICS: return SKILLS_ACROBATICS; diff --git a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java index cd247470c..aaa08e184 100644 --- a/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java +++ b/src/main/java/com/gmail/nossr50/database/SQLDatabaseManager.java @@ -6,8 +6,8 @@ import com.gmail.nossr50.datatypes.database.DatabaseType; import com.gmail.nossr50.datatypes.database.PlayerStat; import com.gmail.nossr50.datatypes.database.UpgradeType; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.database.UUIDUpdateAsyncTask; import com.gmail.nossr50.util.Misc; @@ -226,22 +226,22 @@ public final class SQLDatabaseManager implements DatabaseManager { + ", unarmed = ?, herbalism = ?, excavation = ?" + ", archery = ?, swords = ?, axes = ?, acrobatics = ?" + ", fishing = ?, alchemy = ?, total = ? WHERE user_id = ?"); - statement.setInt(1, profile.getSkillLevel(SkillType.TAMING)); - statement.setInt(2, profile.getSkillLevel(SkillType.MINING)); - statement.setInt(3, profile.getSkillLevel(SkillType.REPAIR)); - statement.setInt(4, profile.getSkillLevel(SkillType.WOODCUTTING)); - statement.setInt(5, profile.getSkillLevel(SkillType.UNARMED)); - statement.setInt(6, profile.getSkillLevel(SkillType.HERBALISM)); - statement.setInt(7, profile.getSkillLevel(SkillType.EXCAVATION)); - statement.setInt(8, profile.getSkillLevel(SkillType.ARCHERY)); - statement.setInt(9, profile.getSkillLevel(SkillType.SWORDS)); - statement.setInt(10, profile.getSkillLevel(SkillType.AXES)); - statement.setInt(11, profile.getSkillLevel(SkillType.ACROBATICS)); - statement.setInt(12, profile.getSkillLevel(SkillType.FISHING)); - statement.setInt(13, profile.getSkillLevel(SkillType.ALCHEMY)); + statement.setInt(1, profile.getSkillLevel(PrimarySkill.TAMING)); + statement.setInt(2, profile.getSkillLevel(PrimarySkill.MINING)); + statement.setInt(3, profile.getSkillLevel(PrimarySkill.REPAIR)); + statement.setInt(4, profile.getSkillLevel(PrimarySkill.WOODCUTTING)); + statement.setInt(5, profile.getSkillLevel(PrimarySkill.UNARMED)); + statement.setInt(6, profile.getSkillLevel(PrimarySkill.HERBALISM)); + statement.setInt(7, profile.getSkillLevel(PrimarySkill.EXCAVATION)); + statement.setInt(8, profile.getSkillLevel(PrimarySkill.ARCHERY)); + statement.setInt(9, profile.getSkillLevel(PrimarySkill.SWORDS)); + statement.setInt(10, profile.getSkillLevel(PrimarySkill.AXES)); + statement.setInt(11, profile.getSkillLevel(PrimarySkill.ACROBATICS)); + statement.setInt(12, profile.getSkillLevel(PrimarySkill.FISHING)); + statement.setInt(13, profile.getSkillLevel(PrimarySkill.ALCHEMY)); int total = 0; - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) - total += profile.getSkillLevel(skillType); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) + total += profile.getSkillLevel(primarySkill); statement.setInt(14, total); statement.setInt(15, id); success &= (statement.executeUpdate() != 0); @@ -256,19 +256,19 @@ public final class SQLDatabaseManager implements DatabaseManager { + ", unarmed = ?, herbalism = ?, excavation = ?" + ", archery = ?, swords = ?, axes = ?, acrobatics = ?" + ", fishing = ?, alchemy = ? WHERE user_id = ?"); - statement.setInt(1, profile.getSkillXpLevel(SkillType.TAMING)); - statement.setInt(2, profile.getSkillXpLevel(SkillType.MINING)); - statement.setInt(3, profile.getSkillXpLevel(SkillType.REPAIR)); - statement.setInt(4, profile.getSkillXpLevel(SkillType.WOODCUTTING)); - statement.setInt(5, profile.getSkillXpLevel(SkillType.UNARMED)); - statement.setInt(6, profile.getSkillXpLevel(SkillType.HERBALISM)); - statement.setInt(7, profile.getSkillXpLevel(SkillType.EXCAVATION)); - statement.setInt(8, profile.getSkillXpLevel(SkillType.ARCHERY)); - statement.setInt(9, profile.getSkillXpLevel(SkillType.SWORDS)); - statement.setInt(10, profile.getSkillXpLevel(SkillType.AXES)); - statement.setInt(11, profile.getSkillXpLevel(SkillType.ACROBATICS)); - statement.setInt(12, profile.getSkillXpLevel(SkillType.FISHING)); - statement.setInt(13, profile.getSkillXpLevel(SkillType.ALCHEMY)); + statement.setInt(1, profile.getSkillXpLevel(PrimarySkill.TAMING)); + statement.setInt(2, profile.getSkillXpLevel(PrimarySkill.MINING)); + statement.setInt(3, profile.getSkillXpLevel(PrimarySkill.REPAIR)); + statement.setInt(4, profile.getSkillXpLevel(PrimarySkill.WOODCUTTING)); + statement.setInt(5, profile.getSkillXpLevel(PrimarySkill.UNARMED)); + statement.setInt(6, profile.getSkillXpLevel(PrimarySkill.HERBALISM)); + statement.setInt(7, profile.getSkillXpLevel(PrimarySkill.EXCAVATION)); + statement.setInt(8, profile.getSkillXpLevel(PrimarySkill.ARCHERY)); + statement.setInt(9, profile.getSkillXpLevel(PrimarySkill.SWORDS)); + statement.setInt(10, profile.getSkillXpLevel(PrimarySkill.AXES)); + statement.setInt(11, profile.getSkillXpLevel(PrimarySkill.ACROBATICS)); + statement.setInt(12, profile.getSkillXpLevel(PrimarySkill.FISHING)); + statement.setInt(13, profile.getSkillXpLevel(PrimarySkill.ALCHEMY)); statement.setInt(14, id); success &= (statement.executeUpdate() != 0); statement.close(); @@ -281,14 +281,14 @@ public final class SQLDatabaseManager implements DatabaseManager { + " mining = ?, woodcutting = ?, unarmed = ?" + ", herbalism = ?, excavation = ?, swords = ?" + ", axes = ?, blast_mining = ? WHERE user_id = ?"); - statement.setLong(1, profile.getAbilityDATS(AbilityType.SUPER_BREAKER)); - statement.setLong(2, profile.getAbilityDATS(AbilityType.TREE_FELLER)); - statement.setLong(3, profile.getAbilityDATS(AbilityType.BERSERK)); - statement.setLong(4, profile.getAbilityDATS(AbilityType.GREEN_TERRA)); - statement.setLong(5, profile.getAbilityDATS(AbilityType.GIGA_DRILL_BREAKER)); - statement.setLong(6, profile.getAbilityDATS(AbilityType.SERRATED_STRIKES)); - statement.setLong(7, profile.getAbilityDATS(AbilityType.SKULL_SPLITTER)); - statement.setLong(8, profile.getAbilityDATS(AbilityType.BLAST_MINING)); + statement.setLong(1, profile.getAbilityDATS(SuperAbility.SUPER_BREAKER)); + statement.setLong(2, profile.getAbilityDATS(SuperAbility.TREE_FELLER)); + statement.setLong(3, profile.getAbilityDATS(SuperAbility.BERSERK)); + statement.setLong(4, profile.getAbilityDATS(SuperAbility.GREEN_TERRA)); + statement.setLong(5, profile.getAbilityDATS(SuperAbility.GIGA_DRILL_BREAKER)); + statement.setLong(6, profile.getAbilityDATS(SuperAbility.SERRATED_STRIKES)); + statement.setLong(7, profile.getAbilityDATS(SuperAbility.SKULL_SPLITTER)); + statement.setLong(8, profile.getAbilityDATS(SuperAbility.BLAST_MINING)); statement.setInt(9, id); success = (statement.executeUpdate() != 0); statement.close(); @@ -319,7 +319,7 @@ public final class SQLDatabaseManager implements DatabaseManager { return success; } - public List readLeaderboard(SkillType skill, int pageNumber, int statsPerPage) { + public List readLeaderboard(PrimarySkill skill, int pageNumber, int statsPerPage) { List stats = new ArrayList(); String query = skill == null ? ALL_QUERY_VERSION : skill.name().toLowerCase(); @@ -356,8 +356,8 @@ public final class SQLDatabaseManager implements DatabaseManager { return stats; } - public Map readRank(String playerName) { - Map skills = new HashMap(); + public Map readRank(String playerName) { + Map skills = new HashMap(); ResultSet resultSet = null; PreparedStatement statement = null; @@ -365,8 +365,8 @@ public final class SQLDatabaseManager implements DatabaseManager { try { connection = getConnection(PoolIdentifier.MISC); - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - String skillName = skillType.name().toLowerCase(); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + String skillName = primarySkill.name().toLowerCase(); // Get count of all users with higher skill level than player String sql = "SELECT COUNT(*) AS rank FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id WHERE " + skillName + " > 0 " + "AND " + skillName + " > (SELECT " + skillName + " FROM " + tablePrefix + "users JOIN " + tablePrefix + "skills ON user_id = id " + @@ -393,7 +393,7 @@ public final class SQLDatabaseManager implements DatabaseManager { while (resultSet.next()) { if (resultSet.getString("user").equalsIgnoreCase(playerName)) { - skills.put(skillType, rank + resultSet.getRow()); + skills.put(primarySkill, rank + resultSet.getRow()); break; } } @@ -880,7 +880,7 @@ public final class SQLDatabaseManager implements DatabaseManager { } if (Config.getInstance().getTruncateSkills()) { - for (SkillType skill : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill skill : PrimarySkill.NON_CHILD_SKILLS) { int cap = Config.getInstance().getLevelCap(skill); if (cap != Integer.MAX_VALUE) { statement = connection.prepareStatement("UPDATE `" + tablePrefix + "skills` SET `" + skill.name().toLowerCase() + "` = " + cap + " WHERE `" + skill.name().toLowerCase() + "` > " + cap); @@ -1039,9 +1039,9 @@ public final class SQLDatabaseManager implements DatabaseManager { } private PlayerProfile loadFromResult(String playerName, ResultSet result) throws SQLException { - Map skills = new EnumMap(SkillType.class); // Skill & Level - Map skillsXp = new EnumMap(SkillType.class); // Skill & XP - Map skillsDATS = new EnumMap(AbilityType.class); // Ability & Cooldown + Map skills = new EnumMap(PrimarySkill.class); // Skill & Level + Map skillsXp = new EnumMap(PrimarySkill.class); // Skill & XP + Map skillsDATS = new EnumMap(SuperAbility.class); // Ability & Cooldown MobHealthbarType mobHealthbarType; UUID uuid; int scoreboardTipsShown; @@ -1052,46 +1052,46 @@ public final class SQLDatabaseManager implements DatabaseManager { final int OFFSET_DATS = 26; final int OFFSET_OTHER = 38; - skills.put(SkillType.TAMING, result.getInt(OFFSET_SKILLS + 1)); - skills.put(SkillType.MINING, result.getInt(OFFSET_SKILLS + 2)); - skills.put(SkillType.REPAIR, result.getInt(OFFSET_SKILLS + 3)); - skills.put(SkillType.WOODCUTTING, result.getInt(OFFSET_SKILLS + 4)); - skills.put(SkillType.UNARMED, result.getInt(OFFSET_SKILLS + 5)); - skills.put(SkillType.HERBALISM, result.getInt(OFFSET_SKILLS + 6)); - skills.put(SkillType.EXCAVATION, result.getInt(OFFSET_SKILLS + 7)); - skills.put(SkillType.ARCHERY, result.getInt(OFFSET_SKILLS + 8)); - skills.put(SkillType.SWORDS, result.getInt(OFFSET_SKILLS + 9)); - skills.put(SkillType.AXES, result.getInt(OFFSET_SKILLS + 10)); - skills.put(SkillType.ACROBATICS, result.getInt(OFFSET_SKILLS + 11)); - skills.put(SkillType.FISHING, result.getInt(OFFSET_SKILLS + 12)); - skills.put(SkillType.ALCHEMY, result.getInt(OFFSET_SKILLS + 13)); + skills.put(PrimarySkill.TAMING, result.getInt(OFFSET_SKILLS + 1)); + skills.put(PrimarySkill.MINING, result.getInt(OFFSET_SKILLS + 2)); + skills.put(PrimarySkill.REPAIR, result.getInt(OFFSET_SKILLS + 3)); + skills.put(PrimarySkill.WOODCUTTING, result.getInt(OFFSET_SKILLS + 4)); + skills.put(PrimarySkill.UNARMED, result.getInt(OFFSET_SKILLS + 5)); + skills.put(PrimarySkill.HERBALISM, result.getInt(OFFSET_SKILLS + 6)); + skills.put(PrimarySkill.EXCAVATION, result.getInt(OFFSET_SKILLS + 7)); + skills.put(PrimarySkill.ARCHERY, result.getInt(OFFSET_SKILLS + 8)); + skills.put(PrimarySkill.SWORDS, result.getInt(OFFSET_SKILLS + 9)); + skills.put(PrimarySkill.AXES, result.getInt(OFFSET_SKILLS + 10)); + skills.put(PrimarySkill.ACROBATICS, result.getInt(OFFSET_SKILLS + 11)); + skills.put(PrimarySkill.FISHING, result.getInt(OFFSET_SKILLS + 12)); + skills.put(PrimarySkill.ALCHEMY, result.getInt(OFFSET_SKILLS + 13)); - skillsXp.put(SkillType.TAMING, result.getFloat(OFFSET_XP + 1)); - skillsXp.put(SkillType.MINING, result.getFloat(OFFSET_XP + 2)); - skillsXp.put(SkillType.REPAIR, result.getFloat(OFFSET_XP + 3)); - skillsXp.put(SkillType.WOODCUTTING, result.getFloat(OFFSET_XP + 4)); - skillsXp.put(SkillType.UNARMED, result.getFloat(OFFSET_XP + 5)); - skillsXp.put(SkillType.HERBALISM, result.getFloat(OFFSET_XP + 6)); - skillsXp.put(SkillType.EXCAVATION, result.getFloat(OFFSET_XP + 7)); - skillsXp.put(SkillType.ARCHERY, result.getFloat(OFFSET_XP + 8)); - skillsXp.put(SkillType.SWORDS, result.getFloat(OFFSET_XP + 9)); - skillsXp.put(SkillType.AXES, result.getFloat(OFFSET_XP + 10)); - skillsXp.put(SkillType.ACROBATICS, result.getFloat(OFFSET_XP + 11)); - skillsXp.put(SkillType.FISHING, result.getFloat(OFFSET_XP + 12)); - skillsXp.put(SkillType.ALCHEMY, result.getFloat(OFFSET_XP + 13)); + skillsXp.put(PrimarySkill.TAMING, result.getFloat(OFFSET_XP + 1)); + skillsXp.put(PrimarySkill.MINING, result.getFloat(OFFSET_XP + 2)); + skillsXp.put(PrimarySkill.REPAIR, result.getFloat(OFFSET_XP + 3)); + skillsXp.put(PrimarySkill.WOODCUTTING, result.getFloat(OFFSET_XP + 4)); + skillsXp.put(PrimarySkill.UNARMED, result.getFloat(OFFSET_XP + 5)); + skillsXp.put(PrimarySkill.HERBALISM, result.getFloat(OFFSET_XP + 6)); + skillsXp.put(PrimarySkill.EXCAVATION, result.getFloat(OFFSET_XP + 7)); + skillsXp.put(PrimarySkill.ARCHERY, result.getFloat(OFFSET_XP + 8)); + skillsXp.put(PrimarySkill.SWORDS, result.getFloat(OFFSET_XP + 9)); + skillsXp.put(PrimarySkill.AXES, result.getFloat(OFFSET_XP + 10)); + skillsXp.put(PrimarySkill.ACROBATICS, result.getFloat(OFFSET_XP + 11)); + skillsXp.put(PrimarySkill.FISHING, result.getFloat(OFFSET_XP + 12)); + skillsXp.put(PrimarySkill.ALCHEMY, result.getFloat(OFFSET_XP + 13)); // Taming - Unused - result.getInt(OFFSET_DATS + 1) - skillsDATS.put(AbilityType.SUPER_BREAKER, result.getInt(OFFSET_DATS + 2)); + skillsDATS.put(SuperAbility.SUPER_BREAKER, result.getInt(OFFSET_DATS + 2)); // Repair - Unused - result.getInt(OFFSET_DATS + 3) - skillsDATS.put(AbilityType.TREE_FELLER, result.getInt(OFFSET_DATS + 4)); - skillsDATS.put(AbilityType.BERSERK, result.getInt(OFFSET_DATS + 5)); - skillsDATS.put(AbilityType.GREEN_TERRA, result.getInt(OFFSET_DATS + 6)); - skillsDATS.put(AbilityType.GIGA_DRILL_BREAKER, result.getInt(OFFSET_DATS + 7)); + skillsDATS.put(SuperAbility.TREE_FELLER, result.getInt(OFFSET_DATS + 4)); + skillsDATS.put(SuperAbility.BERSERK, result.getInt(OFFSET_DATS + 5)); + skillsDATS.put(SuperAbility.GREEN_TERRA, result.getInt(OFFSET_DATS + 6)); + skillsDATS.put(SuperAbility.GIGA_DRILL_BREAKER, result.getInt(OFFSET_DATS + 7)); // Archery - Unused - result.getInt(OFFSET_DATS + 8) - skillsDATS.put(AbilityType.SERRATED_STRIKES, result.getInt(OFFSET_DATS + 9)); - skillsDATS.put(AbilityType.SKULL_SPLITTER, result.getInt(OFFSET_DATS + 10)); + skillsDATS.put(SuperAbility.SERRATED_STRIKES, result.getInt(OFFSET_DATS + 9)); + skillsDATS.put(SuperAbility.SKULL_SPLITTER, result.getInt(OFFSET_DATS + 10)); // Acrobatics - Unused - result.getInt(OFFSET_DATS + 11) - skillsDATS.put(AbilityType.BLAST_MINING, result.getInt(OFFSET_DATS + 12)); + skillsDATS.put(SuperAbility.BLAST_MINING, result.getInt(OFFSET_DATS + 12)); try { mobHealthbarType = MobHealthbarType.valueOf(result.getString(OFFSET_OTHER + 1)); @@ -1209,10 +1209,10 @@ public final class SQLDatabaseManager implements DatabaseManager { resultSet = statement.executeQuery("SHOW INDEX FROM `" + tablePrefix + "skills` WHERE `Key_name` LIKE 'idx\\_%'"); resultSet.last(); - if (resultSet.getRow() != SkillType.NON_CHILD_SKILLS.size()) { + if (resultSet.getRow() != PrimarySkill.NON_CHILD_SKILLS.size()) { mcMMO.p.getLogger().info("Indexing tables, this may take a while on larger databases"); - for (SkillType skill : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill skill : PrimarySkill.NON_CHILD_SKILLS) { String skill_name = skill.name().toLowerCase(); try { diff --git a/src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java b/src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java index ffa6b1e74..8eb768e8e 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java +++ b/src/main/java/com/gmail/nossr50/datatypes/experience/SkillXpGain.java @@ -4,20 +4,20 @@ import java.util.concurrent.Delayed; import java.util.concurrent.TimeUnit; import com.gmail.nossr50.config.experience.ExperienceConfig; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; public class SkillXpGain implements Delayed { private final long expiryTime; private final float xp; - private final SkillType type; + private final PrimarySkill type; - public SkillXpGain(SkillType type, float xp) { + public SkillXpGain(PrimarySkill type, float xp) { this.expiryTime = System.currentTimeMillis() + getDuration(); this.xp = xp; this.type = type; } - public SkillType getSkill() { + public PrimarySkill getSkill() { return type; } 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 31b30628d..12c0fd69b 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/McMMOPlayer.java @@ -7,8 +7,8 @@ import com.gmail.nossr50.datatypes.chat.ChatMode; import com.gmail.nossr50.datatypes.mods.CustomTool; import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.party.PartyTeleportRecord; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; @@ -61,7 +61,7 @@ public class McMMOPlayer { private Player player; private PlayerProfile profile; - private final Map skillManagers = new HashMap(); + private final Map skillManagers = new HashMap(); private Party party; private Party invite; @@ -77,8 +77,8 @@ public class McMMOPlayer { private boolean abilityUse = true; private boolean godMode; - private final Map abilityMode = new HashMap(); - private final Map abilityInformed = new HashMap(); + private final Map abilityMode = new HashMap(); + private final Map abilityInformed = new HashMap(); private final Map toolMode = new HashMap(); @@ -107,11 +107,11 @@ public class McMMOPlayer { /* * I'm using this method because it makes code shorter and safer (we don't have to add all SkillTypes manually), * but I actually have no idea about the performance impact, if there is any. - * If in the future someone wants to remove this, don't forget to also remove what is in the SkillType enum. - bm01 + * If in the future someone wants to remove this, don't forget to also remove what is in the PrimarySkill enum. - bm01 */ try { - for (SkillType skillType : SkillType.values()) { - skillManagers.put(skillType, skillType.getManagerClass().getConstructor(McMMOPlayer.class).newInstance(this)); + for (PrimarySkill primarySkill : PrimarySkill.values()) { + skillManagers.put(primarySkill, primarySkill.getManagerClass().getConstructor(McMMOPlayer.class).newInstance(this)); } } catch (Exception e) { @@ -119,9 +119,9 @@ public class McMMOPlayer { mcMMO.p.getPluginLoader().disablePlugin(mcMMO.p); } - for (AbilityType abilityType : AbilityType.values()) { - abilityMode.put(abilityType, false); - abilityInformed.put(abilityType, true); // This is intended + for (SuperAbility superAbility : SuperAbility.values()) { + abilityMode.put(superAbility, false); + abilityInformed.put(superAbility, true); // This is intended } for (ToolType toolType : ToolType.values()) { @@ -130,63 +130,63 @@ public class McMMOPlayer { } public AcrobaticsManager getAcrobaticsManager() { - return (AcrobaticsManager) skillManagers.get(SkillType.ACROBATICS); + return (AcrobaticsManager) skillManagers.get(PrimarySkill.ACROBATICS); } public AlchemyManager getAlchemyManager() { - return (AlchemyManager) skillManagers.get(SkillType.ALCHEMY); + return (AlchemyManager) skillManagers.get(PrimarySkill.ALCHEMY); } public ArcheryManager getArcheryManager() { - return (ArcheryManager) skillManagers.get(SkillType.ARCHERY); + return (ArcheryManager) skillManagers.get(PrimarySkill.ARCHERY); } public AxesManager getAxesManager() { - return (AxesManager) skillManagers.get(SkillType.AXES); + return (AxesManager) skillManagers.get(PrimarySkill.AXES); } public ExcavationManager getExcavationManager() { - return (ExcavationManager) skillManagers.get(SkillType.EXCAVATION); + return (ExcavationManager) skillManagers.get(PrimarySkill.EXCAVATION); } public FishingManager getFishingManager() { - return (FishingManager) skillManagers.get(SkillType.FISHING); + return (FishingManager) skillManagers.get(PrimarySkill.FISHING); } public HerbalismManager getHerbalismManager() { - return (HerbalismManager) skillManagers.get(SkillType.HERBALISM); + return (HerbalismManager) skillManagers.get(PrimarySkill.HERBALISM); } public MiningManager getMiningManager() { - return (MiningManager) skillManagers.get(SkillType.MINING); + return (MiningManager) skillManagers.get(PrimarySkill.MINING); } public RepairManager getRepairManager() { - return (RepairManager) skillManagers.get(SkillType.REPAIR); + return (RepairManager) skillManagers.get(PrimarySkill.REPAIR); } public SalvageManager getSalvageManager() { - return (SalvageManager) skillManagers.get(SkillType.SALVAGE); + return (SalvageManager) skillManagers.get(PrimarySkill.SALVAGE); } public SmeltingManager getSmeltingManager() { - return (SmeltingManager) skillManagers.get(SkillType.SMELTING); + return (SmeltingManager) skillManagers.get(PrimarySkill.SMELTING); } public SwordsManager getSwordsManager() { - return (SwordsManager) skillManagers.get(SkillType.SWORDS); + return (SwordsManager) skillManagers.get(PrimarySkill.SWORDS); } public TamingManager getTamingManager() { - return (TamingManager) skillManagers.get(SkillType.TAMING); + return (TamingManager) skillManagers.get(PrimarySkill.TAMING); } public UnarmedManager getUnarmedManager() { - return (UnarmedManager) skillManagers.get(SkillType.UNARMED); + return (UnarmedManager) skillManagers.get(PrimarySkill.UNARMED); } public WoodcuttingManager getWoodcuttingManager() { - return (WoodcuttingManager) skillManagers.get(SkillType.WOODCUTTING); + return (WoodcuttingManager) skillManagers.get(PrimarySkill.WOODCUTTING); } /* @@ -197,7 +197,7 @@ public class McMMOPlayer { * Reset the mode of all abilities. */ public void resetAbilityMode() { - for (AbilityType ability : AbilityType.values()) { + for (SuperAbility ability : SuperAbility.values()) { // Correctly disable and handle any special deactivate code new AbilityDisableTask(this, ability).run(); } @@ -209,7 +209,7 @@ public class McMMOPlayer { * @param ability The ability to check * @return true if the ability is enabled, false otherwise */ - public boolean getAbilityMode(AbilityType ability) { + public boolean getAbilityMode(SuperAbility ability) { return abilityMode.get(ability); } @@ -219,7 +219,7 @@ public class McMMOPlayer { * @param ability The ability to check * @param isActive True if the ability is active, false otherwise */ - public void setAbilityMode(AbilityType ability, boolean isActive) { + public void setAbilityMode(SuperAbility ability, boolean isActive) { abilityMode.put(ability, isActive); } @@ -229,7 +229,7 @@ public class McMMOPlayer { * @param ability The ability to check * @return true if the ability is informed, false otherwise */ - public boolean getAbilityInformed(AbilityType ability) { + public boolean getAbilityInformed(SuperAbility ability) { return abilityInformed.get(ability); } @@ -239,7 +239,7 @@ public class McMMOPlayer { * @param ability The ability to check * @param isInformed True if the ability is informed, false otherwise */ - public void setAbilityInformed(AbilityType ability, boolean isInformed) { + public void setAbilityInformed(SuperAbility ability, boolean isInformed) { abilityInformed.put(ability, isInformed); } @@ -384,7 +384,7 @@ public class McMMOPlayer { public int getPowerLevel() { int powerLevel = 0; - for (SkillType type : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill type : PrimarySkill.NON_CHILD_SKILLS) { if (type.getPermissions(player)) { powerLevel += getSkillLevel(type); } @@ -399,7 +399,7 @@ public class McMMOPlayer { * @param skill Skill being used * @param xp Experience amount to process */ - public void beginXpGain(SkillType skill, float xp, XPGainReason xpGainReason) { + public void beginXpGain(PrimarySkill skill, float xp, XPGainReason xpGainReason) { Validate.isTrue(xp >= 0.0, "XP gained should be greater than or equal to zero."); if (xp <= 0.0) { @@ -407,10 +407,10 @@ public class McMMOPlayer { } if (skill.isChildSkill()) { - Set parentSkills = FamilyTree.getParents(skill); + Set parentSkills = FamilyTree.getParents(skill); float splitXp = xp / parentSkills.size(); - for (SkillType parentSkill : parentSkills) { + for (PrimarySkill parentSkill : parentSkills) { if (parentSkill.getPermissions(player)) { beginXpGain(parentSkill, splitXp, xpGainReason); } @@ -433,7 +433,7 @@ public class McMMOPlayer { * @param skill Skill being used * @param xp Experience amount to process */ - public void beginUnsharedXpGain(SkillType skill, float xp, XPGainReason xpGainReason) { + public void beginUnsharedXpGain(PrimarySkill skill, float xp, XPGainReason xpGainReason) { applyXpGain(skill, modifyXpGain(skill, xp), xpGainReason); if (party == null) { @@ -448,56 +448,56 @@ public class McMMOPlayer { /** * Applies an experience gain * - * @param skillType Skill being used + * @param primarySkill Skill being used * @param xp Experience amount to add */ - public void applyXpGain(SkillType skillType, float xp, XPGainReason xpGainReason) { - if (!skillType.getPermissions(player)) { + public void applyXpGain(PrimarySkill primarySkill, float xp, XPGainReason xpGainReason) { + if (!primarySkill.getPermissions(player)) { return; } - if (skillType.isChildSkill()) { - Set parentSkills = FamilyTree.getParents(skillType); + if (primarySkill.isChildSkill()) { + Set parentSkills = FamilyTree.getParents(primarySkill); - for (SkillType parentSkill : parentSkills) { + for (PrimarySkill parentSkill : parentSkills) { applyXpGain(parentSkill, xp / parentSkills.size(), xpGainReason); } return; } - if (!EventUtils.handleXpGainEvent(player, skillType, xp, xpGainReason)) { + if (!EventUtils.handleXpGainEvent(player, primarySkill, xp, xpGainReason)) { return; } - isUsingUnarmed = (skillType == SkillType.UNARMED); - checkXp(skillType, xpGainReason); + isUsingUnarmed = (primarySkill == PrimarySkill.UNARMED); + checkXp(primarySkill, xpGainReason); } /** * Check the XP of a skill. * - * @param skillType The skill to check + * @param primarySkill The skill to check */ - private void checkXp(SkillType skillType, XPGainReason xpGainReason) { - if (getSkillXpLevelRaw(skillType) < getXpToLevel(skillType)) { + private void checkXp(PrimarySkill primarySkill, XPGainReason xpGainReason) { + if (getSkillXpLevelRaw(primarySkill) < getXpToLevel(primarySkill)) { return; } int levelsGained = 0; float xpRemoved = 0; - while (getSkillXpLevelRaw(skillType) >= getXpToLevel(skillType)) { - if (hasReachedLevelCap(skillType)) { - setSkillXpLevel(skillType, 0); + while (getSkillXpLevelRaw(primarySkill) >= getXpToLevel(primarySkill)) { + if (hasReachedLevelCap(primarySkill)) { + setSkillXpLevel(primarySkill, 0); break; } - xpRemoved += profile.levelUp(skillType); + xpRemoved += profile.levelUp(primarySkill); levelsGained++; } - if (!EventUtils.handleLevelChangeEvent(player, skillType, levelsGained, xpRemoved, true, xpGainReason)) { + if (!EventUtils.handleLevelChangeEvent(player, primarySkill, levelsGained, xpRemoved, true, xpGainReason)) { return; } @@ -505,7 +505,7 @@ public class McMMOPlayer { player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, Misc.LEVELUP_VOLUME, Misc.LEVELUP_PITCH); } - player.sendMessage(LocaleLoader.getString(StringUtils.getCapitalized(skillType.toString()) + ".Skillup", levelsGained, getSkillLevel(skillType))); + player.sendMessage(LocaleLoader.getString(StringUtils.getCapitalized(primarySkill.toString()) + ".Skillup", levelsGained, getSkillLevel(primarySkill))); } /* @@ -675,16 +675,16 @@ public class McMMOPlayer { /** * Modifies an experience gain using skill modifiers, global rate and perks * - * @param skillType Skill being used + * @param primarySkill Skill being used * @param xp Experience amount to process * @return Modified experience */ - private float modifyXpGain(SkillType skillType, float xp) { - if (player.getGameMode() == GameMode.CREATIVE || (skillType.getMaxLevel() <= getSkillLevel(skillType)) || (Config.getInstance().getPowerLevelCap() <= getPowerLevel())) { + private float modifyXpGain(PrimarySkill primarySkill, float xp) { + if (player.getGameMode() == GameMode.CREATIVE || (primarySkill.getMaxLevel() <= getSkillLevel(primarySkill)) || (Config.getInstance().getPowerLevelCap() <= getPowerLevel())) { return 0; } - xp = (float) (xp / skillType.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()); + xp = (float) (xp / primarySkill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()); if (Config.getInstance().getToolModsEnabled()) { CustomTool tool = mcMMO.getModManager().getTool(player.getInventory().getItemInMainHand()); @@ -694,7 +694,7 @@ public class McMMOPlayer { } } - return PerksUtils.handleXpPerks(player, xp, skillType); + return PerksUtils.handleXpPerks(player, xp, primarySkill); } public void checkGodMode() { @@ -716,9 +716,9 @@ public class McMMOPlayer { * * @param skill The skill the ability is based on */ - public void checkAbilityActivation(SkillType skill) { + public void checkAbilityActivation(PrimarySkill skill) { ToolType tool = skill.getTool(); - AbilityType ability = skill.getAbility(); + SuperAbility ability = skill.getAbility(); setToolPreparationMode(tool, false); @@ -746,7 +746,7 @@ public class McMMOPlayer { * Axes and Woodcutting are odd because they share the same tool. * We show them the too tired message when they take action. */ - if (skill == SkillType.WOODCUTTING || skill == SkillType.AXES) { + if (skill == PrimarySkill.WOODCUTTING || skill == PrimarySkill.AXES) { player.sendMessage(LocaleLoader.getString("Skills.TooTired", timeRemaining)); } @@ -772,14 +772,14 @@ public class McMMOPlayer { profile.setAbilityDATS(ability, System.currentTimeMillis() + (ticks * Misc.TIME_CONVERSION_FACTOR)); setAbilityMode(ability, true); - if (ability == AbilityType.SUPER_BREAKER || ability == AbilityType.GIGA_DRILL_BREAKER) { + if (ability == SuperAbility.SUPER_BREAKER || ability == SuperAbility.GIGA_DRILL_BREAKER) { SkillUtils.handleAbilitySpeedIncrease(player); } new AbilityDisableTask(this, ability).runTaskLater(mcMMO.p, ticks * Misc.TICK_CONVERSION_FACTOR); } - public void processAbilityActivation(SkillType skill) { + public void processAbilityActivation(PrimarySkill skill) { if (Config.getInstance().getAbilitiesOnlyActivateWhenSneaking() && !player.isSneaking()) { return; } @@ -794,13 +794,13 @@ public class McMMOPlayer { return; } - for (AbilityType abilityType : AbilityType.values()) { - if (getAbilityMode(abilityType)) { + for (SuperAbility superAbility : SuperAbility.values()) { + if (getAbilityMode(superAbility)) { return; } } - AbilityType ability = skill.getAbility(); + SuperAbility ability = skill.getAbility(); ToolType tool = skill.getTool(); /* @@ -808,7 +808,7 @@ public class McMMOPlayer { * Basically the tool always needs to ready and we check to see if the cooldown is over when the user takes action */ if (ability.getPermissions(player) && tool.inHand(inHand) && !getToolPreparationMode(tool)) { - if (skill != SkillType.WOODCUTTING && skill != SkillType.AXES) { + if (skill != PrimarySkill.WOODCUTTING && skill != PrimarySkill.AXES) { int timeRemaining = calculateTimeRemaining(ability); if (!getAbilityMode(ability) && timeRemaining > 0) { @@ -829,59 +829,59 @@ public class McMMOPlayer { /** * Calculate the time remaining until the ability's cooldown expires. * - * @param ability AbilityType whose cooldown to check + * @param ability SuperAbility whose cooldown to check * * @return the number of seconds remaining before the cooldown expires */ - public int calculateTimeRemaining(AbilityType ability) { + public int calculateTimeRemaining(SuperAbility ability) { long deactivatedTimestamp = profile.getAbilityDATS(ability) * Misc.TIME_CONVERSION_FACTOR; return (int) (((deactivatedTimestamp + (PerksUtils.handleCooldownPerks(player, ability.getCooldown()) * Misc.TIME_CONVERSION_FACTOR)) - System.currentTimeMillis()) / Misc.TIME_CONVERSION_FACTOR); } - private boolean hasReachedLevelCap(SkillType skill) { + private boolean hasReachedLevelCap(PrimarySkill skill) { return (skill.getMaxLevel() < getSkillLevel(skill) + 1) || (Config.getInstance().getPowerLevelCap() < getPowerLevel() + 1); } /* * These functions are wrapped from PlayerProfile so that we don't always have to store it alongside the McMMOPlayer object. */ - public int getSkillLevel(SkillType skill) { + public int getSkillLevel(PrimarySkill skill) { return profile.getSkillLevel(skill); } - public float getSkillXpLevelRaw(SkillType skill) { + public float getSkillXpLevelRaw(PrimarySkill skill) { return profile.getSkillXpLevelRaw(skill); } - public int getSkillXpLevel(SkillType skill) { + public int getSkillXpLevel(PrimarySkill skill) { return profile.getSkillXpLevel(skill); } - public void setSkillXpLevel(SkillType skill, float xpLevel) { + public void setSkillXpLevel(PrimarySkill skill, float xpLevel) { profile.setSkillXpLevel(skill, xpLevel); } - public int getXpToLevel(SkillType skill) { + public int getXpToLevel(PrimarySkill skill) { return profile.getXpToLevel(skill); } - public void removeXp(SkillType skill, int xp) { + public void removeXp(PrimarySkill skill, int xp) { profile.removeXp(skill, xp); } - public void modifySkill(SkillType skill, int level) { + public void modifySkill(PrimarySkill skill, int level) { profile.modifySkill(skill, level); } - public void addLevels(SkillType skill, int levels) { + public void addLevels(PrimarySkill skill, int levels) { profile.addLevels(skill, levels); } - public void addXp(SkillType skill, float xp) { + public void addXp(PrimarySkill skill, float xp) { profile.addXp(skill, xp); } - public void setAbilityDATS(AbilityType ability, long DATS) { + public void setAbilityDATS(SuperAbility ability, long DATS) { profile.setAbilityDATS(ability, DATS); } 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 b55cfd98b..b7948e548 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java +++ b/src/main/java/com/gmail/nossr50/datatypes/player/PlayerProfile.java @@ -6,14 +6,14 @@ import java.util.Set; import java.util.UUID; import java.util.concurrent.DelayQueue; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SuperAbility; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.MobHealthbarType; import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.experience.SkillXpGain; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.runnables.player.PlayerProfileSaveTask; import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.util.player.UserManager; @@ -31,13 +31,13 @@ public class PlayerProfile { private int scoreboardTipsShown; /* Skill Data */ - private final Map skills = new HashMap(); // Skill & Level - private final Map skillsXp = new HashMap(); // Skill & XP - private final Map abilityDATS = new HashMap(); // Ability & Cooldown + private final Map skills = new HashMap(); // Skill & Level + private final Map skillsXp = new HashMap(); // Skill & XP + private final Map abilityDATS = new HashMap(); // Ability & Cooldown // Store previous XP gains for deminished returns private DelayQueue gainedSkillsXp = new DelayQueue(); - private HashMap rollingSkillsXp = new HashMap(); + private HashMap rollingSkillsXp = new HashMap(); @Deprecated public PlayerProfile(String playerName) { @@ -51,13 +51,13 @@ public class PlayerProfile { mobHealthbarType = Config.getInstance().getMobHealthbarDefault(); scoreboardTipsShown = 0; - for (AbilityType abilityType : AbilityType.values()) { - abilityDATS.put(abilityType, 0); + for (SuperAbility superAbility : SuperAbility.values()) { + abilityDATS.put(superAbility, 0); } - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - skills.put(skillType, 0); - skillsXp.put(skillType, 0F); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + skills.put(primarySkill, 0); + skillsXp.put(primarySkill, 0F); } } @@ -72,7 +72,7 @@ public class PlayerProfile { this.loaded = isLoaded; } - public PlayerProfile(String playerName, UUID uuid, Map levelData, Map xpData, Map cooldownData, MobHealthbarType mobHealthbarType, int scoreboardTipsShown) { + public PlayerProfile(String playerName, UUID uuid, Map levelData, Map xpData, Map cooldownData, MobHealthbarType mobHealthbarType, int scoreboardTipsShown) { this.playerName = playerName; this.uuid = uuid; this.mobHealthbarType = mobHealthbarType; @@ -156,20 +156,20 @@ public class PlayerProfile { /** * Get the current deactivation timestamp of an ability. * - * @param ability The {@link AbilityType} to get the DATS for + * @param ability The {@link SuperAbility} to get the DATS for * @return the deactivation timestamp for the ability */ - public long getAbilityDATS(AbilityType ability) { + public long getAbilityDATS(SuperAbility ability) { return abilityDATS.get(ability); } /** * Set the current deactivation timestamp of an ability. * - * @param ability The {@link AbilityType} to set the DATS for + * @param ability The {@link SuperAbility} to set the DATS for * @param DATS the DATS of the ability */ - protected void setAbilityDATS(AbilityType ability, long DATS) { + protected void setAbilityDATS(SuperAbility ability, long DATS) { changed = true; abilityDATS.put(ability, (int) (DATS * .001D)); @@ -181,7 +181,7 @@ public class PlayerProfile { protected void resetCooldowns() { changed = true; - for (AbilityType ability : abilityDATS.keySet()) { + for (SuperAbility ability : abilityDATS.keySet()) { abilityDATS.put(ability, 0); } } @@ -190,19 +190,19 @@ public class PlayerProfile { * Xp Functions */ - public int getSkillLevel(SkillType skill) { + public int getSkillLevel(PrimarySkill skill) { return skill.isChildSkill() ? getChildSkillLevel(skill) : skills.get(skill); } - public float getSkillXpLevelRaw(SkillType skill) { + public float getSkillXpLevelRaw(PrimarySkill skill) { return skillsXp.get(skill); } - public int getSkillXpLevel(SkillType skill) { + public int getSkillXpLevel(PrimarySkill skill) { return (int) Math.floor(getSkillXpLevelRaw(skill)); } - public void setSkillXpLevel(SkillType skill, float xpLevel) { + public void setSkillXpLevel(PrimarySkill skill, float xpLevel) { if (skill.isChildSkill()) { return; } @@ -212,7 +212,7 @@ public class PlayerProfile { skillsXp.put(skill, xpLevel); } - protected float levelUp(SkillType skill) { + protected float levelUp(PrimarySkill skill) { float xpRemoved = getXpToLevel(skill); changed = true; @@ -229,7 +229,7 @@ public class PlayerProfile { * @param skill Type of skill to modify * @param xp Amount of xp to remove */ - public void removeXp(SkillType skill, int xp) { + public void removeXp(PrimarySkill skill, int xp) { if (skill.isChildSkill()) { return; } @@ -239,7 +239,7 @@ public class PlayerProfile { skillsXp.put(skill, skillsXp.get(skill) - xp); } - public void removeXp(SkillType skill, float xp) { + public void removeXp(PrimarySkill skill, float xp) { if (skill.isChildSkill()) { return; } @@ -255,7 +255,7 @@ public class PlayerProfile { * @param skill Type of skill to modify * @param level New level value for the skill */ - public void modifySkill(SkillType skill, int level) { + public void modifySkill(PrimarySkill skill, int level) { if (skill.isChildSkill()) { return; } @@ -272,7 +272,7 @@ public class PlayerProfile { * @param skill Type of skill to add levels to * @param levels Number of levels to add */ - public void addLevels(SkillType skill, int levels) { + public void addLevels(PrimarySkill skill, int levels) { modifySkill(skill, skills.get(skill) + levels); } @@ -282,14 +282,14 @@ public class PlayerProfile { * @param skill Type of skill to add experience to * @param xp Number of experience to add */ - public void addXp(SkillType skill, float xp) { + public void addXp(PrimarySkill skill, float xp) { changed = true; if (skill.isChildSkill()) { - Set parentSkills = FamilyTree.getParents(skill); + Set parentSkills = FamilyTree.getParents(skill); float dividedXP = (xp / parentSkills.size()); - for (SkillType parentSkill : parentSkills) { + for (PrimarySkill parentSkill : parentSkills) { skillsXp.put(parentSkill, skillsXp.get(parentSkill) + dividedXP); } } @@ -304,11 +304,11 @@ public class PlayerProfile { * * @return xp Experience amount registered */ - public float getRegisteredXpGain(SkillType skillType) { + public float getRegisteredXpGain(PrimarySkill primarySkill) { float xp = 0F; - if (rollingSkillsXp.get(skillType) != null) { - xp = rollingSkillsXp.get(skillType); + if (rollingSkillsXp.get(primarySkill) != null) { + xp = rollingSkillsXp.get(primarySkill); } return xp; @@ -318,12 +318,12 @@ public class PlayerProfile { * Register an experience gain * This is used for diminished XP returns * - * @param skillType Skill being used + * @param primarySkill Skill being used * @param xp Experience amount to add */ - public void registerXpGain(SkillType skillType, float xp) { - gainedSkillsXp.add(new SkillXpGain(skillType, xp)); - rollingSkillsXp.put(skillType, getRegisteredXpGain(skillType) + xp); + public void registerXpGain(PrimarySkill primarySkill, float xp) { + gainedSkillsXp.add(new SkillXpGain(primarySkill, xp)); + rollingSkillsXp.put(primarySkill, getRegisteredXpGain(primarySkill) + xp); } /** @@ -340,21 +340,21 @@ public class PlayerProfile { /** * Get the amount of Xp remaining before the next level. * - * @param skillType Type of skill to check + * @param primarySkill Type of skill to check * @return the total amount of Xp until next level */ - public int getXpToLevel(SkillType skillType) { - int level = (ExperienceConfig.getInstance().getCumulativeCurveEnabled()) ? UserManager.getPlayer(playerName).getPowerLevel() : skills.get(skillType); + public int getXpToLevel(PrimarySkill primarySkill) { + int level = (ExperienceConfig.getInstance().getCumulativeCurveEnabled()) ? UserManager.getPlayer(playerName).getPowerLevel() : skills.get(primarySkill); FormulaType formulaType = ExperienceConfig.getInstance().getFormulaType(); return mcMMO.getFormulaManager().getCachedXpToLevel(level, formulaType); } - private int getChildSkillLevel(SkillType skillType) { - Set parents = FamilyTree.getParents(skillType); + private int getChildSkillLevel(PrimarySkill primarySkill) { + Set parents = FamilyTree.getParents(primarySkill); int sum = 0; - for (SkillType parent : parents) { + for (PrimarySkill parent : parents) { sum += Math.min(getSkillLevel(parent), parent.getMaxLevel()); } diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/SkillType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkill.java similarity index 60% rename from src/main/java/com/gmail/nossr50/datatypes/skills/SkillType.java rename to src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkill.java index 8193d7123..8b3ddff0c 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/SkillType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkill.java @@ -35,44 +35,44 @@ import com.gmail.nossr50.util.skills.ParticleEffectUtils; import com.google.common.collect.ImmutableList; -public enum SkillType { - ACROBATICS(AcrobaticsManager.class, Color.WHITE, ImmutableList.of(SecondaryAbility.DODGE, SecondaryAbility.GRACEFUL_ROLL, SecondaryAbility.ROLL)), - ALCHEMY(AlchemyManager.class, Color.FUCHSIA, ImmutableList.of(SecondaryAbility.CATALYSIS, SecondaryAbility.CONCOCTIONS)), - ARCHERY(ArcheryManager.class, Color.MAROON, ImmutableList.of(SecondaryAbility.DAZE, SecondaryAbility.RETRIEVE, SecondaryAbility.SKILL_SHOT)), - AXES(AxesManager.class, Color.AQUA, AbilityType.SKULL_SPLITTER, ToolType.AXE, ImmutableList.of(SecondaryAbility.ARMOR_IMPACT, SecondaryAbility.AXE_MASTERY, SecondaryAbility.CRITICAL_HIT, SecondaryAbility.GREATER_IMPACT)), - EXCAVATION(ExcavationManager.class, Color.fromRGB(139, 69, 19), AbilityType.GIGA_DRILL_BREAKER, ToolType.SHOVEL, ImmutableList.of(SecondaryAbility.EXCAVATION_TREASURE_HUNTER)), - FISHING(FishingManager.class, Color.NAVY, ImmutableList.of(SecondaryAbility.FISHERMANS_DIET, SecondaryAbility.FISHING_TREASURE_HUNTER, SecondaryAbility.ICE_FISHING, SecondaryAbility.MAGIC_HUNTER, SecondaryAbility.MASTER_ANGLER, SecondaryAbility.SHAKE)), - HERBALISM(HerbalismManager.class, Color.GREEN, AbilityType.GREEN_TERRA, ToolType.HOE, ImmutableList.of(SecondaryAbility.FARMERS_DIET, SecondaryAbility.GREEN_THUMB_PLANT, SecondaryAbility.GREEN_THUMB_BLOCK, SecondaryAbility.HERBALISM_DOUBLE_DROPS, SecondaryAbility.HYLIAN_LUCK, SecondaryAbility.SHROOM_THUMB)), - MINING(MiningManager.class, Color.GRAY, AbilityType.SUPER_BREAKER, ToolType.PICKAXE, ImmutableList.of(SecondaryAbility.MINING_DOUBLE_DROPS)), - REPAIR(RepairManager.class, Color.SILVER, ImmutableList.of(SecondaryAbility.ARCANE_FORGING, SecondaryAbility.REPAIR_MASTERY, SecondaryAbility.SUPER_REPAIR)), - SALVAGE(SalvageManager.class, Color.ORANGE, ImmutableList.of(SecondaryAbility.ADVANCED_SALVAGE, SecondaryAbility.ARCANE_SALVAGE)), - SMELTING(SmeltingManager.class, Color.YELLOW, ImmutableList.of(SecondaryAbility.FLUX_MINING, SecondaryAbility.FUEL_EFFICIENCY, SecondaryAbility.SECOND_SMELT)), - SWORDS(SwordsManager.class, Color.fromRGB(178, 34, 34), AbilityType.SERRATED_STRIKES, ToolType.SWORD, ImmutableList.of(SecondaryAbility.BLEED, SecondaryAbility.COUNTER)), - TAMING(TamingManager.class, Color.PURPLE, ImmutableList.of(SecondaryAbility.BEAST_LORE, SecondaryAbility.CALL_OF_THE_WILD, SecondaryAbility.ENVIRONMENTALLY_AWARE, SecondaryAbility.FAST_FOOD, SecondaryAbility.GORE, SecondaryAbility.HOLY_HOUND, SecondaryAbility.SHARPENED_CLAWS, SecondaryAbility.SHOCK_PROOF, SecondaryAbility.THICK_FUR, SecondaryAbility.PUMMEL)), - UNARMED(UnarmedManager.class, Color.BLACK, AbilityType.BERSERK, ToolType.FISTS, ImmutableList.of(SecondaryAbility.BLOCK_CRACKER, SecondaryAbility.DEFLECT, SecondaryAbility.DISARM, SecondaryAbility.IRON_ARM, SecondaryAbility.IRON_GRIP)), - WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, AbilityType.TREE_FELLER, ToolType.AXE, ImmutableList.of(SecondaryAbility.WOODCUTTING_LEAF_BLOWER, SecondaryAbility.WOODCUTTING_HARVEST)); +public enum PrimarySkill { + ACROBATICS(AcrobaticsManager.class, Color.WHITE, ImmutableList.of(SubSkill.ACROBATICS_DODGE, SubSkill.ACROBATICS_GRACEFUL_ROLL, SubSkill.ACROBATICS_ROLL)), + ALCHEMY(AlchemyManager.class, Color.FUCHSIA, ImmutableList.of(SubSkill.ALCHEMY_CATALYSIS, SubSkill.ALCHEMY_CONCOCTIONS)), + ARCHERY(ArcheryManager.class, Color.MAROON, ImmutableList.of(SubSkill.ARCHERY_DAZE, SubSkill.ARCHERY_RETRIEVE, SubSkill.ARCHERY_SKILL_SHOT)), + AXES(AxesManager.class, Color.AQUA, SuperAbility.SKULL_SPLITTER, ToolType.AXE, ImmutableList.of(SubSkill.AXES_ARMOR_IMPACT, SubSkill.AXES_AXE_MASTERY, SubSkill.AXES_CRITICAL_HIT, SubSkill.AXES_GREATER_IMPACT)), + EXCAVATION(ExcavationManager.class, Color.fromRGB(139, 69, 19), SuperAbility.GIGA_DRILL_BREAKER, ToolType.SHOVEL, ImmutableList.of(SubSkill.EXCAVATION_TREASURE_HUNTER)), + FISHING(FishingManager.class, Color.NAVY, ImmutableList.of(SubSkill.FISHING_FISHERMANS_DIET, SubSkill.FISHING_TREASURE_HUNTER, SubSkill.FISHING_ICE_FISHING, SubSkill.FISHING_MAGIC_HUNTER, SubSkill.FISHING_MASTER_ANGLER, SubSkill.FISHING_SHAKE)), + HERBALISM(HerbalismManager.class, Color.GREEN, SuperAbility.GREEN_TERRA, ToolType.HOE, ImmutableList.of(SubSkill.HERBALISM_FARMERS_DIET, SubSkill.HERBALISM_GREEN_THUMB, SubSkill.HERBALISM_DOUBLE_DROPS, SubSkill.HERBALISM_HYLIAN_LUCK, SubSkill.HERBALISM_SHROOM_THUMB)), + MINING(MiningManager.class, Color.GRAY, SuperAbility.SUPER_BREAKER, ToolType.PICKAXE, ImmutableList.of(SubSkill.MINING_DOUBLE_DROPS)), + REPAIR(RepairManager.class, Color.SILVER, ImmutableList.of(SubSkill.REPAIR_ARCANE_FORGING, SubSkill.REPAIR_REPAIR_MASTERY, SubSkill.REPAIR_SUPER_REPAIR)), + SALVAGE(SalvageManager.class, Color.ORANGE, ImmutableList.of(SubSkill.SALVAGE_ADVANCED_SALVAGE, SubSkill.SALVAGE_ARCANE_SALVAGE)), + SMELTING(SmeltingManager.class, Color.YELLOW, ImmutableList.of(SubSkill.SMELTING_FLUX_MINING, SubSkill.SMELTING_FUEL_EFFICIENCY, SubSkill.SMELTING_SECOND_SMELT)), + SWORDS(SwordsManager.class, Color.fromRGB(178, 34, 34), SuperAbility.SERRATED_STRIKES, ToolType.SWORD, ImmutableList.of(SubSkill.SWORDS_BLEED, SubSkill.SWORDS_COUNTER)), + TAMING(TamingManager.class, Color.PURPLE, ImmutableList.of(SubSkill.TAMING_BEAST_LORE, SubSkill.TAMING_CALL_OF_THE_WILD, SubSkill.TAMING_ENVIRONMENTALLY_AWARE, SubSkill.TAMING_FAST_FOOD, SubSkill.TAMING_GORE, SubSkill.TAMING_HOLY_HOUND, SubSkill.TAMING_SHARPENED_CLAWS, SubSkill.TAMING_SHOCK_PROOF, SubSkill.TAMING_THICK_FUR, SubSkill.TAMING_PUMMEL)), + UNARMED(UnarmedManager.class, Color.BLACK, SuperAbility.BERSERK, ToolType.FISTS, ImmutableList.of(SubSkill.UNARMED_BLOCK_CRACKER, SubSkill.UNARMED_DEFLECT, SubSkill.UNARMED_DISARM, SubSkill.UNARMED_IRON_ARM, SubSkill.UNARMED_IRON_GRIP)), + WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, SuperAbility.TREE_FELLER, ToolType.AXE, ImmutableList.of(SubSkill.WOODCUTTING_LEAF_BLOWER, SubSkill.WOODCUTTING_DOUBLE_DROPS)); private Class managerClass; private Color runescapeColor; - private AbilityType ability; + private SuperAbility ability; private ToolType tool; - private List secondaryAbilities; + private List subSkills; public static final List SKILL_NAMES; - public static final List CHILD_SKILLS; - public static final List NON_CHILD_SKILLS; + public static final List CHILD_SKILLS; + public static final List NON_CHILD_SKILLS; - public static final List COMBAT_SKILLS = ImmutableList.of(ARCHERY, AXES, SWORDS, TAMING, UNARMED); - public static final List GATHERING_SKILLS = ImmutableList.of(EXCAVATION, FISHING, HERBALISM, MINING, WOODCUTTING); - public static final List MISC_SKILLS = ImmutableList.of(ACROBATICS, ALCHEMY, REPAIR, SALVAGE, SMELTING); + public static final List COMBAT_SKILLS = ImmutableList.of(ARCHERY, AXES, SWORDS, TAMING, UNARMED); + public static final List GATHERING_SKILLS = ImmutableList.of(EXCAVATION, FISHING, HERBALISM, MINING, WOODCUTTING); + public static final List MISC_SKILLS = ImmutableList.of(ACROBATICS, ALCHEMY, REPAIR, SALVAGE, SMELTING); static { - List childSkills = new ArrayList(); - List nonChildSkills = new ArrayList(); + List childSkills = new ArrayList(); + List nonChildSkills = new ArrayList(); ArrayList names = new ArrayList(); - for (SkillType skill : values()) { + for (PrimarySkill skill : values()) { if (skill.isChildSkill()) { childSkills.add(skill); } @@ -90,23 +90,23 @@ public enum SkillType { NON_CHILD_SKILLS = ImmutableList.copyOf(nonChildSkills); } - private SkillType(Class managerClass, Color runescapeColor, List secondaryAbilities) { - this(managerClass, runescapeColor, null, null, secondaryAbilities); + private PrimarySkill(Class managerClass, Color runescapeColor, List subSkills) { + this(managerClass, runescapeColor, null, null, subSkills); } - private SkillType(Class managerClass, Color runescapeColor, AbilityType ability, ToolType tool, List secondaryAbilities) { + private PrimarySkill(Class managerClass, Color runescapeColor, SuperAbility ability, ToolType tool, List subSkills) { this.managerClass = managerClass; this.runescapeColor = runescapeColor; this.ability = ability; this.tool = tool; - this.secondaryAbilities = secondaryAbilities; + this.subSkills = subSkills; } public Class getManagerClass() { return managerClass; } - public AbilityType getAbility() { + public SuperAbility getAbility() { return ability; } @@ -153,24 +153,24 @@ public enum SkillType { return tool; } - public List getSkillAbilities() { - return secondaryAbilities; + public List getSkillAbilities() { + return subSkills; } public double getXpModifier() { return ExperienceConfig.getInstance().getFormulaSkillModifier(this); } - public static SkillType getSkill(String skillName) { + public static PrimarySkill getSkill(String skillName) { if (!Config.getInstance().getLocale().equalsIgnoreCase("en_US")) { - for (SkillType type : values()) { + for (PrimarySkill type : values()) { if (skillName.equalsIgnoreCase(LocaleLoader.getString(StringUtils.getCapitalized(type.name()) + ".SkillName"))) { return type; } } } - for (SkillType type : values()) { + for (PrimarySkill type : values()) { if (type.name().equalsIgnoreCase(skillName)) { return type; } @@ -195,17 +195,17 @@ public enum SkillType { } } - public static SkillType bySecondaryAbility(SecondaryAbility skillAbility) { - for (SkillType type : values()) { - if (type.getSkillAbilities().contains(skillAbility)) { + public static PrimarySkill bySecondaryAbility(SubSkill subSkill) { + for (PrimarySkill type : values()) { + if (type.getSkillAbilities().contains(subSkill)) { return type; } } return null; } - public static SkillType byAbility(AbilityType ability) { - for (SkillType type : values()) { + public static PrimarySkill byAbility(SuperAbility ability) { + for (PrimarySkill type : values()) { if (type.getAbility() == ability) { return type; } diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/SecondaryAbility.java b/src/main/java/com/gmail/nossr50/datatypes/skills/SecondaryAbility.java deleted file mode 100644 index e974580a8..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/SecondaryAbility.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.gmail.nossr50.datatypes.skills; - -import static com.gmail.nossr50.datatypes.skills.SkillType.*; -public enum SecondaryAbility { - /* !! Warning -- Do not let subskills share a name with any existing SkillType as it will clash with the static import !! */ - - /* ACROBATICS */ - DODGE(ACROBATICS), - GRACEFUL_ROLL(ACROBATICS), - ROLL(ACROBATICS), - - /* ALCHEMY */ - CATALYSIS(ALCHEMY), - CONCOCTIONS(ALCHEMY), - - /* ARCHERY */ - DAZE(ARCHERY), - RETRIEVE(ARCHERY), - SKILL_SHOT(ARCHERY), - - /* Axes */ - ARMOR_IMPACT(AXES), - AXE_MASTERY(AXES), - CRITICAL_HIT(AXES), - GREATER_IMPACT(AXES), - - /* Excavation */ - EXCAVATION_TREASURE_HUNTER(EXCAVATION), - - /* Fishing */ - FISHERMANS_DIET(FISHING), - FISHING_TREASURE_HUNTER(FISHING), - ICE_FISHING(FISHING), - MAGIC_HUNTER(FISHING), - MASTER_ANGLER(FISHING), - SHAKE(FISHING), - - /* Herbalism */ - FARMERS_DIET(HERBALISM), - GREEN_THUMB_PLANT(HERBALISM), - GREEN_THUMB_BLOCK(HERBALISM), - HERBALISM_DOUBLE_DROPS(HERBALISM), - HYLIAN_LUCK(HERBALISM), - SHROOM_THUMB(HERBALISM), - - /* Mining */ - MINING_DOUBLE_DROPS(MINING), - - /* Repair */ - ARCANE_FORGING(REPAIR), - REPAIR_MASTERY(REPAIR), - SUPER_REPAIR(REPAIR), - - /* Salvage */ - ADVANCED_SALVAGE(SALVAGE), - ARCANE_SALVAGE(SALVAGE), - - /* Smelting */ - FLUX_MINING(SMELTING), - FUEL_EFFICIENCY(SMELTING), - SECOND_SMELT(SMELTING), - - /* Swords */ - BLEED(SWORDS), - COUNTER(SWORDS), - - /* Taming */ - BEAST_LORE(TAMING), - CALL_OF_THE_WILD(TAMING), - ENVIRONMENTALLY_AWARE(TAMING), - FAST_FOOD(TAMING), - GORE(TAMING), - HOLY_HOUND(TAMING), - SHARPENED_CLAWS(TAMING), - SHOCK_PROOF(TAMING), - THICK_FUR(TAMING), - PUMMEL(TAMING), - - /* Unarmed */ - BLOCK_CRACKER(UNARMED), - DEFLECT(UNARMED), - DISARM(UNARMED), - IRON_ARM(UNARMED), - IRON_GRIP(UNARMED), - - /* Woodcutting */ - WOODCUTTING_TREE_FELLER(WOODCUTTING), - WOODCUTTING_LEAF_BLOWER(WOODCUTTING), - WOODCUTTING_SURGEON(WOODCUTTING), - WOODCUTTING_NATURES_BOUNTY(WOODCUTTING), - WOODCUTTING_SPLINTER(WOODCUTTING), - WOODCUTTING_HARVEST(WOODCUTTING); - - private final SkillType parentSkill; - - SecondaryAbility(SkillType parentSkill) - { - this.parentSkill = parentSkill; - } - - public SkillType getParentSkill() { return parentSkill; } -} diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/SkillMilestone.java b/src/main/java/com/gmail/nossr50/datatypes/skills/SkillMilestone.java index ffb5caf79..654423b62 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/SkillMilestone.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/SkillMilestone.java @@ -7,10 +7,10 @@ package com.gmail.nossr50.datatypes.skills; */ public class SkillMilestone { private int unlockLevel; //Level that grants access to this skill - private SecondaryAbility subskill; //Subskill that this milestone belongs to + private SubSkill subskill; //Subskill that this milestone belongs to private SkillMilestone childMilestone; //Next rank in the milestone - public SkillMilestone(SecondaryAbility subskill, int unlockLevel, SkillMilestone childMilestone) + public SkillMilestone(SubSkill subskill, int unlockLevel, SkillMilestone childMilestone) { this.subskill = subskill; this.unlockLevel = unlockLevel; @@ -20,7 +20,7 @@ public class SkillMilestone { this.childMilestone = childMilestone; } - public SkillMilestone(SecondaryAbility subskill, int unlockLevel) + public SkillMilestone(SubSkill subskill, int unlockLevel) { this(subskill, unlockLevel, null); } @@ -29,7 +29,7 @@ public class SkillMilestone { return unlockLevel; } - public SecondaryAbility getSubskill() { + public SubSkill getSubskill() { return subskill; } diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkill.java b/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkill.java new file mode 100644 index 000000000..bc6a588f1 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/SubSkill.java @@ -0,0 +1,165 @@ +package com.gmail.nossr50.datatypes.skills; + +import com.gmail.nossr50.util.StringUtils; + +import com.gmail.nossr50.datatypes.skills.PrimarySkill.*; +public enum SubSkill { + /* !! Warning -- Do not let subskills share a name with any existing PrimarySkill as it will clash with the static import !! */ + + /* ACROBATICS */ + ACROBATICS_DODGE, + ACROBATICS_GRACEFUL_ROLL, + ACROBATICS_ROLL, + + /* ALCHEMY */ + ALCHEMY_CATALYSIS, + ALCHEMY_CONCOCTIONS, + + /* ARCHERY */ + ARCHERY_DAZE, + ARCHERY_RETRIEVE, + ARCHERY_SKILL_SHOT, + + /* Axes */ + AXES_ARMOR_IMPACT, + AXES_AXE_MASTERY, + AXES_CRITICAL_HIT, + AXES_GREATER_IMPACT, + + /* Excavation */ + EXCAVATION_TREASURE_HUNTER, + + /* Fishing */ + FISHING_FISHERMANS_DIET, + FISHING_TREASURE_HUNTER, + FISHING_ICE_FISHING, + FISHING_MAGIC_HUNTER, + FISHING_MASTER_ANGLER, + FISHING_SHAKE, + + /* Herbalism */ + HERBALISM_FARMERS_DIET, + HERBALISM_GREEN_THUMB, + HERBALISM_DOUBLE_DROPS, + HERBALISM_HYLIAN_LUCK, + HERBALISM_SHROOM_THUMB, + + /* Mining */ + MINING_DOUBLE_DROPS, + + /* Repair */ + REPAIR_ARCANE_FORGING, + REPAIR_REPAIR_MASTERY, + REPAIR_SUPER_REPAIR, + + /* Salvage */ + SALVAGE_ADVANCED_SALVAGE, + SALVAGE_ARCANE_SALVAGE, + + /* Smelting */ + SMELTING_FLUX_MINING, + SMELTING_FUEL_EFFICIENCY, + SMELTING_SECOND_SMELT, + + /* Swords */ + SWORDS_BLEED, + SWORDS_COUNTER, + + /* Taming */ + TAMING_BEAST_LORE, + TAMING_CALL_OF_THE_WILD, + TAMING_ENVIRONMENTALLY_AWARE, + TAMING_FAST_FOOD, + TAMING_GORE, + TAMING_HOLY_HOUND, + TAMING_SHARPENED_CLAWS, + TAMING_SHOCK_PROOF, + TAMING_THICK_FUR, + TAMING_PUMMEL, + + /* Unarmed */ + UNARMED_BLOCK_CRACKER, + UNARMED_DEFLECT, + UNARMED_DISARM, + UNARMED_IRON_ARM, + UNARMED_IRON_GRIP, + + /* Woodcutting */ + WOODCUTTING_TREE_FELLER, + WOODCUTTING_LEAF_BLOWER, + WOODCUTTING_SURGEON, + WOODCUTTING_NATURES_BOUNTY, + WOODCUTTING_SPLINTER, + WOODCUTTING_DOUBLE_DROPS; + + /** + * !!! This relies on the immutable lists in PrimarySkill being populated !!! + * If we add skills, those immutable lists need to be updated + * @return + */ + public PrimarySkill getParentSkill() { return PrimarySkill.bySecondaryAbility(this); } + + /** + * Returns the permission root address for the advanced.yml for this subskill + * @return permission root address in advanced.yml for this subskill + */ + public String getAdvConfigAddress() { + return "Skills." + StringUtils.getCapitalized(getParentSkill().toString()) + "." + getConfigName(toString()); + } + + /** + * Get the string representation of the permission node for this subskill + * @return the permission node for this subskill + */ + public String getPermissionNodeAddress() + { + //TODO: This could be optimized + return "mcmmo.ability." + getParentSkill().toString().toLowerCase() + "." + getConfigName(toString()).toLowerCase(); + } + + /** + * Returns the name of the skill as it is used in advanced.yml and other config files + * @return the yaml identifier for this skill + */ + private String getConfigName(String subSkillName) { + /* + * Our ENUM constants name is something like PREFIX_SUB_SKILL_NAME + * We need to remove the prefix and then format the subskill to follow the naming conventions of our yaml configs + * + * So this method uses this kind of formatting + * "PARENTSKILL_COOL_SUBSKILL_ULTRA" -> "Cool Subskill Ultra" - > "CoolSubskillUltra" + * + */ + + + /* + * Find where to begin our substring (after the prefix) + */ + String endResult = ""; + char[] enumNameCharArray = subSkillName.toString().toCharArray(); + int subStringIndex = 0; + + //Find where to start our substring for this constants name + for (int i = 0; i < enumNameCharArray.length; i++) { + if(enumNameCharArray[i] == '_') + { + subStringIndex = i+1; //Start the substring after this char + + break; + } + } + + /* + * Split the string up so we can capitalize each part + */ + String subskillNameWithoutPrefix = subSkillName.toString().substring(subStringIndex); + String splitStrings[] = subskillNameWithoutPrefix.split("_"); + + for(String string : splitStrings) + { + endResult += StringUtils.getCapitalized(string); + } + + return endResult; + } +} diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/SuperAbility.java similarity index 97% rename from src/main/java/com/gmail/nossr50/datatypes/skills/AbilityType.java rename to src/main/java/com/gmail/nossr50/datatypes/skills/SuperAbility.java index 8dd8454b5..ead4d5978 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/SuperAbility.java @@ -10,7 +10,7 @@ import com.gmail.nossr50.util.BlockUtils; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.StringUtils; -public enum AbilityType { +public enum SuperAbility { BERSERK( "Unarmed.Skills.Berserk.On", "Unarmed.Skills.Berserk.Off", @@ -77,7 +77,7 @@ public enum AbilityType { private String abilityRefresh; private String abilityPlayerOff; - private AbilityType(String abilityOn, String abilityOff, String abilityPlayer, String abilityRefresh, String abilityPlayerOff) { + private SuperAbility(String abilityOn, String abilityOff, String abilityPlayer, String abilityRefresh, String abilityPlayerOff) { this.abilityOn = abilityOn; this.abilityOff = abilityOff; this.abilityPlayer = abilityPlayer; 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 d0aa47979..6ea8c118e 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerExperienceEvent.java @@ -1,11 +1,11 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.util.player.UserManager; @@ -14,19 +14,19 @@ import com.gmail.nossr50.util.player.UserManager; */ public abstract class McMMOPlayerExperienceEvent extends PlayerEvent implements Cancellable { private boolean cancelled; - protected SkillType skill; + protected PrimarySkill skill; protected int skillLevel; protected XPGainReason xpGainReason; @Deprecated - protected McMMOPlayerExperienceEvent(Player player, SkillType skill) { + protected McMMOPlayerExperienceEvent(Player player, PrimarySkill skill) { super(player); this.skill = skill; this.skillLevel = UserManager.getPlayer(player).getSkillLevel(skill); this.xpGainReason = XPGainReason.UNKNOWN; } - protected McMMOPlayerExperienceEvent(Player player, SkillType skill, XPGainReason xpGainReason) { + protected McMMOPlayerExperienceEvent(Player player, PrimarySkill skill, XPGainReason xpGainReason) { super(player); this.skill = skill; this.skillLevel = UserManager.getPlayer(player).getSkillLevel(skill); @@ -36,7 +36,7 @@ public abstract class McMMOPlayerExperienceEvent extends PlayerEvent implements /** * @return The skill involved in this event */ - public SkillType getSkill() { + public PrimarySkill getSkill() { return skill; } 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 e0a064312..25d05c383 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelChangeEvent.java @@ -1,8 +1,8 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; /** @@ -10,11 +10,11 @@ import com.gmail.nossr50.datatypes.skills.XPGainReason; */ public abstract class McMMOPlayerLevelChangeEvent extends McMMOPlayerExperienceEvent { @Deprecated - public McMMOPlayerLevelChangeEvent(Player player, SkillType skill) { + public McMMOPlayerLevelChangeEvent(Player player, PrimarySkill skill) { super(player, skill, XPGainReason.UNKNOWN); } - public McMMOPlayerLevelChangeEvent(Player player, SkillType skill, XPGainReason xpGainReason) { + public McMMOPlayerLevelChangeEvent(Player player, PrimarySkill skill, XPGainReason xpGainReason) { super(player, skill, xpGainReason); } } 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 4bdf32844..817c853aa 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelDownEvent.java @@ -1,9 +1,9 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; /** @@ -13,23 +13,23 @@ public class McMMOPlayerLevelDownEvent extends McMMOPlayerLevelChangeEvent { private int levelsLost; @Deprecated - public McMMOPlayerLevelDownEvent(Player player, SkillType skill) { + public McMMOPlayerLevelDownEvent(Player player, PrimarySkill skill) { super(player, skill, XPGainReason.UNKNOWN); this.levelsLost = 1; } @Deprecated - public McMMOPlayerLevelDownEvent(Player player, SkillType skill, int levelsLost) { + public McMMOPlayerLevelDownEvent(Player player, PrimarySkill skill, int levelsLost) { super(player, skill, XPGainReason.UNKNOWN); this.levelsLost = levelsLost; } - public McMMOPlayerLevelDownEvent(Player player, SkillType skill, XPGainReason xpGainReason) { + public McMMOPlayerLevelDownEvent(Player player, PrimarySkill skill, XPGainReason xpGainReason) { super(player, skill, xpGainReason); this.levelsLost = 1; } - public McMMOPlayerLevelDownEvent(Player player, SkillType skill, int levelsLost, XPGainReason xpGainReason) { + public McMMOPlayerLevelDownEvent(Player player, PrimarySkill skill, int levelsLost, XPGainReason xpGainReason) { super(player, skill, xpGainReason); this.levelsLost = levelsLost; } 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 7351f6915..c6495cc52 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerLevelUpEvent.java @@ -1,9 +1,9 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; /** @@ -13,23 +13,23 @@ public class McMMOPlayerLevelUpEvent extends McMMOPlayerLevelChangeEvent { private int levelsGained; @Deprecated - public McMMOPlayerLevelUpEvent(Player player, SkillType skill) { + public McMMOPlayerLevelUpEvent(Player player, PrimarySkill skill) { super(player, skill, XPGainReason.UNKNOWN); this.levelsGained = 1; } @Deprecated - public McMMOPlayerLevelUpEvent(Player player, SkillType skill, int levelsGained) { + public McMMOPlayerLevelUpEvent(Player player, PrimarySkill skill, int levelsGained) { super(player, skill, XPGainReason.UNKNOWN); this.levelsGained = levelsGained; } - public McMMOPlayerLevelUpEvent(Player player, SkillType skill, XPGainReason xpGainReason) { + public McMMOPlayerLevelUpEvent(Player player, PrimarySkill skill, XPGainReason xpGainReason) { super(player, skill, xpGainReason); this.levelsGained = 1; } - public McMMOPlayerLevelUpEvent(Player player, SkillType skill, int levelsGained, XPGainReason xpGainReason) { + public McMMOPlayerLevelUpEvent(Player player, PrimarySkill skill, int levelsGained, XPGainReason xpGainReason) { super(player, skill, xpGainReason); this.levelsGained = levelsGained; } 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 53e28971f..74295ccb5 100644 --- a/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerXpGainEvent.java +++ b/src/main/java/com/gmail/nossr50/events/experience/McMMOPlayerXpGainEvent.java @@ -1,9 +1,9 @@ package com.gmail.nossr50.events.experience; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; /** @@ -13,12 +13,12 @@ public class McMMOPlayerXpGainEvent extends McMMOPlayerExperienceEvent { private float xpGained; @Deprecated - public McMMOPlayerXpGainEvent(Player player, SkillType skill, float xpGained) { + public McMMOPlayerXpGainEvent(Player player, PrimarySkill skill, float xpGained) { super(player, skill, XPGainReason.UNKNOWN); this.xpGained = xpGained; } - public McMMOPlayerXpGainEvent(Player player, SkillType skill, float xpGained, XPGainReason xpGainReason) { + public McMMOPlayerXpGainEvent(Player player, PrimarySkill skill, float xpGained, XPGainReason xpGainReason) { super(player, skill, xpGainReason); this.xpGained = xpGained; } diff --git a/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerSkillEvent.java b/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerSkillEvent.java index 65ca37f15..63ebeedc1 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerSkillEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/McMMOPlayerSkillEvent.java @@ -1,20 +1,20 @@ package com.gmail.nossr50.events.skills; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; import org.bukkit.event.player.PlayerEvent; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.util.player.UserManager; /** * Generic event for mcMMO skill handling. */ public abstract class McMMOPlayerSkillEvent extends PlayerEvent { - protected SkillType skill; + protected PrimarySkill skill; protected int skillLevel; - protected McMMOPlayerSkillEvent(Player player, SkillType skill) { + protected McMMOPlayerSkillEvent(Player player, PrimarySkill skill) { super(player); this.skill = skill; this.skillLevel = UserManager.getPlayer(player).getSkillLevel(skill); @@ -23,7 +23,7 @@ public abstract class McMMOPlayerSkillEvent extends PlayerEvent { /** * @return The skill involved in this event */ - public SkillType getSkill() { + public PrimarySkill getSkill() { return skill; } diff --git a/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityActivateEvent.java b/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityActivateEvent.java index f0b371fd3..7e3af4e76 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityActivateEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityActivateEvent.java @@ -1,14 +1,13 @@ package com.gmail.nossr50.events.skills.abilities; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; -import com.gmail.nossr50.datatypes.skills.SkillType; - public class McMMOPlayerAbilityActivateEvent extends McMMOPlayerAbilityEvent implements Cancellable { private boolean cancelled; - public McMMOPlayerAbilityActivateEvent(Player player, SkillType skill) { + public McMMOPlayerAbilityActivateEvent(Player player, PrimarySkill skill) { super(player, skill); cancelled = false; } diff --git a/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityDeactivateEvent.java b/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityDeactivateEvent.java index 6eeb7f479..eeb256e46 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityDeactivateEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityDeactivateEvent.java @@ -2,10 +2,10 @@ package com.gmail.nossr50.events.skills.abilities; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; public class McMMOPlayerAbilityDeactivateEvent extends McMMOPlayerAbilityEvent { - public McMMOPlayerAbilityDeactivateEvent(Player player, SkillType skill) { + public McMMOPlayerAbilityDeactivateEvent(Player player, PrimarySkill skill) { super(player, skill); } } diff --git a/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityEvent.java b/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityEvent.java index a65752c55..6b88fb024 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/abilities/McMMOPlayerAbilityEvent.java @@ -2,19 +2,19 @@ package com.gmail.nossr50.events.skills.abilities; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; public class McMMOPlayerAbilityEvent extends McMMOPlayerSkillEvent { - private AbilityType ability; + private SuperAbility ability; - protected McMMOPlayerAbilityEvent(Player player, SkillType skill) { + protected McMMOPlayerAbilityEvent(Player player, PrimarySkill skill) { super(player, skill); ability = skill.getAbility(); } - public AbilityType getAbility() { + public SuperAbility getAbility() { return ability; } } diff --git a/src/main/java/com/gmail/nossr50/events/skills/alchemy/McMMOPlayerBrewEvent.java b/src/main/java/com/gmail/nossr50/events/skills/alchemy/McMMOPlayerBrewEvent.java index 0152b30e9..8629454de 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/alchemy/McMMOPlayerBrewEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/alchemy/McMMOPlayerBrewEvent.java @@ -1,12 +1,12 @@ package com.gmail.nossr50.events.skills.alchemy; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.block.Block; import org.bukkit.block.BlockState; import org.bukkit.block.BrewingStand; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; public class McMMOPlayerBrewEvent extends McMMOPlayerSkillEvent implements Cancellable { @@ -15,7 +15,7 @@ public class McMMOPlayerBrewEvent extends McMMOPlayerSkillEvent implements Cance private boolean cancelled; public McMMOPlayerBrewEvent(Player player, BlockState brewingStand) { - super(player, SkillType.ALCHEMY); + super(player, PrimarySkill.ALCHEMY); this.brewingStand = brewingStand; cancelled = false; } diff --git a/src/main/java/com/gmail/nossr50/events/skills/alchemy/McMMOPlayerCatalysisEvent.java b/src/main/java/com/gmail/nossr50/events/skills/alchemy/McMMOPlayerCatalysisEvent.java index 48c2e27c1..6b00d299f 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/alchemy/McMMOPlayerCatalysisEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/alchemy/McMMOPlayerCatalysisEvent.java @@ -3,7 +3,7 @@ package com.gmail.nossr50.events.skills.alchemy; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; public class McMMOPlayerCatalysisEvent extends McMMOPlayerSkillEvent implements Cancellable { @@ -12,7 +12,7 @@ public class McMMOPlayerCatalysisEvent extends McMMOPlayerSkillEvent implements private boolean cancelled; public McMMOPlayerCatalysisEvent(Player player, double speed) { - super(player, SkillType.ALCHEMY); + super(player, PrimarySkill.ALCHEMY); this.speed = speed; cancelled = false; } diff --git a/src/main/java/com/gmail/nossr50/events/skills/fishing/McMMOPlayerFishingEvent.java b/src/main/java/com/gmail/nossr50/events/skills/fishing/McMMOPlayerFishingEvent.java index 09d8c0842..d91a74e58 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/fishing/McMMOPlayerFishingEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/fishing/McMMOPlayerFishingEvent.java @@ -1,16 +1,16 @@ package com.gmail.nossr50.events.skills.fishing; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; public class McMMOPlayerFishingEvent extends McMMOPlayerSkillEvent implements Cancellable { private boolean cancelled; protected McMMOPlayerFishingEvent(Player player) { - super(player, SkillType.FISHING); + super(player, PrimarySkill.FISHING); cancelled = false; } diff --git a/src/main/java/com/gmail/nossr50/events/skills/repair/McMMOPlayerRepairCheckEvent.java b/src/main/java/com/gmail/nossr50/events/skills/repair/McMMOPlayerRepairCheckEvent.java index e2f2eb009..82a2bf6be 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/repair/McMMOPlayerRepairCheckEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/repair/McMMOPlayerRepairCheckEvent.java @@ -1,10 +1,10 @@ package com.gmail.nossr50.events.skills.repair; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.inventory.ItemStack; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; /** @@ -17,7 +17,7 @@ public class McMMOPlayerRepairCheckEvent extends McMMOPlayerSkillEvent implement private boolean cancelled; public McMMOPlayerRepairCheckEvent(Player player, short repairAmount, ItemStack repairMaterial, ItemStack repairedObject) { - super(player, SkillType.REPAIR); + super(player, PrimarySkill.REPAIR); this.repairAmount = repairAmount; this.repairMaterial = repairMaterial; this.repairedObject = repairedObject; diff --git a/src/main/java/com/gmail/nossr50/events/skills/salvage/McMMOPlayerSalvageCheckEvent.java b/src/main/java/com/gmail/nossr50/events/skills/salvage/McMMOPlayerSalvageCheckEvent.java index 868a7dd6e..960fd4f31 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/salvage/McMMOPlayerSalvageCheckEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/salvage/McMMOPlayerSalvageCheckEvent.java @@ -4,7 +4,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; import org.bukkit.inventory.ItemStack; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; /** @@ -17,7 +17,7 @@ public class McMMOPlayerSalvageCheckEvent extends McMMOPlayerSkillEvent implemen private boolean cancelled; public McMMOPlayerSalvageCheckEvent(Player player, ItemStack salvageItem, ItemStack salvageResults, ItemStack enchantedBook) { - super(player, SkillType.SALVAGE); + super(player, PrimarySkill.SALVAGE); this.salvageItem = salvageItem; this.salvageResults = salvageResults; this.enchantedBook = enchantedBook; diff --git a/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SecondaryAbilityEvent.java b/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SecondaryAbilityEvent.java deleted file mode 100644 index d867c1f47..000000000 --- a/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SecondaryAbilityEvent.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.gmail.nossr50.events.skills.secondaryabilities; - -import org.bukkit.entity.Player; -import org.bukkit.event.Cancellable; - -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; -import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; - -public class SecondaryAbilityEvent extends McMMOPlayerSkillEvent implements Cancellable { - private SecondaryAbility secondaryAbility; - private boolean cancelled; - - public SecondaryAbilityEvent(Player player, SecondaryAbility secondaryAbility) { - super(player, SkillType.bySecondaryAbility(secondaryAbility)); - this.secondaryAbility = secondaryAbility; - cancelled = false; - } - - /** - * Gets the SecondaryAbility involved in the event - * @return the SecondaryAbility - */ - public SecondaryAbility getSecondaryAbility() { - return secondaryAbility; - } - - public boolean isCancelled() { - return cancelled; - } - - public void setCancelled(boolean newValue) { - this.cancelled = newValue; - } -} diff --git a/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SubSkillEvent.java b/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SubSkillEvent.java new file mode 100644 index 000000000..1cf5e6adc --- /dev/null +++ b/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SubSkillEvent.java @@ -0,0 +1,35 @@ +package com.gmail.nossr50.events.skills.secondaryabilities; + +import com.gmail.nossr50.datatypes.skills.SubSkill; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; + +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; + +public class SubSkillEvent extends McMMOPlayerSkillEvent implements Cancellable { + private SubSkill subSkill; + private boolean cancelled; + + public SubSkillEvent(Player player, SubSkill subSkill) { + super(player, PrimarySkill.bySecondaryAbility(subSkill)); + this.subSkill = subSkill; + cancelled = false; + } + + /** + * Gets the SubSkill involved in the event + * @return the SubSkill + */ + public SubSkill getSubSkill() { + return subSkill; + } + + public boolean isCancelled() { + return cancelled; + } + + public void setCancelled(boolean newValue) { + this.cancelled = newValue; + } +} diff --git a/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SecondaryAbilityWeightedActivationCheckEvent.java b/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SubSkillWeightedActivationCheckEvent.java similarity index 77% rename from src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SecondaryAbilityWeightedActivationCheckEvent.java rename to src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SubSkillWeightedActivationCheckEvent.java index 674df3e17..2d392e715 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SecondaryAbilityWeightedActivationCheckEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/secondaryabilities/SubSkillWeightedActivationCheckEvent.java @@ -1,13 +1,12 @@ package com.gmail.nossr50.events.skills.secondaryabilities; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.entity.Player; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; - -public class SecondaryAbilityWeightedActivationCheckEvent extends SecondaryAbilityEvent { +public class SubSkillWeightedActivationCheckEvent extends SubSkillEvent { private double chance; - public SecondaryAbilityWeightedActivationCheckEvent(Player player, SecondaryAbility ability, double chance) { + public SubSkillWeightedActivationCheckEvent(Player player, SubSkill ability, double chance) { super(player, ability); this.chance = chance; } diff --git a/src/main/java/com/gmail/nossr50/events/skills/unarmed/McMMOPlayerDisarmEvent.java b/src/main/java/com/gmail/nossr50/events/skills/unarmed/McMMOPlayerDisarmEvent.java index defc5edde..9db531d79 100644 --- a/src/main/java/com/gmail/nossr50/events/skills/unarmed/McMMOPlayerDisarmEvent.java +++ b/src/main/java/com/gmail/nossr50/events/skills/unarmed/McMMOPlayerDisarmEvent.java @@ -3,7 +3,7 @@ package com.gmail.nossr50.events.skills.unarmed; import org.bukkit.entity.Player; import org.bukkit.event.Cancellable; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.events.skills.McMMOPlayerSkillEvent; public class McMMOPlayerDisarmEvent extends McMMOPlayerSkillEvent implements Cancellable { @@ -11,7 +11,7 @@ public class McMMOPlayerDisarmEvent extends McMMOPlayerSkillEvent implements Can private Player defender; public McMMOPlayerDisarmEvent(Player defender) { - super(defender, SkillType.UNARMED); + super(defender, PrimarySkill.UNARMED); this.defender = defender; } diff --git a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java index 7fbb4140b..bed772f2d 100644 --- a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java @@ -3,8 +3,8 @@ package com.gmail.nossr50.listeners; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.HiddenConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.events.fake.FakeBlockBreakEvent; import com.gmail.nossr50.events.fake.FakeBlockDamageEvent; @@ -136,10 +136,10 @@ public class BlockListener implements Listener { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - if (blockState.getType() == Repair.anvilMaterial && SkillType.REPAIR.getPermissions(player)) { + if (blockState.getType() == Repair.anvilMaterial && PrimarySkill.REPAIR.getPermissions(player)) { mcMMOPlayer.getRepairManager().placedAnvilCheck(); } - else if (blockState.getType() == Salvage.anvilMaterial && SkillType.SALVAGE.getPermissions(player)) { + else if (blockState.getType() == Salvage.anvilMaterial && PrimarySkill.SALVAGE.getPermissions(player)) { mcMMOPlayer.getSalvageManager().placedAnvilCheck(); } } @@ -194,26 +194,26 @@ public class BlockListener implements Listener { /* Green Terra */ if (herbalismManager.canActivateAbility()) { - mcMMOPlayer.checkAbilityActivation(SkillType.HERBALISM); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.HERBALISM); } /* * We don't check the block store here because herbalism has too many unusual edge cases. * Instead, we check it inside the drops handler. */ - if (SkillType.HERBALISM.getPermissions(player)) { + if (PrimarySkill.HERBALISM.getPermissions(player)) { herbalismManager.herbalismBlockCheck(blockState); } } /* MINING */ - else if (BlockUtils.affectedBySuperBreaker(blockState) && ItemUtils.isPickaxe(heldItem) && SkillType.MINING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) { + else if (BlockUtils.affectedBySuperBreaker(blockState) && ItemUtils.isPickaxe(heldItem) && PrimarySkill.MINING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) { MiningManager miningManager = mcMMOPlayer.getMiningManager(); miningManager.miningBlockCheck(blockState); } /* WOOD CUTTING */ - else if (BlockUtils.isLog(blockState) && ItemUtils.isAxe(heldItem) && SkillType.WOODCUTTING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) { + else if (BlockUtils.isLog(blockState) && ItemUtils.isAxe(heldItem) && PrimarySkill.WOODCUTTING.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) { WoodcuttingManager woodcuttingManager = mcMMOPlayer.getWoodcuttingManager(); if (woodcuttingManager.canUseTreeFeller(heldItem)) { woodcuttingManager.processTreeFeller(blockState); @@ -224,11 +224,11 @@ public class BlockListener implements Listener { } /* EXCAVATION */ - else if (BlockUtils.affectedByGigaDrillBreaker(blockState) && ItemUtils.isShovel(heldItem) && SkillType.EXCAVATION.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) { + else if (BlockUtils.affectedByGigaDrillBreaker(blockState) && ItemUtils.isShovel(heldItem) && PrimarySkill.EXCAVATION.getPermissions(player) && !mcMMO.getPlaceStore().isTrue(blockState)) { ExcavationManager excavationManager = mcMMOPlayer.getExcavationManager(); excavationManager.excavationBlockCheck(blockState); - if (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER)) { + if (mcMMOPlayer.getAbilityMode(SuperAbility.GIGA_DRILL_BREAKER)) { excavationManager.gigaDrillBreaker(blockState); } } @@ -318,30 +318,30 @@ public class BlockListener implements Listener { ItemStack heldItem = player.getInventory().getItemInMainHand(); if (HiddenConfig.getInstance().useEnchantmentBuffs()) { - if ((ItemUtils.isPickaxe(heldItem) && !mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER)) || (ItemUtils.isShovel(heldItem) && !mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER))) { + if ((ItemUtils.isPickaxe(heldItem) && !mcMMOPlayer.getAbilityMode(SuperAbility.SUPER_BREAKER)) || (ItemUtils.isShovel(heldItem) && !mcMMOPlayer.getAbilityMode(SuperAbility.GIGA_DRILL_BREAKER))) { SkillUtils.removeAbilityBuff(heldItem); } } else { - if ((mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER) && !BlockUtils.affectedBySuperBreaker(blockState)) || (mcMMOPlayer.getAbilityMode(AbilityType.GIGA_DRILL_BREAKER) && !BlockUtils.affectedByGigaDrillBreaker(blockState))) { + if ((mcMMOPlayer.getAbilityMode(SuperAbility.SUPER_BREAKER) && !BlockUtils.affectedBySuperBreaker(blockState)) || (mcMMOPlayer.getAbilityMode(SuperAbility.GIGA_DRILL_BREAKER) && !BlockUtils.affectedByGigaDrillBreaker(blockState))) { SkillUtils.handleAbilitySpeedDecrease(player); } } if (mcMMOPlayer.getToolPreparationMode(ToolType.HOE) && ItemUtils.isHoe(heldItem) && (BlockUtils.affectedByGreenTerra(blockState) || BlockUtils.canMakeMossy(blockState)) && Permissions.greenTerra(player)) { - mcMMOPlayer.checkAbilityActivation(SkillType.HERBALISM); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.HERBALISM); } else if (mcMMOPlayer.getToolPreparationMode(ToolType.AXE) && ItemUtils.isAxe(heldItem) && BlockUtils.isLog(blockState) && Permissions.treeFeller(player)) { - mcMMOPlayer.checkAbilityActivation(SkillType.WOODCUTTING); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.WOODCUTTING); } else if (mcMMOPlayer.getToolPreparationMode(ToolType.PICKAXE) && ItemUtils.isPickaxe(heldItem) && BlockUtils.affectedBySuperBreaker(blockState) && Permissions.superBreaker(player)) { - mcMMOPlayer.checkAbilityActivation(SkillType.MINING); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.MINING); } else if (mcMMOPlayer.getToolPreparationMode(ToolType.SHOVEL) && ItemUtils.isShovel(heldItem) && BlockUtils.affectedByGigaDrillBreaker(blockState) && Permissions.gigaDrillBreaker(player)) { - mcMMOPlayer.checkAbilityActivation(SkillType.EXCAVATION); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.EXCAVATION); } else if (mcMMOPlayer.getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockUtils.affectedByGigaDrillBreaker(blockState) || blockState.getType() == Material.SNOW || BlockUtils.affectedByBlockCracker(blockState) && Permissions.berserk(player))) { - mcMMOPlayer.checkAbilityActivation(SkillType.UNARMED); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.UNARMED); } } @@ -350,7 +350,7 @@ public class BlockListener implements Listener { * * We don't need to check permissions here because they've already been checked for the ability to even activate. */ - if (mcMMOPlayer.getAbilityMode(AbilityType.TREE_FELLER) && BlockUtils.isLog(blockState) && Config.getInstance().getTreeFellerSoundsEnabled()) { + if (mcMMOPlayer.getAbilityMode(SuperAbility.TREE_FELLER) && BlockUtils.isLog(blockState) && Config.getInstance().getTreeFellerSoundsEnabled()) { player.playSound(blockState.getLocation(), Sound.BLOCK_FIRE_EXTINGUISH, Misc.FIZZ_VOLUME, Misc.getFizzPitch()); } } @@ -382,13 +382,13 @@ public class BlockListener implements Listener { * * We don't need to check permissions here because they've already been checked for the ability to even activate. */ - if (mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState)) { + if (mcMMOPlayer.getAbilityMode(SuperAbility.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState)) { if (mcMMOPlayer.getHerbalismManager().processGreenTerra(blockState)) { blockState.update(true); } } - else if (mcMMOPlayer.getAbilityMode(AbilityType.BERSERK) && heldItem.getType() == Material.AIR) { - if (AbilityType.BERSERK.blockCheck(block.getState()) && EventUtils.simulateBlockBreak(block, player, true)) { + else if (mcMMOPlayer.getAbilityMode(SuperAbility.BERSERK) && heldItem.getType() == Material.AIR) { + if (SuperAbility.BERSERK.blockCheck(block.getState()) && EventUtils.simulateBlockBreak(block, player, true)) { event.setInstaBreak(true); player.playSound(block.getLocation(), Sound.ENTITY_ITEM_PICKUP, Misc.POP_VOLUME, Misc.getPopPitch()); } diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index 09e41bc88..91c465dd7 100644 --- a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java @@ -3,7 +3,7 @@ package com.gmail.nossr50.listeners; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent; import com.gmail.nossr50.events.fake.FakeEntityDamageEvent; import com.gmail.nossr50.events.fake.FakeEntityTameEvent; @@ -583,7 +583,7 @@ public class EntityListener implements Listener { * RESTORES 4 HUNGER - RESTORES 6 1/2 HUNGER @ * 1000 */ - if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FARMERS_DIET)) { + if (Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_FARMERS_DIET)) { event.setFoodLevel(UserManager.getPlayer(player).getHerbalismManager().farmersDiet(Herbalism.farmersDietRankLevel1, newFoodLevel)); } return; @@ -595,7 +595,7 @@ public class EntityListener implements Listener { * @ 1000 */ case POTATO: /* RESTORES 1/2 HUNGER - RESTORES 2 HUNGER @ 1000 */ - if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FARMERS_DIET)) { + if (Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_FARMERS_DIET)) { event.setFoodLevel(UserManager.getPlayer(player).getHerbalismManager().farmersDiet(Herbalism.farmersDietRankLevel2, newFoodLevel)); } return; @@ -604,13 +604,13 @@ public class EntityListener implements Listener { * RESTORES 2 1/2 HUNGER - RESTORES 5 HUNGER @ * 1000 */ - if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FISHERMANS_DIET)) { + if (Permissions.isSubSkillEnabled(player, SubSkill.FISHING_FISHERMANS_DIET)) { event.setFoodLevel(UserManager.getPlayer(player).getFishingManager().handleFishermanDiet(Fishing.fishermansDietRankLevel1, newFoodLevel)); } return; case SALMON: /* RESTORES 1 HUNGER - RESTORES 2 1/2 HUNGER @ 1000 */ - if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FISHERMANS_DIET)) { + if (Permissions.isSubSkillEnabled(player, SubSkill.FISHING_FISHERMANS_DIET)) { event.setFoodLevel(UserManager.getPlayer(player).getFishingManager().handleFishermanDiet(Fishing.fishermansDietRankLevel2, newFoodLevel)); } return; diff --git a/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java b/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java index 6c6980215..4c7d79f84 100644 --- a/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/InventoryListener.java @@ -2,8 +2,9 @@ package com.gmail.nossr50.listeners; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.events.fake.FakeBrewEvent; -import com.gmail.nossr50.skills.alchemy.AlchemyManager; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; @@ -25,8 +26,6 @@ import org.bukkit.metadata.MetadataValue; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.runnables.player.PlayerUpdateInventoryTask; import com.gmail.nossr50.skills.alchemy.Alchemy; import com.gmail.nossr50.skills.alchemy.AlchemyPotionBrewer; @@ -88,7 +87,7 @@ public class InventoryListener implements Listener { Player player = getPlayerFromFurnace(furnaceBlock); - if (!UserManager.hasPlayerDataKey(player) || !Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FUEL_EFFICIENCY)) { + if (!UserManager.hasPlayerDataKey(player) || !Permissions.isSubSkillEnabled(player, SubSkill.SMELTING_FUEL_EFFICIENCY)) { return; } @@ -106,7 +105,7 @@ public class InventoryListener implements Listener { Player player = getPlayerFromFurnace(furnaceBlock); - if (!UserManager.hasPlayerDataKey(player) || !SkillType.SMELTING.getPermissions(player)) { + if (!UserManager.hasPlayerDataKey(player) || !PrimarySkill.SMELTING.getPermissions(player)) { return; } @@ -123,7 +122,7 @@ public class InventoryListener implements Listener { Player player = getPlayerFromFurnace(furnaceBlock); - if (!UserManager.hasPlayerDataKey(player) || !Permissions.vanillaXpBoost(player, SkillType.SMELTING)) { + if (!UserManager.hasPlayerDataKey(player) || !Permissions.vanillaXpBoost(player, PrimarySkill.SMELTING)) { return; } @@ -147,7 +146,7 @@ public class InventoryListener implements Listener { HumanEntity whoClicked = event.getWhoClicked(); - if (!UserManager.hasPlayerDataKey(event.getWhoClicked()) || !Permissions.secondaryAbilityEnabled(whoClicked, SecondaryAbility.CONCOCTIONS)) { + if (!UserManager.hasPlayerDataKey(event.getWhoClicked()) || !Permissions.isSubSkillEnabled(whoClicked, SubSkill.ALCHEMY_CONCOCTIONS)) { return; } @@ -246,7 +245,7 @@ public class InventoryListener implements Listener { HumanEntity whoClicked = event.getWhoClicked(); - if (!UserManager.hasPlayerDataKey(event.getWhoClicked()) || !Permissions.secondaryAbilityEnabled(whoClicked, SecondaryAbility.CONCOCTIONS)) { + if (!UserManager.hasPlayerDataKey(event.getWhoClicked()) || !Permissions.isSubSkillEnabled(whoClicked, SubSkill.ALCHEMY_CONCOCTIONS)) { return; } diff --git a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java index 63ea0a7b5..38943f1c9 100644 --- a/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/PlayerListener.java @@ -8,8 +8,8 @@ import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.chat.ChatMode; import com.gmail.nossr50.datatypes.party.Party; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.party.ShareHandler; @@ -186,7 +186,7 @@ public class PlayerListener implements Listener { public void onPlayerFishHighest(PlayerFishEvent event) { Player player = event.getPlayer(); - if (!UserManager.hasPlayerDataKey(player) || !SkillType.FISHING.getPermissions(player)) { + if (!UserManager.hasPlayerDataKey(player) || !PrimarySkill.FISHING.getPermissions(player)) { return; } @@ -210,7 +210,7 @@ public class PlayerListener implements Listener { fishingCatch.setItemStack(new ItemStack(Material.SALMON, 1)); } - if (Permissions.vanillaXpBoost(player, SkillType.FISHING)) { + if (Permissions.vanillaXpBoost(player, PrimarySkill.FISHING)) { event.setExpToDrop(fishingManager.handleVanillaXpBoost(event.getExpToDrop())); } return; @@ -241,7 +241,7 @@ public class PlayerListener implements Listener { public void onPlayerFishMonitor(PlayerFishEvent event) { Player player = event.getPlayer(); - if (!UserManager.hasPlayerDataKey(player) || !SkillType.FISHING.getPermissions(player)) { + if (!UserManager.hasPlayerDataKey(player) || !PrimarySkill.FISHING.getPermissions(player)) { return; } @@ -308,7 +308,7 @@ public class PlayerListener implements Listener { } } - if ((mcMMOPlayer.isUsingUnarmed() && ItemUtils.isSharable(dropStack) && !Config.getInstance().getUnarmedItemsAsUnarmed()) || mcMMOPlayer.getAbilityMode(AbilityType.BERSERK)) { + if ((mcMMOPlayer.isUsingUnarmed() && ItemUtils.isSharable(dropStack) && !Config.getInstance().getUnarmedItemsAsUnarmed()) || mcMMOPlayer.getAbilityMode(SuperAbility.BERSERK)) { boolean pickupSuccess = Unarmed.handleItemPickup(player.getInventory(), drop); boolean cancel = Config.getInstance().getUnarmedItemPickupDisabled() || pickupSuccess; event.setCancelled(cancel); @@ -414,7 +414,7 @@ public class PlayerListener implements Listener { if (!Config.getInstance().getAbilitiesOnlyActivateWhenSneaking() || player.isSneaking()) { /* REPAIR CHECKS */ - if (type == Repair.anvilMaterial && SkillType.REPAIR.getPermissions(player) && mcMMO.getRepairableManager().isRepairable(heldItem)) { + if (type == Repair.anvilMaterial && PrimarySkill.REPAIR.getPermissions(player) && mcMMO.getRepairableManager().isRepairable(heldItem)) { RepairManager repairManager = mcMMOPlayer.getRepairManager(); event.setCancelled(true); @@ -425,7 +425,7 @@ public class PlayerListener implements Listener { } } /* SALVAGE CHECKS */ - else if (type == Salvage.anvilMaterial && SkillType.SALVAGE.getPermissions(player) && mcMMO.getSalvageableManager().isSalvageable(heldItem)) { + else if (type == Salvage.anvilMaterial && PrimarySkill.SALVAGE.getPermissions(player) && mcMMO.getSalvageableManager().isSalvageable(heldItem)) { SalvageManager salvageManager = UserManager.getPlayer(player).getSalvageManager(); event.setCancelled(true); @@ -454,7 +454,7 @@ public class PlayerListener implements Listener { if (!Config.getInstance().getAbilitiesOnlyActivateWhenSneaking() || player.isSneaking()) { /* REPAIR CHECKS */ - if (type == Repair.anvilMaterial && SkillType.REPAIR.getPermissions(player) && mcMMO.getRepairableManager().isRepairable(heldItem)) { + if (type == Repair.anvilMaterial && PrimarySkill.REPAIR.getPermissions(player) && mcMMO.getRepairableManager().isRepairable(heldItem)) { RepairManager repairManager = mcMMOPlayer.getRepairManager(); // Cancel repairing an enchanted item @@ -464,7 +464,7 @@ public class PlayerListener implements Listener { } } /* SALVAGE CHECKS */ - else if (type == Salvage.anvilMaterial && SkillType.SALVAGE.getPermissions(player) && mcMMO.getSalvageableManager().isSalvageable(heldItem)) { + else if (type == Salvage.anvilMaterial && PrimarySkill.SALVAGE.getPermissions(player) && mcMMO.getSalvageableManager().isSalvageable(heldItem)) { SalvageManager salvageManager = mcMMOPlayer.getSalvageManager(); // Cancel salvaging an enchanted item @@ -511,15 +511,15 @@ public class PlayerListener implements Listener { if (BlockUtils.canActivateAbilities(blockState)) { if (Config.getInstance().getAbilitiesEnabled()) { if (BlockUtils.canActivateHerbalism(blockState)) { - mcMMOPlayer.processAbilityActivation(SkillType.HERBALISM); + mcMMOPlayer.processAbilityActivation(PrimarySkill.HERBALISM); } - mcMMOPlayer.processAbilityActivation(SkillType.AXES); - mcMMOPlayer.processAbilityActivation(SkillType.EXCAVATION); - mcMMOPlayer.processAbilityActivation(SkillType.MINING); - mcMMOPlayer.processAbilityActivation(SkillType.SWORDS); - mcMMOPlayer.processAbilityActivation(SkillType.UNARMED); - mcMMOPlayer.processAbilityActivation(SkillType.WOODCUTTING); + mcMMOPlayer.processAbilityActivation(PrimarySkill.AXES); + mcMMOPlayer.processAbilityActivation(PrimarySkill.EXCAVATION); + mcMMOPlayer.processAbilityActivation(PrimarySkill.MINING); + mcMMOPlayer.processAbilityActivation(PrimarySkill.SWORDS); + mcMMOPlayer.processAbilityActivation(PrimarySkill.UNARMED); + mcMMOPlayer.processAbilityActivation(PrimarySkill.WOODCUTTING); } ChimaeraWing.activationCheck(player); @@ -564,13 +564,13 @@ public class PlayerListener implements Listener { /* ACTIVATION CHECKS */ if (Config.getInstance().getAbilitiesEnabled()) { - mcMMOPlayer.processAbilityActivation(SkillType.AXES); - mcMMOPlayer.processAbilityActivation(SkillType.EXCAVATION); - mcMMOPlayer.processAbilityActivation(SkillType.HERBALISM); - mcMMOPlayer.processAbilityActivation(SkillType.MINING); - mcMMOPlayer.processAbilityActivation(SkillType.SWORDS); - mcMMOPlayer.processAbilityActivation(SkillType.UNARMED); - mcMMOPlayer.processAbilityActivation(SkillType.WOODCUTTING); + mcMMOPlayer.processAbilityActivation(PrimarySkill.AXES); + mcMMOPlayer.processAbilityActivation(PrimarySkill.EXCAVATION); + mcMMOPlayer.processAbilityActivation(PrimarySkill.HERBALISM); + mcMMOPlayer.processAbilityActivation(PrimarySkill.MINING); + mcMMOPlayer.processAbilityActivation(PrimarySkill.SWORDS); + mcMMOPlayer.processAbilityActivation(PrimarySkill.UNARMED); + mcMMOPlayer.processAbilityActivation(PrimarySkill.WOODCUTTING); } /* ITEM CHECKS */ @@ -670,7 +670,7 @@ public class PlayerListener implements Listener { String lowerCaseCommand = command.toLowerCase(); // Do these ACTUALLY have to be lower case to work properly? - for (SkillType skill : SkillType.values()) { + for (PrimarySkill skill : PrimarySkill.values()) { String skillName = skill.toString().toLowerCase(); String localizedName = skill.getName().toLowerCase(); diff --git a/src/main/java/com/gmail/nossr50/listeners/SelfListener.java b/src/main/java/com/gmail/nossr50/listeners/SelfListener.java index c9ab378e9..54fca0d0e 100644 --- a/src/main/java/com/gmail/nossr50/listeners/SelfListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/SelfListener.java @@ -1,5 +1,6 @@ package com.gmail.nossr50.listeners; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -9,7 +10,6 @@ import org.bukkit.event.Listener; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.events.experience.McMMOPlayerLevelUpEvent; import com.gmail.nossr50.events.experience.McMMOPlayerXpGainEvent; import com.gmail.nossr50.events.skills.abilities.McMMOPlayerAbilityActivateEvent; @@ -20,7 +20,7 @@ public class SelfListener implements Listener { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerLevelUp(McMMOPlayerLevelUpEvent event) { Player player = event.getPlayer(); - SkillType skill = event.getSkill(); + PrimarySkill skill = event.getSkill(); ScoreboardManager.handleLevelUp(player, skill); @@ -47,8 +47,8 @@ public class SelfListener implements Listener { public void onPlayerXpGain(McMMOPlayerXpGainEvent event) { if (event.getXpGainReason() == XPGainReason.COMMAND) return; - SkillType skillType = event.getSkill(); - int threshold = ExperienceConfig.getInstance().getDiminishedReturnsThreshold(skillType); + PrimarySkill primarySkill = event.getSkill(); + int threshold = ExperienceConfig.getInstance().getDiminishedReturnsThreshold(primarySkill); if (threshold <= 0 || !ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) { // Diminished returns is turned off return; @@ -63,15 +63,15 @@ public class SelfListener implements Listener { Player player = event.getPlayer(); McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - if (skillType.isChildSkill()) { + if (primarySkill.isChildSkill()) { return; } - float modifiedThreshold = (float) (threshold / skillType.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()); - float difference = (mcMMOPlayer.getProfile().getRegisteredXpGain(skillType) - modifiedThreshold) / modifiedThreshold; + float modifiedThreshold = (float) (threshold / primarySkill.getXpModifier() * ExperienceConfig.getInstance().getExperienceGainsGlobalMultiplier()); + float difference = (mcMMOPlayer.getProfile().getRegisteredXpGain(primarySkill) - modifiedThreshold) / modifiedThreshold; if (difference > 0) { -// System.out.println("Total XP Earned: " + mcMMOPlayer.getProfile().getRegisteredXpGain(skillType) + " / Threshold value: " + threshold); +// System.out.println("Total XP Earned: " + mcMMOPlayer.getProfile().getRegisteredXpGain(primarySkill) + " / Threshold value: " + threshold); // System.out.println(difference * 100 + "% over the threshold!"); // System.out.println("Previous: " + event.getRawXpGained()); // System.out.println("Adjusted XP " + (event.getRawXpGained() - (event.getRawXpGained() * difference))); diff --git a/src/main/java/com/gmail/nossr50/mcMMO.java b/src/main/java/com/gmail/nossr50/mcMMO.java index 9cf3aa224..a6ae67b17 100644 --- a/src/main/java/com/gmail/nossr50/mcMMO.java +++ b/src/main/java/com/gmail/nossr50/mcMMO.java @@ -90,6 +90,8 @@ public class mcMMO extends JavaPlugin { // XP Event Check private boolean xpEventEnabled; + private boolean classicModeEnabled; + /* Metadata Values */ public final static String entityMetadataKey = "mcMMO: Spawned Entity"; public final static String blockMetadataKey = "mcMMO: Piston Tracking"; @@ -187,6 +189,9 @@ public class mcMMO extends JavaPlugin { getServer().getPluginManager().disablePlugin(this); } + + //Grab the setting for classic mode + classicModeEnabled = Config.getInstance().getClassicMode(); } /** diff --git a/src/main/java/com/gmail/nossr50/party/ShareHandler.java b/src/main/java/com/gmail/nossr50/party/ShareHandler.java index a62116824..95a506189 100644 --- a/src/main/java/com/gmail/nossr50/party/ShareHandler.java +++ b/src/main/java/com/gmail/nossr50/party/ShareHandler.java @@ -2,6 +2,7 @@ package com.gmail.nossr50.party; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Item; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -12,7 +13,6 @@ 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.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.player.UserManager; @@ -25,10 +25,10 @@ public final class ShareHandler { * * @param xp Xp without party sharing * @param mcMMOPlayer Player initiating the Xp gain - * @param skillType Skill being used + * @param primarySkill Skill being used * @return True is the xp has been shared */ - public static boolean handleXpShare(float xp, McMMOPlayer mcMMOPlayer, SkillType skillType, XPGainReason xpGainReason) { + public static boolean handleXpShare(float xp, McMMOPlayer mcMMOPlayer, PrimarySkill primarySkill, XPGainReason xpGainReason) { Party party = mcMMOPlayer.getParty(); if (party.getXpShareMode() != ShareMode.EQUAL) { @@ -48,7 +48,7 @@ public final class ShareHandler { float splitXp = (float) (xp / partySize * shareBonus); for (Player member : nearMembers) { - UserManager.getPlayer(member).beginUnsharedXpGain(skillType, splitXp, xpGainReason); + UserManager.getPlayer(member).beginUnsharedXpGain(primarySkill, splitXp, xpGainReason); } return true; diff --git a/src/main/java/com/gmail/nossr50/runnables/commands/McrankCommandAsyncTask.java b/src/main/java/com/gmail/nossr50/runnables/commands/McrankCommandAsyncTask.java index 266311e38..0f300270f 100644 --- a/src/main/java/com/gmail/nossr50/runnables/commands/McrankCommandAsyncTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/commands/McrankCommandAsyncTask.java @@ -7,7 +7,7 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.apache.commons.lang.Validate; @@ -32,7 +32,7 @@ public class McrankCommandAsyncTask extends BukkitRunnable { @Override public void run() { - Map skills = mcMMO.getDatabaseManager().readRank(playerName); + Map skills = mcMMO.getDatabaseManager().readRank(playerName); new McrankCommandDisplayTask(skills, sender, playerName, useBoard, useChat).runTaskLater(mcMMO.p, 1); } diff --git a/src/main/java/com/gmail/nossr50/runnables/commands/McrankCommandDisplayTask.java b/src/main/java/com/gmail/nossr50/runnables/commands/McrankCommandDisplayTask.java index 0f933fe44..e9378b1a0 100644 --- a/src/main/java/com/gmail/nossr50/runnables/commands/McrankCommandDisplayTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/commands/McrankCommandDisplayTask.java @@ -2,12 +2,12 @@ package com.gmail.nossr50.runnables.commands; import java.util.Map; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.scoreboards.ScoreboardManager; @@ -15,12 +15,12 @@ import com.gmail.nossr50.util.scoreboards.ScoreboardManager; * Display the results of McrankCommandAsyncTask to the sender. */ public class McrankCommandDisplayTask extends BukkitRunnable { - private final Map skills; + private final Map skills; private final CommandSender sender; private final String playerName; private final boolean useBoard, useChat; - McrankCommandDisplayTask(Map skills, CommandSender sender, String playerName, boolean useBoard, boolean useChat) { + McrankCommandDisplayTask(Map skills, CommandSender sender, String playerName, boolean useBoard, boolean useChat) { this.skills = skills; this.sender = sender; this.playerName = playerName; @@ -47,7 +47,7 @@ public class McrankCommandDisplayTask extends BukkitRunnable { sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Heading")); sender.sendMessage(LocaleLoader.getString("Commands.mcrank.Player", playerName)); - for (SkillType skill : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill skill : PrimarySkill.NON_CHILD_SKILLS) { if (!skill.getPermissions(player)) { continue; } diff --git a/src/main/java/com/gmail/nossr50/runnables/commands/MctopCommandAsyncTask.java b/src/main/java/com/gmail/nossr50/runnables/commands/MctopCommandAsyncTask.java index 245a60a64..21aaac772 100644 --- a/src/main/java/com/gmail/nossr50/runnables/commands/MctopCommandAsyncTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/commands/MctopCommandAsyncTask.java @@ -8,17 +8,17 @@ import org.bukkit.scheduler.BukkitRunnable; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.database.PlayerStat; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.apache.commons.lang.Validate; public class MctopCommandAsyncTask extends BukkitRunnable { private final CommandSender sender; - private final SkillType skill; + private final PrimarySkill skill; private final int page; private final boolean useBoard, useChat; - public MctopCommandAsyncTask(int page, SkillType skill, CommandSender sender, boolean useBoard, boolean useChat) { + public MctopCommandAsyncTask(int page, PrimarySkill skill, CommandSender sender, boolean useBoard, boolean useChat) { Validate.isTrue(useBoard || useChat, "Attempted to start a rank retrieval with both board and chat off"); Validate.notNull(sender, "Attempted to start a rank retrieval with no recipient"); diff --git a/src/main/java/com/gmail/nossr50/runnables/commands/MctopCommandDisplayTask.java b/src/main/java/com/gmail/nossr50/runnables/commands/MctopCommandDisplayTask.java index f1c9ffc7a..90e7f3252 100644 --- a/src/main/java/com/gmail/nossr50/runnables/commands/MctopCommandDisplayTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/commands/MctopCommandDisplayTask.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.runnables.commands; import com.gmail.nossr50.datatypes.database.PlayerStat; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.scoreboards.ScoreboardManager; @@ -18,11 +18,11 @@ import java.util.List; public class MctopCommandDisplayTask extends BukkitRunnable { private final List userStats; private final CommandSender sender; - private final SkillType skill; + private final PrimarySkill skill; private final int page; private final boolean useBoard, useChat; - MctopCommandDisplayTask(List userStats, int page, SkillType skill, CommandSender sender, boolean useBoard, boolean useChat) { + MctopCommandDisplayTask(List userStats, int page, PrimarySkill skill, CommandSender sender, boolean useBoard, boolean useChat) { this.userStats = userStats; this.page = page; this.skill = skill; diff --git a/src/main/java/com/gmail/nossr50/runnables/database/FormulaConversionTask.java b/src/main/java/com/gmail/nossr50/runnables/database/FormulaConversionTask.java index ad00520ad..301494786 100644 --- a/src/main/java/com/gmail/nossr50/runnables/database/FormulaConversionTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/database/FormulaConversionTask.java @@ -1,5 +1,6 @@ package com.gmail.nossr50.runnables.database; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.command.CommandSender; import org.bukkit.scheduler.BukkitRunnable; @@ -9,7 +10,6 @@ import com.gmail.nossr50.database.DatabaseManager; import com.gmail.nossr50.datatypes.experience.FormulaType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.player.UserManager; @@ -59,20 +59,20 @@ public class FormulaConversionTask extends BukkitRunnable { private void editValues(PlayerProfile profile) { mcMMO.p.debug("========================================================================"); mcMMO.p.debug("Conversion report for " + profile.getPlayerName() + ":"); - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - int oldLevel = profile.getSkillLevel(skillType); - int oldXPLevel = profile.getSkillXpLevel(skillType); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + int oldLevel = profile.getSkillLevel(primarySkill); + int oldXPLevel = profile.getSkillXpLevel(primarySkill); int totalOldXP = mcMMO.getFormulaManager().calculateTotalExperience(oldLevel, oldXPLevel); if (totalOldXP == 0) { continue; } - int[] newExperienceValues = mcMMO.getFormulaManager().calculateNewLevel(skillType, (int) Math.floor(totalOldXP / ExperienceConfig.getInstance().getExpModifier()), formulaType); + int[] newExperienceValues = mcMMO.getFormulaManager().calculateNewLevel(primarySkill, (int) Math.floor(totalOldXP / ExperienceConfig.getInstance().getExpModifier()), formulaType); int newLevel = newExperienceValues[0]; int newXPlevel = newExperienceValues[1]; - mcMMO.p.debug(" Skill: " + skillType.toString()); + mcMMO.p.debug(" Skill: " + primarySkill.toString()); mcMMO.p.debug(" OLD:"); mcMMO.p.debug(" Level: " + oldLevel); @@ -84,8 +84,8 @@ public class FormulaConversionTask extends BukkitRunnable { mcMMO.p.debug(" XP " + newXPlevel); mcMMO.p.debug("------------------------------------------------------------------------"); - profile.modifySkill(skillType, newLevel); - profile.setSkillXpLevel(skillType, newXPlevel); + profile.modifySkill(primarySkill, newLevel); + profile.setSkillXpLevel(primarySkill, newXPlevel); } } } diff --git a/src/main/java/com/gmail/nossr50/runnables/skills/AbilityCooldownTask.java b/src/main/java/com/gmail/nossr50/runnables/skills/AbilityCooldownTask.java index 4fa1763fc..458f15546 100644 --- a/src/main/java/com/gmail/nossr50/runnables/skills/AbilityCooldownTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/skills/AbilityCooldownTask.java @@ -1,15 +1,15 @@ package com.gmail.nossr50.runnables.skills; +import com.gmail.nossr50.datatypes.skills.SuperAbility; import org.bukkit.scheduler.BukkitRunnable; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; public class AbilityCooldownTask extends BukkitRunnable { private McMMOPlayer mcMMOPlayer; - private AbilityType ability; + private SuperAbility ability; - public AbilityCooldownTask(McMMOPlayer mcMMOPlayer, AbilityType ability) { + public AbilityCooldownTask(McMMOPlayer mcMMOPlayer, SuperAbility ability) { this.mcMMOPlayer = mcMMOPlayer; this.ability = ability; } diff --git a/src/main/java/com/gmail/nossr50/runnables/skills/AbilityDisableTask.java b/src/main/java/com/gmail/nossr50/runnables/skills/AbilityDisableTask.java index c3eab3bd3..791fc2c41 100644 --- a/src/main/java/com/gmail/nossr50/runnables/skills/AbilityDisableTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/skills/AbilityDisableTask.java @@ -1,5 +1,6 @@ package com.gmail.nossr50.runnables.skills; +import com.gmail.nossr50.datatypes.skills.SuperAbility; import org.bukkit.Chunk; import org.bukkit.World; import org.bukkit.entity.Player; @@ -8,7 +9,6 @@ import org.bukkit.scheduler.BukkitRunnable; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; import com.gmail.nossr50.util.EventUtils; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.skills.ParticleEffectUtils; @@ -17,9 +17,9 @@ import com.gmail.nossr50.util.skills.SkillUtils; public class AbilityDisableTask extends BukkitRunnable { private McMMOPlayer mcMMOPlayer; - private AbilityType ability; + private SuperAbility ability; - public AbilityDisableTask(McMMOPlayer mcMMOPlayer, AbilityType ability) { + public AbilityDisableTask(McMMOPlayer mcMMOPlayer, SuperAbility ability) { this.mcMMOPlayer = mcMMOPlayer; this.ability = ability; } diff --git a/src/main/java/com/gmail/nossr50/runnables/skills/AlchemyBrewTask.java b/src/main/java/com/gmail/nossr50/runnables/skills/AlchemyBrewTask.java index 4971496cf..41c7d1cab 100644 --- a/src/main/java/com/gmail/nossr50/runnables/skills/AlchemyBrewTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/skills/AlchemyBrewTask.java @@ -8,8 +8,8 @@ import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.events.skills.alchemy.McMMOPlayerBrewEvent; import com.gmail.nossr50.events.skills.alchemy.McMMOPlayerCatalysisEvent; import com.gmail.nossr50.skills.alchemy.Alchemy; @@ -38,8 +38,8 @@ public class AlchemyBrewTask extends BukkitRunnable { brewSpeed = DEFAULT_BREW_SPEED; brewTimer = DEFAULT_BREW_TICKS; - if (player != null && !Misc.isNPCEntity(player) && Permissions.secondaryAbilityEnabled(player, SecondaryAbility.CATALYSIS)) { - double catalysis = UserManager.getPlayer(player).getAlchemyManager().calculateBrewSpeed(Permissions.lucky(player, SkillType.ALCHEMY)); + if (player != null && !Misc.isNPCEntity(player) && Permissions.isSubSkillEnabled(player, SubSkill.ALCHEMY_CATALYSIS)) { + double catalysis = UserManager.getPlayer(player).getAlchemyManager().calculateBrewSpeed(Permissions.lucky(player, PrimarySkill.ALCHEMY)); McMMOPlayerCatalysisEvent event = new McMMOPlayerCatalysisEvent(player, catalysis); mcMMO.p.getServer().getPluginManager().callEvent(event); 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 c6244da72..01c832eff 100644 --- a/src/main/java/com/gmail/nossr50/runnables/skills/AwardCombatXpTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/skills/AwardCombatXpTask.java @@ -1,23 +1,23 @@ package com.gmail.nossr50.runnables.skills; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.LivingEntity; import org.bukkit.scheduler.BukkitRunnable; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; public class AwardCombatXpTask extends BukkitRunnable { private McMMOPlayer mcMMOPlayer; private double baseXp; - private SkillType skillType; + private PrimarySkill primarySkill; private LivingEntity target; private XPGainReason xpGainReason; private double baseHealth; - public AwardCombatXpTask(McMMOPlayer mcMMOPlayer, SkillType skillType, double baseXp, LivingEntity target, XPGainReason xpGainReason) { + public AwardCombatXpTask(McMMOPlayer mcMMOPlayer, PrimarySkill primarySkill, double baseXp, LivingEntity target, XPGainReason xpGainReason) { this.mcMMOPlayer = mcMMOPlayer; - this.skillType = skillType; + this.primarySkill = primarySkill; this.baseXp = baseXp; this.target = target; this.xpGainReason = xpGainReason; @@ -39,6 +39,6 @@ public class AwardCombatXpTask extends BukkitRunnable { damage += health; } - mcMMOPlayer.beginXpGain(skillType, (int) (damage * baseXp), xpGainReason); + mcMMOPlayer.beginXpGain(primarySkill, (int) (damage * baseXp), xpGainReason); } } diff --git a/src/main/java/com/gmail/nossr50/skills/SkillManager.java b/src/main/java/com/gmail/nossr50/skills/SkillManager.java index da7f63c6f..0d88baf5d 100644 --- a/src/main/java/com/gmail/nossr50/skills/SkillManager.java +++ b/src/main/java/com/gmail/nossr50/skills/SkillManager.java @@ -1,21 +1,20 @@ package com.gmail.nossr50.skills; -import com.gmail.nossr50.config.Config; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.util.skills.PerksUtils; public abstract class SkillManager { protected McMMOPlayer mcMMOPlayer; protected int activationChance; - protected SkillType skill; + protected PrimarySkill skill; - public SkillManager(McMMOPlayer mcMMOPlayer, SkillType skill) { + public SkillManager(McMMOPlayer mcMMOPlayer, PrimarySkill skill) { this.mcMMOPlayer = mcMMOPlayer; this.activationChance = PerksUtils.handleLuckyPerks(mcMMOPlayer.getPlayer(), skill); this.skill = skill; 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 4c66b899d..f540bb1e8 100644 --- a/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/acrobatics/AcrobaticsManager.java @@ -1,6 +1,7 @@ package com.gmail.nossr50.skills.acrobatics; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; @@ -11,8 +12,7 @@ import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.SkillManager; @@ -26,15 +26,15 @@ public class AcrobaticsManager extends SkillManager { Location lastFallLocation; public AcrobaticsManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.ACROBATICS); + super(mcMMOPlayer, PrimarySkill.ACROBATICS); } public boolean canRoll() { - return !exploitPrevention() && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.ROLL); + return !exploitPrevention() && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.ACROBATICS_ROLL); } public boolean canDodge(Entity damager) { - if (Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.DODGE)) { + if (Permissions.isSubSkillEnabled(getPlayer(), SubSkill.ACROBATICS_DODGE)) { if (damager instanceof LightningStrike && Acrobatics.dodgeLightningDisabled) { return false; } @@ -55,7 +55,7 @@ public class AcrobaticsManager extends SkillManager { double modifiedDamage = Acrobatics.calculateModifiedDodgeDamage(damage, Acrobatics.dodgeDamageModifier); Player player = getPlayer(); - if (!isFatal(modifiedDamage) && SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.DODGE, player, this.skill, getSkillLevel(), activationChance)) { + if (!isFatal(modifiedDamage) && SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.ACROBATICS_DODGE, player, this.skill, getSkillLevel(), activationChance)) { ParticleEffectUtils.playDodgeEffect(player); if (mcMMOPlayer.useChatNotifications()) { @@ -82,13 +82,13 @@ public class AcrobaticsManager extends SkillManager { public double rollCheck(double damage) { Player player = getPlayer(); - if (player.isSneaking() && Permissions.secondaryAbilityEnabled(player, SecondaryAbility.GRACEFUL_ROLL)) { + if (player.isSneaking() && Permissions.isSubSkillEnabled(player, SubSkill.ACROBATICS_GRACEFUL_ROLL)) { return gracefulRollCheck(damage); } double modifiedDamage = Acrobatics.calculateModifiedRollDamage(damage, Acrobatics.rollThreshold); - if (!isFatal(modifiedDamage) && SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.ROLL, player, this.skill, getSkillLevel(), activationChance)) { + if (!isFatal(modifiedDamage) && SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.ACROBATICS_ROLL, player, this.skill, getSkillLevel(), activationChance)) { player.sendMessage(LocaleLoader.getString("Acrobatics.Roll.Text")); applyXpGain(calculateRollXP(damage, true), XPGainReason.PVE); @@ -112,7 +112,7 @@ public class AcrobaticsManager extends SkillManager { private double gracefulRollCheck(double damage) { double modifiedDamage = Acrobatics.calculateModifiedRollDamage(damage, Acrobatics.gracefulRollThreshold); - if (!isFatal(modifiedDamage) && SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.GRACEFUL_ROLL, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!isFatal(modifiedDamage) && SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.ACROBATICS_GRACEFUL_ROLL, getPlayer(), this.skill, getSkillLevel(), activationChance)) { getPlayer().sendMessage(LocaleLoader.getString("Acrobatics.Ability.Proc")); applyXpGain(calculateRollXP(damage, true), XPGainReason.PVE); 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 2eeb4700c..a6b067f44 100644 --- a/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.java +++ b/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyManager.java @@ -7,7 +7,7 @@ import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.skills.alchemy.PotionConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage; import com.gmail.nossr50.skills.SkillManager; @@ -17,7 +17,7 @@ public class AlchemyManager extends SkillManager { private final double LUCKY_MODIFIER = 4.0 / 3.0; public AlchemyManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.ALCHEMY); + super(mcMMOPlayer, PrimarySkill.ALCHEMY); } public int getTier() { diff --git a/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java b/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java index 1d48adea8..5f57765ff 100644 --- a/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java +++ b/src/main/java/com/gmail/nossr50/skills/alchemy/AlchemyPotionBrewer.java @@ -16,7 +16,7 @@ import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.skills.alchemy.PotionConfig; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.datatypes.skills.alchemy.AlchemyPotion; import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage; import com.gmail.nossr50.events.fake.FakeBrewEvent; @@ -94,7 +94,7 @@ public final class AlchemyPotionBrewer { } private static List getValidIngredients(Player player) { - return PotionConfig.getInstance().getIngredients((player == null || !Permissions.secondaryAbilityEnabled(player, SecondaryAbility.CONCOCTIONS)) ? 1 : UserManager.getPlayer(player).getAlchemyManager().getTier()); + return PotionConfig.getInstance().getIngredients((player == null || !Permissions.isSubSkillEnabled(player, SubSkill.ALCHEMY_CONCOCTIONS)) ? 1 : UserManager.getPlayer(player).getAlchemyManager().getTier()); } public static void finishBrewing(BlockState brewingStand, Player player, boolean forced) { diff --git a/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java b/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java index f4ccb17be..ea8ffa112 100644 --- a/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java +++ b/src/main/java/com/gmail/nossr50/skills/archery/ArcheryManager.java @@ -1,6 +1,7 @@ package com.gmail.nossr50.skills.archery; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; @@ -10,8 +11,7 @@ import org.bukkit.potion.PotionEffectType; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.Misc; @@ -21,19 +21,19 @@ import com.gmail.nossr50.util.skills.SkillUtils; public class ArcheryManager extends SkillManager { public ArcheryManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.ARCHERY); + super(mcMMOPlayer, PrimarySkill.ARCHERY); } public boolean canDaze(LivingEntity target) { - return target instanceof Player && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.DAZE); + return target instanceof Player && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.ARCHERY_DAZE); } public boolean canSkillShot() { - return getSkillLevel() >= Archery.skillShotIncreaseLevel && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.SKILL_SHOT); + return getSkillLevel() >= Archery.skillShotIncreaseLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.ARCHERY_SKILL_SHOT); } public boolean canRetrieveArrows() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.RETRIEVE); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.ARCHERY_RETRIEVE); } /** @@ -59,7 +59,7 @@ public class ArcheryManager extends SkillManager { * @param target The {@link LivingEntity} damaged by the arrow */ public void retrieveArrows(LivingEntity target) { - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.RETRIEVE, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.ARCHERY_RETRIEVE, getPlayer(), this.skill, getSkillLevel(), activationChance)) { Archery.incrementTrackerValue(target); } } @@ -70,7 +70,7 @@ public class ArcheryManager extends SkillManager { * @param defender The {@link Player} being affected by the ability */ public double daze(Player defender) { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.DAZE, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.ARCHERY_DAZE, getPlayer(), this.skill, getSkillLevel(), activationChance)) { return 0; } @@ -97,7 +97,7 @@ public class ArcheryManager extends SkillManager { * @param damage The amount of damage initially dealt by the event */ public double skillShot(double damage) { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.ALWAYS_FIRES, SecondaryAbility.SKILL_SHOT, getPlayer(), null, 0, 0)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.ALWAYS_FIRES, SubSkill.ARCHERY_SKILL_SHOT, getPlayer(), null, 0, 0)) { return damage; } diff --git a/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java b/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java index c8f2750c9..ad2892f07 100644 --- a/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java +++ b/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java @@ -2,16 +2,16 @@ package com.gmail.nossr50.skills.axes; import java.util.Map; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageEvent.DamageModifier; import org.bukkit.inventory.ItemStack; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.SkillManager; @@ -24,27 +24,27 @@ import com.gmail.nossr50.util.skills.SkillUtils; public class AxesManager extends SkillManager { public AxesManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.AXES); + super(mcMMOPlayer, PrimarySkill.AXES); } public boolean canUseAxeMastery() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.AXE_MASTERY); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.AXES_AXE_MASTERY); } public boolean canCriticalHit(LivingEntity target) { - return target.isValid() && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.CRITICAL_HIT); + return target.isValid() && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.AXES_CRITICAL_HIT); } public boolean canImpact(LivingEntity target) { - return target.isValid() && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.ARMOR_IMPACT) && Axes.hasArmor(target); + return target.isValid() && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.AXES_ARMOR_IMPACT) && Axes.hasArmor(target); } public boolean canGreaterImpact(LivingEntity target) { - return target.isValid() && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.GREATER_IMPACT) && !Axes.hasArmor(target); + return target.isValid() && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.AXES_GREATER_IMPACT) && !Axes.hasArmor(target); } public boolean canUseSkullSplitter(LivingEntity target) { - return target.isValid() && mcMMOPlayer.getAbilityMode(AbilityType.SKULL_SPLITTER) && Permissions.skullSplitter(getPlayer()); + return target.isValid() && mcMMOPlayer.getAbilityMode(SuperAbility.SKULL_SPLITTER) && Permissions.skullSplitter(getPlayer()); } public boolean canActivateAbility() { @@ -55,7 +55,7 @@ public class AxesManager extends SkillManager { * Handle the effects of the Axe Mastery ability */ public double axeMastery() { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.ALWAYS_FIRES, SecondaryAbility.AXE_MASTERY, getPlayer(), null, 0, 0)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.ALWAYS_FIRES, SubSkill.AXES_AXE_MASTERY, getPlayer(), null, 0, 0)) { return 0; } @@ -69,7 +69,7 @@ public class AxesManager extends SkillManager { * @param damage The amount of damage initially dealt by the event */ public double criticalHit(LivingEntity target, double damage) { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.CRITICAL_HIT, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.AXES_CRITICAL_HIT, getPlayer(), this.skill, getSkillLevel(), activationChance)) { return 0; } @@ -105,7 +105,7 @@ public class AxesManager extends SkillManager { for (ItemStack armor : target.getEquipment().getArmorContents()) { if (armor != null && ItemUtils.isArmor(armor)) { - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_STATIC_CHANCE, SecondaryAbility.ARMOR_IMPACT, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_STATIC_CHANCE, SubSkill.AXES_ARMOR_IMPACT, getPlayer(), this.skill, getSkillLevel(), activationChance)) { SkillUtils.handleDurabilityChange(armor, durabilityDamage, Axes.impactMaxDurabilityModifier); } } @@ -119,7 +119,7 @@ public class AxesManager extends SkillManager { */ public double greaterImpact(LivingEntity target) { //static chance (3rd param) - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_STATIC_CHANCE, SecondaryAbility.GREATER_IMPACT, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_STATIC_CHANCE, SubSkill.AXES_GREATER_IMPACT, getPlayer(), this.skill, getSkillLevel(), activationChance)) { return 0; } diff --git a/src/main/java/com/gmail/nossr50/skills/child/ChildConfig.java b/src/main/java/com/gmail/nossr50/skills/child/ChildConfig.java index b3e0c232f..5ef34e47d 100644 --- a/src/main/java/com/gmail/nossr50/skills/child/ChildConfig.java +++ b/src/main/java/com/gmail/nossr50/skills/child/ChildConfig.java @@ -2,10 +2,10 @@ package com.gmail.nossr50.skills.child; import java.util.EnumSet; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.configuration.file.YamlConfiguration; import com.gmail.nossr50.config.AutoUpdateConfigLoader; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.util.StringUtils; public class ChildConfig extends AutoUpdateConfigLoader { @@ -20,15 +20,15 @@ public class ChildConfig extends AutoUpdateConfigLoader { FamilyTree.clearRegistrations(); // when reloading, need to clear statics - for (SkillType skill : SkillType.CHILD_SKILLS) { + for (PrimarySkill skill : PrimarySkill.CHILD_SKILLS) { plugin.debug("Finding parents of " + skill.name()); - EnumSet parentSkills = EnumSet.noneOf(SkillType.class); + EnumSet parentSkills = EnumSet.noneOf(PrimarySkill.class); boolean useDefaults = false; // If we had an error we back out and use defaults for (String name : config.getStringList(StringUtils.getCapitalized(skill.name()))) { try { - SkillType parentSkill = SkillType.valueOf(name.toUpperCase()); + PrimarySkill parentSkill = PrimarySkill.valueOf(name.toUpperCase()); FamilyTree.enforceNotChildSkill(parentSkill); parentSkills.add(parentSkill); } @@ -46,12 +46,12 @@ public class ChildConfig extends AutoUpdateConfigLoader { * If they're dedicated enough to have modified it, they can have the errors it may produce. * Alternatively, this can be used to allow child skills to be parent skills, provided there are no circular dependencies this is an advanced sort of configuration. */ - parentSkills.add(SkillType.valueOf(name.toUpperCase())); + parentSkills.add(PrimarySkill.valueOf(name.toUpperCase())); } } // Register them - for (SkillType parentSkill : parentSkills) { + for (PrimarySkill parentSkill : parentSkills) { plugin.debug("Registering " + parentSkill.name() + " as parent of " + skill.name()); FamilyTree.registerParent(skill, parentSkill); } diff --git a/src/main/java/com/gmail/nossr50/skills/child/FamilyTree.java b/src/main/java/com/gmail/nossr50/skills/child/FamilyTree.java index bb3842b01..fc1b6721f 100644 --- a/src/main/java/com/gmail/nossr50/skills/child/FamilyTree.java +++ b/src/main/java/com/gmail/nossr50/skills/child/FamilyTree.java @@ -5,32 +5,32 @@ import java.util.EnumSet; import java.util.HashMap; import java.util.Set; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; public class FamilyTree { - private static HashMap> tree = new HashMap>(); + private static HashMap> tree = new HashMap>(); - public static Set getParents(SkillType childSkill) { + public static Set getParents(PrimarySkill childSkill) { enforceChildSkill(childSkill); // We do not check if we have the child skill in question, as not having it would mean we did something wrong, and an NPE is desired. return tree.get(childSkill); } - protected static void registerParent(SkillType childSkill, SkillType parentSkill) { + protected static void registerParent(PrimarySkill childSkill, PrimarySkill parentSkill) { enforceChildSkill(childSkill); enforceNotChildSkill(parentSkill); if (!tree.containsKey(childSkill)) { - tree.put(childSkill, EnumSet.noneOf(SkillType.class)); + tree.put(childSkill, EnumSet.noneOf(PrimarySkill.class)); } tree.get(childSkill).add(parentSkill); } protected static void closeRegistration() { - for (SkillType childSkill : tree.keySet()) { - Set immutableSet = Collections.unmodifiableSet(tree.get(childSkill)); + for (PrimarySkill childSkill : tree.keySet()) { + Set immutableSet = Collections.unmodifiableSet(tree.get(childSkill)); tree.put(childSkill, immutableSet); } } @@ -39,13 +39,13 @@ public class FamilyTree { tree.clear(); } - protected static void enforceChildSkill(SkillType skill) { + protected static void enforceChildSkill(PrimarySkill skill) { if (!skill.isChildSkill()) { throw new IllegalArgumentException(skill.name() + " is not a child skill!"); } } - protected static void enforceNotChildSkill(SkillType skill) { + protected static void enforceNotChildSkill(PrimarySkill skill) { if (skill.isChildSkill()) { throw new IllegalArgumentException(skill.name() + " is a child skill!"); } diff --git a/src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java b/src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java index 3c87130be..37800d120 100644 --- a/src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java +++ b/src/main/java/com/gmail/nossr50/skills/excavation/Excavation.java @@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.excavation; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.config.treasure.TreasureConfig; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.StringUtils; @@ -26,7 +26,7 @@ public class Excavation { } protected static int getBlockXP(BlockState blockState) { - int xp = ExperienceConfig.getInstance().getXp(SkillType.EXCAVATION, blockState.getType()); + int xp = ExperienceConfig.getInstance().getXp(PrimarySkill.EXCAVATION, blockState.getType()); if (xp == 0 && mcMMO.getModManager().isCustomExcavationBlock(blockState)) { xp = mcMMO.getModManager().getBlock(blockState).getXpGain(); 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 302415188..a58ddcd36 100644 --- a/src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java +++ b/src/main/java/com/gmail/nossr50/skills/excavation/ExcavationManager.java @@ -2,13 +2,13 @@ package com.gmail.nossr50.skills.excavation; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.Location; import org.bukkit.block.BlockState; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.treasure.ExcavationTreasure; import com.gmail.nossr50.skills.SkillManager; @@ -18,7 +18,7 @@ import com.gmail.nossr50.util.skills.SkillUtils; public class ExcavationManager extends SkillManager { public ExcavationManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.EXCAVATION); + super(mcMMOPlayer, PrimarySkill.EXCAVATION); } /** @@ -29,7 +29,7 @@ public class ExcavationManager extends SkillManager { public void excavationBlockCheck(BlockState blockState) { int xp = Excavation.getBlockXP(blockState); - if (Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.EXCAVATION_TREASURE_HUNTER)) { + if (Permissions.isSubSkillEnabled(getPlayer(), SubSkill.EXCAVATION_TREASURE_HUNTER)) { List treasures = Excavation.getTreasures(blockState); if (!treasures.isEmpty()) { 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 40dafc6f2..b45349c12 100644 --- a/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java @@ -5,8 +5,8 @@ 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.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.datatypes.treasure.EnchantmentTreasure; import com.gmail.nossr50.datatypes.treasure.FishingTreasure; @@ -14,7 +14,7 @@ import com.gmail.nossr50.datatypes.treasure.Rarity; import com.gmail.nossr50.datatypes.treasure.ShakeTreasure; import com.gmail.nossr50.events.skills.fishing.McMMOPlayerFishingTreasureEvent; import com.gmail.nossr50.events.skills.fishing.McMMOPlayerShakeEvent; -import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityWeightedActivationCheckEvent; +import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillWeightedActivationCheckEvent; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.skills.KrakenAttackTask; @@ -48,15 +48,15 @@ public class FishingManager extends SkillManager { private Location hookLocation; public FishingManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.FISHING); + super(mcMMOPlayer, PrimarySkill.FISHING); } public boolean canShake(Entity target) { - return target instanceof LivingEntity && getSkillLevel() >= Tier.ONE.getLevel() && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.SHAKE); + return target instanceof LivingEntity && getSkillLevel() >= Tier.ONE.getLevel() && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.FISHING_SHAKE); } public boolean canMasterAngler() { - return getSkillLevel() >= AdvancedConfig.getInstance().getMasterAnglerUnlockLevel() && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.MASTER_ANGLER); + return getSkillLevel() >= AdvancedConfig.getInstance().getMasterAnglerUnlockLevel() && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.FISHING_MASTER_ANGLER); } public boolean unleashTheKraken() { @@ -183,7 +183,7 @@ public class FishingManager extends SkillManager { Player player = getPlayer(); - if (!Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.ICE_FISHING)) { + if (!Permissions.isSubSkillEnabled(getPlayer(), SubSkill.FISHING_ICE_FISHING)) { return false; } @@ -279,12 +279,12 @@ public class FishingManager extends SkillManager { */ public void handleFishing(Item fishingCatch) { this.fishingCatch = fishingCatch; - int fishXp = ExperienceConfig.getInstance().getXp(SkillType.FISHING, fishingCatch.getItemStack().getType()); + int fishXp = ExperienceConfig.getInstance().getXp(PrimarySkill.FISHING, fishingCatch.getItemStack().getType()); int treasureXp = 0; Player player = getPlayer(); FishingTreasure treasure = null; - if (Config.getInstance().getFishingDropsEnabled() && Permissions.secondaryAbilityEnabled(player, SecondaryAbility.FISHING_TREASURE_HUNTER)) { + if (Config.getInstance().getFishingDropsEnabled() && Permissions.isSubSkillEnabled(player, SubSkill.FISHING_TREASURE_HUNTER)) { treasure = getFishingTreasure(); this.fishingCatch = null; } @@ -293,7 +293,7 @@ public class FishingManager extends SkillManager { ItemStack treasureDrop = treasure.getDrop().clone(); // Not cloning is bad, m'kay? Map enchants = new HashMap(); - if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.MAGIC_HUNTER) && ItemUtils.isEnchantable(treasureDrop)) { + if (Permissions.isSubSkillEnabled(player, SubSkill.FISHING_MAGIC_HUNTER) && ItemUtils.isEnchantable(treasureDrop)) { enchants = handleMagicHunter(treasureDrop); } @@ -355,7 +355,7 @@ public class FishingManager extends SkillManager { public void shakeCheck(LivingEntity target) { fishingTries--; // Because autoclicking to shake is OK. - SecondaryAbilityWeightedActivationCheckEvent activationEvent = new SecondaryAbilityWeightedActivationCheckEvent(getPlayer(), SecondaryAbility.SHAKE, getShakeProbability() / activationChance); + SubSkillWeightedActivationCheckEvent activationEvent = new SubSkillWeightedActivationCheckEvent(getPlayer(), SubSkill.FISHING_SHAKE, getShakeProbability() / activationChance); mcMMO.p.getServer().getPluginManager().callEvent(activationEvent); if ((activationEvent.getChance() * activationChance) > Misc.getRandom().nextInt(activationChance)) { List possibleDrops = Fishing.findPossibleDrops(target); 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 23dbf9448..a479475d5 100644 --- a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java +++ b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java @@ -12,7 +12,7 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.skills.HerbalismBlockUpdaterTask; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.*; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import com.gmail.nossr50.util.skills.SkillUtils; import org.bukkit.Location; import org.bukkit.Material; @@ -28,7 +28,7 @@ import java.util.List; public class HerbalismManager extends SkillManager { public HerbalismManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.HERBALISM); + super(mcMMOPlayer, PrimarySkill.HERBALISM); } public boolean canBlockCheck() { @@ -47,15 +47,15 @@ public class HerbalismManager extends SkillManager { PlayerInventory inventory = player.getInventory(); Material itemType = inventory.getItemInMainHand().getType(); - return (itemType == Material.BROWN_MUSHROOM || itemType == Material.RED_MUSHROOM) && inventory.contains(Material.BROWN_MUSHROOM, 1) && inventory.contains(Material.RED_MUSHROOM, 1) && BlockUtils.canMakeShroomy(blockState) && Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SHROOM_THUMB); + return (itemType == Material.BROWN_MUSHROOM || itemType == Material.RED_MUSHROOM) && inventory.contains(Material.BROWN_MUSHROOM, 1) && inventory.contains(Material.RED_MUSHROOM, 1) && BlockUtils.canMakeShroomy(blockState) && Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_SHROOM_THUMB); } public boolean canUseHylianLuck() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.HYLIAN_LUCK); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.HERBALISM_HYLIAN_LUCK); } public boolean canGreenTerraBlock(BlockState blockState) { - return mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState); + return mcMMOPlayer.getAbilityMode(SuperAbility.GREEN_TERRA) && BlockUtils.canMakeMossy(blockState); } public boolean canActivateAbility() { @@ -63,7 +63,7 @@ public class HerbalismManager extends SkillManager { } public boolean canGreenTerraPlant() { - return mcMMOPlayer.getAbilityMode(AbilityType.GREEN_TERRA); + return mcMMOPlayer.getAbilityMode(SuperAbility.GREEN_TERRA); } /** @@ -130,14 +130,14 @@ public class HerbalismManager extends SkillManager { CustomBlock customBlock = mcMMO.getModManager().getBlock(blockState); xp = customBlock.getXpGain(); - if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.HERBALISM_DOUBLE_DROPS) && customBlock.isDoubleDropEnabled()) { + if (Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_DOUBLE_DROPS) && customBlock.isDoubleDropEnabled()) { drops = blockState.getBlock().getDrops(); } } else { xp = ExperienceConfig.getInstance().getXp(skill, blockState.getBlockData()); - if (Config.getInstance().getDoubleDropsEnabled(skill, material) && Permissions.secondaryAbilityEnabled(player, SecondaryAbility.HERBALISM_DOUBLE_DROPS)) { + if (Config.getInstance().getDoubleDropsEnabled(skill, material) && Permissions.isSubSkillEnabled(player, SubSkill.HERBALISM_DOUBLE_DROPS)) { drops = blockState.getBlock().getDrops(); } @@ -158,7 +158,7 @@ public class HerbalismManager extends SkillManager { } for (int i = greenTerra ? 2 : 1; i != 0; i--) { - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.HERBALISM_DOUBLE_DROPS, player, this.skill, getSkillLevel(), activationChance)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.HERBALISM_DOUBLE_DROPS, player, this.skill, getSkillLevel(), activationChance)) { for (ItemStack item : drops) { Misc.dropItems(Misc.getBlockCenter(blockState), item, amount); } @@ -173,7 +173,7 @@ public class HerbalismManager extends SkillManager { * @return true if the ability was successful, false otherwise */ public boolean processGreenThumbBlocks(BlockState blockState) { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.GREEN_THUMB_BLOCK, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.HERBALISM_GREEN_THUMB, getPlayer(), this.skill, getSkillLevel(), activationChance)) { getPlayer().sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Fail")); return false; } @@ -188,7 +188,7 @@ public class HerbalismManager extends SkillManager { * @return true if the ability was successful, false otherwise */ public boolean processHylianLuck(BlockState blockState) { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.HYLIAN_LUCK, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.HERBALISM_HYLIAN_LUCK, getPlayer(), this.skill, getSkillLevel(), activationChance)) { return false; } @@ -243,7 +243,7 @@ public class HerbalismManager extends SkillManager { playerInventory.removeItem(new ItemStack(Material.RED_MUSHROOM)); player.updateInventory(); - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.SHROOM_THUMB, player, this.skill, getSkillLevel(), activationChance)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.HERBALISM_SHROOM_THUMB, player, this.skill, getSkillLevel(), activationChance)) { player.sendMessage(LocaleLoader.getString("Herbalism.Ability.ShroomThumb.Fail")); return false; } @@ -300,7 +300,7 @@ public class HerbalismManager extends SkillManager { return; } - if (!greenTerra && !SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.GREEN_THUMB_PLANT, player, this.skill, getSkillLevel(), activationChance)) { + if (!greenTerra && !SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.HERBALISM_GREEN_THUMB, player, this.skill, getSkillLevel(), activationChance)) { return; } diff --git a/src/main/java/com/gmail/nossr50/skills/mining/Mining.java b/src/main/java/com/gmail/nossr50/skills/mining/Mining.java index cfd4bdc39..a180a45c6 100644 --- a/src/main/java/com/gmail/nossr50/skills/mining/Mining.java +++ b/src/main/java/com/gmail/nossr50/skills/mining/Mining.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.skills.mining; import com.gmail.nossr50.config.experience.ExperienceConfig; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.Misc; import org.bukkit.Material; @@ -16,7 +16,7 @@ public class Mining { * @param blockState The {@link BlockState} to check ability activation for */ public static int getBlockXp(BlockState blockState) { - int xp = ExperienceConfig.getInstance().getXp(SkillType.MINING, blockState.getType()); + int xp = ExperienceConfig.getInstance().getXp(PrimarySkill.MINING, blockState.getType()); if (xp == 0 && mcMMO.getModManager().isCustomMiningBlock(blockState)) { xp = mcMMO.getModManager().getBlock(blockState).getXpGain(); 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 aa4f3c512..e70c41087 100644 --- a/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java +++ b/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java @@ -2,9 +2,9 @@ package com.gmail.nossr50.skills.mining; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; @@ -15,7 +15,7 @@ import com.gmail.nossr50.util.BlockUtils; import com.gmail.nossr50.util.EventUtils; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import com.gmail.nossr50.util.skills.SkillUtils; import org.bukkit.inventory.ItemStack; import org.bukkit.Material; @@ -30,7 +30,7 @@ import java.util.List; public class MiningManager extends SkillManager { public MiningManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.MINING); + super(mcMMOPlayer, PrimarySkill.MINING); } public boolean canUseDemolitionsExpertise() { @@ -61,7 +61,7 @@ public class MiningManager extends SkillManager { applyXpGain(Mining.getBlockXp(blockState), XPGainReason.PVE); - if (!Permissions.secondaryAbilityEnabled(player, SecondaryAbility.MINING_DOUBLE_DROPS)) { + if (!Permissions.isSubSkillEnabled(player, SubSkill.MINING_DOUBLE_DROPS)) { return; } @@ -79,7 +79,7 @@ public class MiningManager extends SkillManager { //TODO: Make this readable for (int i = mcMMOPlayer.getAbilityMode(skill.getAbility()) ? 2 : 1; i != 0; i--) { - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.MINING_DOUBLE_DROPS, player, this.skill, getSkillLevel(), activationChance)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.MINING_DOUBLE_DROPS, player, this.skill, getSkillLevel(), activationChance)) { if (silkTouch) { Mining.handleSilkTouchDrops(blockState); } @@ -103,16 +103,16 @@ public class MiningManager extends SkillManager { TNTPrimed tnt = player.getWorld().spawn(targetBlock.getLocation(), TNTPrimed.class); - SkillUtils.sendSkillMessage(player, AbilityType.BLAST_MINING.getAbilityPlayer(player)); + SkillUtils.sendSkillMessage(player, SuperAbility.BLAST_MINING.getAbilityPlayer(player)); player.sendMessage(LocaleLoader.getString("Mining.Blast.Boom")); tnt.setMetadata(mcMMO.tntMetadataKey, mcMMOPlayer.getPlayerMetadata()); tnt.setFuseTicks(0); targetBlock.setType(Material.AIR); - mcMMOPlayer.setAbilityDATS(AbilityType.BLAST_MINING, System.currentTimeMillis()); - mcMMOPlayer.setAbilityInformed(AbilityType.BLAST_MINING, false); - new AbilityCooldownTask(mcMMOPlayer, AbilityType.BLAST_MINING).runTaskLaterAsynchronously(mcMMO.p, AbilityType.BLAST_MINING.getCooldown() * Misc.TICK_CONVERSION_FACTOR); + mcMMOPlayer.setAbilityDATS(SuperAbility.BLAST_MINING, System.currentTimeMillis()); + mcMMOPlayer.setAbilityInformed(SuperAbility.BLAST_MINING, false); + new AbilityCooldownTask(mcMMOPlayer, SuperAbility.BLAST_MINING).runTaskLaterAsynchronously(mcMMO.p, SuperAbility.BLAST_MINING.getCooldown() * Misc.TICK_CONVERSION_FACTOR); } /** @@ -287,7 +287,7 @@ public class MiningManager extends SkillManager { } private boolean blastMiningCooldownOver() { - int timeRemaining = mcMMOPlayer.calculateTimeRemaining(AbilityType.BLAST_MINING); + int timeRemaining = mcMMOPlayer.calculateTimeRemaining(SuperAbility.BLAST_MINING); if (timeRemaining > 0) { getPlayer().sendMessage(LocaleLoader.getString("Skills.TooTired", timeRemaining)); 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 04463fbd8..e208e7dfd 100644 --- a/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java +++ b/src/main/java/com/gmail/nossr50/skills/repair/RepairManager.java @@ -3,8 +3,8 @@ package com.gmail.nossr50.skills.repair; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; @@ -15,7 +15,7 @@ import com.gmail.nossr50.util.EventUtils; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.StringUtils; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import com.gmail.nossr50.util.skills.SkillUtils; import org.bukkit.Material; import org.bukkit.Sound; @@ -23,7 +23,6 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; -import org.bukkit.block.data.BlockData; import java.util.Map; import java.util.Map.Entry; @@ -33,7 +32,7 @@ public class RepairManager extends SkillManager { private int lastClick; public RepairManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.REPAIR); + super(mcMMOPlayer, PrimarySkill.REPAIR); } /** @@ -245,12 +244,12 @@ public class RepairManager extends SkillManager { private short repairCalculate(short durability, int repairAmount) { Player player = getPlayer(); - if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.REPAIR_MASTERY)) { + if (Permissions.isSubSkillEnabled(player, SubSkill.REPAIR_REPAIR_MASTERY)) { double bonus = repairAmount * Math.min((((Repair.repairMasteryMaxBonus / Repair.repairMasteryMaxBonusLevel) * getSkillLevel()) / 100.0D), Repair.repairMasteryMaxBonus / 100.0D); repairAmount += bonus; } - if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.SUPER_REPAIR) && checkPlayerProcRepair()) { + if (Permissions.isSubSkillEnabled(player, SubSkill.REPAIR_SUPER_REPAIR) && checkPlayerProcRepair()) { repairAmount *= 2.0D; } @@ -267,7 +266,7 @@ public class RepairManager extends SkillManager { * @return true if bonus granted, false otherwise */ private boolean checkPlayerProcRepair() { - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.SUPER_REPAIR, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.REPAIR_SUPER_REPAIR, getPlayer(), this.skill, getSkillLevel(), activationChance)) { getPlayer().sendMessage(LocaleLoader.getString("Repair.Skills.FeltEasy")); return true; } @@ -294,7 +293,7 @@ public class RepairManager extends SkillManager { return; } - if (getArcaneForgingRank() == 0 || !Permissions.secondaryAbilityEnabled(player, SecondaryAbility.ARCANE_FORGING)) { + if (getArcaneForgingRank() == 0 || !Permissions.isSubSkillEnabled(player, SubSkill.REPAIR_ARCANE_FORGING)) { for (Enchantment enchant : enchants.keySet()) { item.removeEnchantment(enchant); } diff --git a/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java b/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java index c529638d3..514b2739d 100644 --- a/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java +++ b/src/main/java/com/gmail/nossr50/skills/salvage/SalvageManager.java @@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.salvage; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.SkillManager; @@ -20,7 +20,6 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.EnchantmentStorageMeta; -import org.bukkit.block.data.BlockData; import java.util.Map; import java.util.Map.Entry; @@ -30,7 +29,7 @@ public class SalvageManager extends SkillManager { private int lastClick; public SalvageManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.SALVAGE); + super(mcMMOPlayer, PrimarySkill.SALVAGE); } /** diff --git a/src/main/java/com/gmail/nossr50/skills/smelting/Smelting.java b/src/main/java/com/gmail/nossr50/skills/smelting/Smelting.java index db1f101bc..c2913319b 100644 --- a/src/main/java/com/gmail/nossr50/skills/smelting/Smelting.java +++ b/src/main/java/com/gmail/nossr50/skills/smelting/Smelting.java @@ -2,7 +2,7 @@ package com.gmail.nossr50.skills.smelting; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.experience.ExperienceConfig; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.mcMMO; import org.bukkit.inventory.ItemStack; @@ -44,6 +44,6 @@ public class Smelting { public static double fluxMiningChance = AdvancedConfig.getInstance().getFluxMiningChance(); protected static int getResourceXp(ItemStack smelting) { - return mcMMO.getModManager().isCustomOre(smelting.getType()) ? mcMMO.getModManager().getBlock(smelting.getType()).getSmeltingXpGain() : ExperienceConfig.getInstance().getXp(SkillType.SMELTING, smelting.getType()); + return mcMMO.getModManager().isCustomOre(smelting.getType()) ? mcMMO.getModManager().getBlock(smelting.getType()).getSmeltingXpGain() : ExperienceConfig.getInstance().getXp(PrimarySkill.SMELTING, smelting.getType()); } } 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 83426e27b..001f0c610 100644 --- a/src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/smelting/SmeltingManager.java @@ -2,10 +2,10 @@ package com.gmail.nossr50.skills.smelting; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; -import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityWeightedActivationCheckEvent; +import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillWeightedActivationCheckEvent; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.SkillManager; @@ -16,7 +16,7 @@ import com.gmail.nossr50.util.EventUtils; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.skills.ParticleEffectUtils; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import com.gmail.nossr50.util.skills.SkillUtils; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -33,15 +33,15 @@ import java.util.List; public class SmeltingManager extends SkillManager { public SmeltingManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.SMELTING); + super(mcMMOPlayer, PrimarySkill.SMELTING); } public boolean canUseFluxMining(BlockState blockState) { - return getSkillLevel() >= Smelting.fluxMiningUnlockLevel && BlockUtils.affectedByFluxMining(blockState) && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.FLUX_MINING) && !mcMMO.getPlaceStore().isTrue(blockState); + return getSkillLevel() >= Smelting.fluxMiningUnlockLevel && BlockUtils.affectedByFluxMining(blockState) && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.SMELTING_FLUX_MINING) && !mcMMO.getPlaceStore().isTrue(blockState); } public boolean isSecondSmeltSuccessful() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.SECOND_SMELT) && SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.SECOND_SMELT, getPlayer(), this.skill, getSkillLevel(), activationChance); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.SMELTING_SECOND_SMELT) && SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.SMELTING_SECOND_SMELT, getPlayer(), this.skill, getSkillLevel(), activationChance); } /** @@ -53,7 +53,7 @@ public class SmeltingManager extends SkillManager { public boolean processFluxMining(BlockState blockState) { Player player = getPlayer(); - SecondaryAbilityWeightedActivationCheckEvent event = new SecondaryAbilityWeightedActivationCheckEvent(getPlayer(), SecondaryAbility.FLUX_MINING, Smelting.fluxMiningChance / activationChance); + SubSkillWeightedActivationCheckEvent event = new SubSkillWeightedActivationCheckEvent(getPlayer(), SubSkill.SMELTING_FLUX_MINING, Smelting.fluxMiningChance / activationChance); mcMMO.p.getServer().getPluginManager().callEvent(event); if ((event.getChance() * activationChance) > Misc.getRandom().nextInt(activationChance)) { ItemStack item = null; diff --git a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java index c10e9325a..cbb9f016f 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java @@ -2,7 +2,10 @@ package com.gmail.nossr50.skills.swords; import java.util.Map; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; @@ -10,9 +13,6 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageModifier; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.runnables.skills.BleedTimerTask; @@ -24,7 +24,7 @@ import com.gmail.nossr50.util.skills.SkillUtils; public class SwordsManager extends SkillManager { public SwordsManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.SWORDS); + super(mcMMOPlayer, PrimarySkill.SWORDS); } public boolean canActivateAbility() { @@ -32,15 +32,15 @@ public class SwordsManager extends SkillManager { } public boolean canUseBleed() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.BLEED); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.SWORDS_BLEED); } public boolean canUseCounterAttack(Entity target) { - return target instanceof LivingEntity && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.COUNTER); + return target instanceof LivingEntity && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.SWORDS_COUNTER); } public boolean canUseSerratedStrike() { - return mcMMOPlayer.getAbilityMode(AbilityType.SERRATED_STRIKES) && Permissions.serratedStrikes(getPlayer()); + return mcMMOPlayer.getAbilityMode(SuperAbility.SERRATED_STRIKES) && Permissions.serratedStrikes(getPlayer()); } /** @@ -49,9 +49,9 @@ public class SwordsManager extends SkillManager { * @param target The defending entity */ public void bleedCheck(LivingEntity target) { - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.BLEED, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.SWORDS_BLEED, getPlayer(), this.skill, getSkillLevel(), activationChance)) { - if (getSkillLevel() >= AdvancedConfig.getInstance().getMaxBonusLevel(SecondaryAbility.BLEED)) { + if (getSkillLevel() >= AdvancedConfig.getInstance().getMaxBonusLevel(SubSkill.SWORDS_BLEED)) { BleedTimerTask.add(target, Swords.bleedMaxTicks); } else { @@ -83,7 +83,7 @@ public class SwordsManager extends SkillManager { return; } - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.COUNTER, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.SWORDS_COUNTER, getPlayer(), this.skill, getSkillLevel(), activationChance)) { CombatUtils.dealDamage(attacker, damage / Swords.counterAttackModifier, getPlayer()); getPlayer().sendMessage(LocaleLoader.getString("Swords.Combat.Countered")); 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 ede4c707d..0f9d77a77 100644 --- a/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/taming/TamingManager.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.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.events.fake.FakeEntityTameEvent; -import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityWeightedActivationCheckEvent; +import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillWeightedActivationCheckEvent; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.skills.BleedTimerTask; @@ -18,7 +18,7 @@ import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.StringUtils; import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.skills.ParticleEffectUtils; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import com.gmail.nossr50.util.skills.SkillUtils; import org.bukkit.Location; import org.bukkit.Sound; @@ -31,41 +31,41 @@ import java.util.List; public class TamingManager extends SkillManager { public TamingManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.TAMING); + super(mcMMOPlayer, PrimarySkill.TAMING); } private static HashMap> summonedEntities = new HashMap>(); public boolean canUseThickFur() { - return getSkillLevel() >= Taming.thickFurUnlockLevel && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.THICK_FUR); + return getSkillLevel() >= Taming.thickFurUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.TAMING_THICK_FUR); } public boolean canUseEnvironmentallyAware() { - return getSkillLevel() >= Taming.environmentallyAwareUnlockLevel && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.ENVIRONMENTALLY_AWARE); + return getSkillLevel() >= Taming.environmentallyAwareUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.TAMING_ENVIRONMENTALLY_AWARE); } public boolean canUseShockProof() { - return getSkillLevel() >= Taming.shockProofUnlockLevel && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.SHOCK_PROOF); + return getSkillLevel() >= Taming.shockProofUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.TAMING_SHOCK_PROOF); } public boolean canUseHolyHound() { - return getSkillLevel() >= Taming.holyHoundUnlockLevel && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.HOLY_HOUND); + return getSkillLevel() >= Taming.holyHoundUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.TAMING_HOLY_HOUND); } public boolean canUseFastFoodService() { - return getSkillLevel() >= Taming.fastFoodServiceUnlockLevel && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.FAST_FOOD); + return getSkillLevel() >= Taming.fastFoodServiceUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.TAMING_FAST_FOOD); } public boolean canUseSharpenedClaws() { - return getSkillLevel() >= Taming.sharpenedClawsUnlockLevel && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.SHARPENED_CLAWS); + return getSkillLevel() >= Taming.sharpenedClawsUnlockLevel && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.TAMING_SHARPENED_CLAWS); } public boolean canUseGore() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.GORE); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.TAMING_GORE); } public boolean canUseBeastLore() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.BEAST_LORE); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.TAMING_BEAST_LORE); } /** @@ -85,7 +85,7 @@ public class TamingManager extends SkillManager { */ public void fastFoodService(Wolf wolf, double damage) { //static chance (3rd param) - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_STATIC_CHANCE, SecondaryAbility.FAST_FOOD, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_STATIC_CHANCE, SubSkill.TAMING_FAST_FOOD, getPlayer(), this.skill, getSkillLevel(), activationChance)) { return; } @@ -105,7 +105,7 @@ public class TamingManager extends SkillManager { * @param damage The initial damage */ public double gore(LivingEntity target, double damage) { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.GORE, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.TAMING_GORE, getPlayer(), this.skill, getSkillLevel(), activationChance)) { return 0; } @@ -190,7 +190,7 @@ public class TamingManager extends SkillManager { public void pummel(LivingEntity target, Wolf wolf) { double chance = 10 / activationChance; - SecondaryAbilityWeightedActivationCheckEvent event = new SecondaryAbilityWeightedActivationCheckEvent(getPlayer(), SecondaryAbility.PUMMEL, chance); + SubSkillWeightedActivationCheckEvent event = new SubSkillWeightedActivationCheckEvent(getPlayer(), SubSkill.TAMING_PUMMEL, chance); mcMMO.p.getServer().getPluginManager().callEvent(event); if ((event.getChance() * activationChance) <= Misc.getRandom().nextInt(activationChance)) { return; diff --git a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java index 20db72b46..9670e563c 100644 --- a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java +++ b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java @@ -2,9 +2,9 @@ package com.gmail.nossr50.skills.unarmed; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; @@ -14,7 +14,7 @@ import com.gmail.nossr50.util.ItemUtils; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.player.UserManager; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import com.gmail.nossr50.util.skills.SkillUtils; import org.bukkit.Material; import org.bukkit.block.BlockState; @@ -26,7 +26,7 @@ import org.bukkit.block.data.BlockData; public class UnarmedManager extends SkillManager { public UnarmedManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.UNARMED); + super(mcMMOPlayer, PrimarySkill.UNARMED); } public boolean canActivateAbility() { @@ -34,29 +34,29 @@ public class UnarmedManager extends SkillManager { } public boolean canUseIronArm() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.IRON_ARM); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.UNARMED_IRON_ARM); } public boolean canUseBerserk() { - return mcMMOPlayer.getAbilityMode(AbilityType.BERSERK) && Permissions.berserk(getPlayer()); + return mcMMOPlayer.getAbilityMode(SuperAbility.BERSERK) && Permissions.berserk(getPlayer()); } public boolean canDisarm(LivingEntity target) { - return target instanceof Player && ((Player) target).getInventory().getItemInMainHand().getType() != Material.AIR && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.DISARM); + return target instanceof Player && ((Player) target).getInventory().getItemInMainHand().getType() != Material.AIR && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.UNARMED_DISARM); } public boolean canDeflect() { Player player = getPlayer(); - return ItemUtils.isUnarmed(player.getInventory().getItemInMainHand()) && Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.DEFLECT); + return ItemUtils.isUnarmed(player.getInventory().getItemInMainHand()) && Permissions.isSubSkillEnabled(getPlayer(), SubSkill.UNARMED_DEFLECT); } public boolean canUseBlockCracker() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.BLOCK_CRACKER); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.UNARMED_BLOCK_CRACKER); } public boolean blockCrackerCheck(BlockState blockState) { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.ALWAYS_FIRES, SecondaryAbility.BLOCK_CRACKER, getPlayer(), null, 0, 0)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.ALWAYS_FIRES, SubSkill.UNARMED_BLOCK_CRACKER, getPlayer(), null, 0, 0)) { return false; } @@ -82,7 +82,7 @@ public class UnarmedManager extends SkillManager { * @param defender The defending player */ public void disarmCheck(Player defender) { - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.DISARM, getPlayer(), this.skill, getSkillLevel(), activationChance) && !hasIronGrip(defender)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.UNARMED_DISARM, getPlayer(), this.skill, getSkillLevel(), activationChance) && !hasIronGrip(defender)) { if (EventUtils.callDisarmEvent(defender).isCancelled()) { return; } @@ -102,7 +102,7 @@ public class UnarmedManager extends SkillManager { * Check for arrow deflection. */ public boolean deflectCheck() { - if (SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.DEFLECT, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.UNARMED_DEFLECT, getPlayer(), this.skill, getSkillLevel(), activationChance)) { getPlayer().sendMessage(LocaleLoader.getString("Combat.ArrowDeflect")); return true; } @@ -125,7 +125,7 @@ public class UnarmedManager extends SkillManager { * Handle the effects of the Iron Arm ability */ public double ironArm() { - if (!SkillUtils.isActivationSuccessful(SecondarySkillActivationType.ALWAYS_FIRES, SecondaryAbility.IRON_ARM, getPlayer(), null, 0, 0)) { + if (!SkillUtils.isActivationSuccessful(SubSkillActivationType.ALWAYS_FIRES, SubSkill.UNARMED_IRON_ARM, getPlayer(), null, 0, 0)) { return 0; } @@ -140,7 +140,7 @@ public class UnarmedManager extends SkillManager { * @return true if the defender was not disarmed, false otherwise */ private boolean hasIronGrip(Player defender) { - if (!Misc.isNPCEntity(defender) && Permissions.secondaryAbilityEnabled(defender, SecondaryAbility.IRON_GRIP) && SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_NO_CAP, SecondaryAbility.IRON_GRIP, getPlayer(), this.skill, getSkillLevel(), activationChance)) { + if (!Misc.isNPCEntity(defender) && Permissions.isSubSkillEnabled(defender, SubSkill.UNARMED_IRON_GRIP) && SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_NO_CAP, SubSkill.UNARMED_IRON_GRIP, getPlayer(), this.skill, getSkillLevel(), activationChance)) { defender.sendMessage(LocaleLoader.getString("Unarmed.Ability.IronGrip.Defender")); getPlayer().sendMessage(LocaleLoader.getString("Unarmed.Ability.IronGrip.Attacker")); diff --git a/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java b/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java index 5e4c28306..fce1b2725 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java +++ b/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java @@ -3,7 +3,7 @@ package com.gmail.nossr50.skills.woodcutting; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.experience.ExperienceConfig; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.BlockUtils; import com.gmail.nossr50.util.Misc; @@ -43,7 +43,7 @@ public final class Woodcutting { return mcMMO.getModManager().getBlock(blockState).getXpGain(); } - return ExperienceConfig.getInstance().getXp(SkillType.WOODCUTTING, blockState.getType()); + return ExperienceConfig.getInstance().getXp(PrimarySkill.WOODCUTTING, blockState.getType()); } /** 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 87a374a39..1ff34a4f7 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java @@ -1,11 +1,10 @@ package com.gmail.nossr50.skills.woodcutting; -import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.mods.CustomBlock; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; @@ -13,7 +12,7 @@ import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.skills.woodcutting.Woodcutting.ExperienceGainMethod; import com.gmail.nossr50.util.*; import com.gmail.nossr50.util.skills.CombatUtils; -import com.gmail.nossr50.util.skills.SecondarySkillActivationType; +import com.gmail.nossr50.util.skills.SubSkillActivationType; import com.gmail.nossr50.util.skills.SkillUtils; import org.bukkit.Material; import org.bukkit.block.Block; @@ -27,19 +26,19 @@ import java.util.Set; public class WoodcuttingManager extends SkillManager { public WoodcuttingManager(McMMOPlayer mcMMOPlayer) { - super(mcMMOPlayer, SkillType.WOODCUTTING); + super(mcMMOPlayer, PrimarySkill.WOODCUTTING); } public boolean canUseLeafBlower(ItemStack heldItem) { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.WOODCUTTING_LEAF_BLOWER) && getSkillLevel() >= Woodcutting.leafBlowerUnlockLevel && ItemUtils.isAxe(heldItem); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.WOODCUTTING_LEAF_BLOWER) && getSkillLevel() >= Woodcutting.leafBlowerUnlockLevel && ItemUtils.isAxe(heldItem); } public boolean canUseTreeFeller(ItemStack heldItem) { - return mcMMOPlayer.getAbilityMode(AbilityType.TREE_FELLER) && Permissions.treeFeller(getPlayer()) && ItemUtils.isAxe(heldItem); + return mcMMOPlayer.getAbilityMode(SuperAbility.TREE_FELLER) && Permissions.treeFeller(getPlayer()) && ItemUtils.isAxe(heldItem); } protected boolean canGetDoubleDrops() { - return Permissions.secondaryAbilityEnabled(getPlayer(), SecondaryAbility.WOODCUTTING_HARVEST) && SkillUtils.isActivationSuccessful(SecondarySkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SecondaryAbility.WOODCUTTING_HARVEST, getPlayer(), this.skill, getSkillLevel(), activationChance); + return Permissions.isSubSkillEnabled(getPlayer(), SubSkill.WOODCUTTING_DOUBLE_DROPS) && SkillUtils.isActivationSuccessful(SubSkillActivationType.RANDOM_LINEAR_100_SCALE_WITH_CAP, SubSkill.WOODCUTTING_DOUBLE_DROPS, getPlayer(), this.skill, getSkillLevel(), activationChance); } /** diff --git a/src/main/java/com/gmail/nossr50/util/BlockUtils.java b/src/main/java/com/gmail/nossr50/util/BlockUtils.java index faa682908..35bf24251 100644 --- a/src/main/java/com/gmail/nossr50/util/BlockUtils.java +++ b/src/main/java/com/gmail/nossr50/util/BlockUtils.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.util; import com.gmail.nossr50.config.experience.ExperienceConfig; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.repair.Repair; import com.gmail.nossr50.skills.salvage.Salvage; @@ -172,7 +172,7 @@ public final class BlockUtils { * @return true if the block should affected by Green Terra, false otherwise */ public static boolean affectedByGreenTerra(BlockState blockState) { - if (ExperienceConfig.getInstance().isSkillBlock(SkillType.HERBALISM, blockState.getBlockData())) { + if (ExperienceConfig.getInstance().isSkillBlock(PrimarySkill.HERBALISM, blockState.getBlockData())) { return true; } @@ -188,7 +188,7 @@ public final class BlockUtils { * otherwise */ public static Boolean affectedBySuperBreaker(BlockState blockState) { - if (ExperienceConfig.getInstance().isSkillBlock(SkillType.MINING, blockState.getBlockData())) + if (ExperienceConfig.getInstance().isSkillBlock(PrimarySkill.MINING, blockState.getBlockData())) return true; return isOre(blockState) || mcMMO.getModManager().isCustomMiningBlock(blockState); @@ -203,7 +203,7 @@ public final class BlockUtils { * otherwise */ public static boolean affectedByGigaDrillBreaker(BlockState blockState) { - if (ExperienceConfig.getInstance().isSkillBlock(SkillType.EXCAVATION, blockState.getBlockData())) + if (ExperienceConfig.getInstance().isSkillBlock(PrimarySkill.EXCAVATION, blockState.getBlockData())) return true; return mcMMO.getModManager().isCustomExcavationBlock(blockState); } @@ -216,7 +216,7 @@ public final class BlockUtils { * @return true if the block is a log, false otherwise */ public static boolean isLog(BlockState blockState) { - if (ExperienceConfig.getInstance().isSkillBlock(SkillType.WOODCUTTING, blockState.getBlockData())) + if (ExperienceConfig.getInstance().isSkillBlock(PrimarySkill.WOODCUTTING, blockState.getBlockData())) return true; return mcMMO.getModManager().isCustomLog(blockState); } diff --git a/src/main/java/com/gmail/nossr50/util/EventUtils.java b/src/main/java/com/gmail/nossr50/util/EventUtils.java index 21ed9929d..936c55bf5 100644 --- a/src/main/java/com/gmail/nossr50/util/EventUtils.java +++ b/src/main/java/com/gmail/nossr50/util/EventUtils.java @@ -3,9 +3,9 @@ package com.gmail.nossr50.util; 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.AbilityType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.events.experience.McMMOPlayerLevelChangeEvent; import com.gmail.nossr50.events.experience.McMMOPlayerLevelDownEvent; @@ -26,7 +26,7 @@ import com.gmail.nossr50.events.skills.abilities.McMMOPlayerAbilityDeactivateEve import com.gmail.nossr50.events.skills.fishing.McMMOPlayerFishingTreasureEvent; import com.gmail.nossr50.events.skills.fishing.McMMOPlayerMagicHunterEvent; import com.gmail.nossr50.events.skills.repair.McMMOPlayerRepairCheckEvent; -import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityEvent; +import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillEvent; import com.gmail.nossr50.events.skills.unarmed.McMMOPlayerDisarmEvent; import com.gmail.nossr50.events.skills.salvage.McMMOPlayerSalvageCheckEvent; import com.gmail.nossr50.locale.LocaleLoader; @@ -44,15 +44,15 @@ import java.util.HashMap; import java.util.Map; public class EventUtils { - public static McMMOPlayerAbilityActivateEvent callPlayerAbilityActivateEvent(Player player, SkillType skill) { + public static McMMOPlayerAbilityActivateEvent callPlayerAbilityActivateEvent(Player player, PrimarySkill skill) { McMMOPlayerAbilityActivateEvent event = new McMMOPlayerAbilityActivateEvent(player, skill); mcMMO.p.getServer().getPluginManager().callEvent(event); return event; } - public static SecondaryAbilityEvent callSecondaryAbilityEvent(Player player, SecondaryAbility secondaryAbility) { - SecondaryAbilityEvent event = new SecondaryAbilityEvent(player, secondaryAbility); + public static SubSkillEvent callSubSkillEvent(Player player, SubSkill subSkill) { + SubSkillEvent event = new SubSkillEvent(player, subSkill); mcMMO.p.getServer().getPluginManager().callEvent(event); return event; @@ -65,7 +65,7 @@ public class EventUtils { return event; } - public static boolean handleLevelChangeEvent(Player player, SkillType skill, int levelsChanged, float xpRemoved, boolean isLevelUp, XPGainReason xpGainReason) { + public static boolean handleLevelChangeEvent(Player player, PrimarySkill skill, int levelsChanged, float xpRemoved, boolean isLevelUp, XPGainReason xpGainReason) { McMMOPlayerLevelChangeEvent event = isLevelUp ? new McMMOPlayerLevelUpEvent(player, skill, levelsChanged, xpGainReason) : new McMMOPlayerLevelDownEvent(player, skill, levelsChanged, xpGainReason); mcMMO.p.getServer().getPluginManager().callEvent(event); @@ -152,7 +152,7 @@ public class EventUtils { return !isCancelled; } - public static boolean handleXpGainEvent(Player player, SkillType skill, float xpGained, XPGainReason xpGainReason) { + public static boolean handleXpGainEvent(Player player, PrimarySkill skill, float xpGained, XPGainReason xpGainReason) { McMMOPlayerXpGainEvent event = new McMMOPlayerXpGainEvent(player, skill, xpGained, xpGainReason); mcMMO.p.getServer().getPluginManager().callEvent(event); @@ -177,19 +177,19 @@ public class EventUtils { experienceChanged = event.getExperienceChanged(); PlayerProfile playerProfile = UserManager.getPlayer(player).getProfile(); - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - String skillName = skillType.toString(); - int playerSkillLevel = playerProfile.getSkillLevel(skillType); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + String skillName = primarySkill.toString(); + int playerSkillLevel = playerProfile.getSkillLevel(primarySkill); - playerProfile.modifySkill(skillType, playerSkillLevel - levelChanged.get(skillName)); - playerProfile.removeXp(skillType, experienceChanged.get(skillName)); + playerProfile.modifySkill(primarySkill, playerSkillLevel - levelChanged.get(skillName)); + playerProfile.removeXp(primarySkill, experienceChanged.get(skillName)); - if (playerProfile.getSkillXpLevel(skillType) < 0) { - playerProfile.setSkillXpLevel(skillType, 0); + if (playerProfile.getSkillXpLevel(primarySkill) < 0) { + playerProfile.setSkillXpLevel(primarySkill, 0); } - if (playerProfile.getSkillLevel(skillType) < 0) { - playerProfile.modifySkill(skillType, 0); + if (playerProfile.getSkillLevel(primarySkill) < 0) { + playerProfile.modifySkill(primarySkill, 0); } } } @@ -215,22 +215,22 @@ public class EventUtils { McMMOPlayer killerPlayer = UserManager.getPlayer(killer); PlayerProfile victimProfile = UserManager.getPlayer(victim).getProfile(); - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - String skillName = skillType.toString(); - int victimSkillLevel = victimProfile.getSkillLevel(skillType); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + String skillName = primarySkill.toString(); + int victimSkillLevel = victimProfile.getSkillLevel(primarySkill); - killerPlayer.addLevels(skillType, levelChangedKiller.get(skillName)); - killerPlayer.beginUnsharedXpGain(skillType, experienceChangedKiller.get(skillName), XPGainReason.VAMPIRISM); + killerPlayer.addLevels(primarySkill, levelChangedKiller.get(skillName)); + killerPlayer.beginUnsharedXpGain(primarySkill, experienceChangedKiller.get(skillName), XPGainReason.VAMPIRISM); - victimProfile.modifySkill(skillType, victimSkillLevel - levelChangedVictim.get(skillName)); - victimProfile.removeXp(skillType, experienceChangedVictim.get(skillName)); + victimProfile.modifySkill(primarySkill, victimSkillLevel - levelChangedVictim.get(skillName)); + victimProfile.removeXp(primarySkill, experienceChangedVictim.get(skillName)); - if (victimProfile.getSkillXpLevel(skillType) < 0) { - victimProfile.setSkillXpLevel(skillType, 0); + if (victimProfile.getSkillXpLevel(primarySkill) < 0) { + victimProfile.setSkillXpLevel(primarySkill, 0); } - if (victimProfile.getSkillLevel(skillType) < 0) { - victimProfile.modifySkill(skillType, 0); + if (victimProfile.getSkillLevel(primarySkill) < 0) { + victimProfile.modifySkill(primarySkill, 0); } } } @@ -238,8 +238,8 @@ public class EventUtils { return !isCancelled; } - public static McMMOPlayerAbilityDeactivateEvent callAbilityDeactivateEvent(Player player, AbilityType ability) { - McMMOPlayerAbilityDeactivateEvent event = new McMMOPlayerAbilityDeactivateEvent(player, SkillType.byAbility(ability)); + public static McMMOPlayerAbilityDeactivateEvent callAbilityDeactivateEvent(Player player, SuperAbility ability) { + McMMOPlayerAbilityDeactivateEvent event = new McMMOPlayerAbilityDeactivateEvent(player, PrimarySkill.byAbility(ability)); mcMMO.p.getServer().getPluginManager().callEvent(event); return event; diff --git a/src/main/java/com/gmail/nossr50/util/HardcoreManager.java b/src/main/java/com/gmail/nossr50/util/HardcoreManager.java index b20085a1e..e949d6aa6 100644 --- a/src/main/java/com/gmail/nossr50/util/HardcoreManager.java +++ b/src/main/java/com/gmail/nossr50/util/HardcoreManager.java @@ -2,11 +2,11 @@ package com.gmail.nossr50.util; import java.util.HashMap; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.player.UserManager; @@ -23,27 +23,27 @@ public final class HardcoreManager { HashMap levelChanged = new HashMap(); HashMap experienceChanged = new HashMap(); - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - if (!skillType.getHardcoreStatLossEnabled()) { - levelChanged.put(skillType.toString(), 0); - experienceChanged.put(skillType.toString(), 0F); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + if (!primarySkill.getHardcoreStatLossEnabled()) { + levelChanged.put(primarySkill.toString(), 0); + experienceChanged.put(primarySkill.toString(), 0F); continue; } - int playerSkillLevel = playerProfile.getSkillLevel(skillType); - int playerSkillXpLevel = playerProfile.getSkillXpLevel(skillType); + int playerSkillLevel = playerProfile.getSkillLevel(primarySkill); + int playerSkillXpLevel = playerProfile.getSkillXpLevel(primarySkill); if (playerSkillLevel <= 0 || playerSkillLevel <= levelThreshold) { - levelChanged.put(skillType.toString(), 0); - experienceChanged.put(skillType.toString(), 0F); + levelChanged.put(primarySkill.toString(), 0); + experienceChanged.put(primarySkill.toString(), 0F); continue; } double statsLost = playerSkillLevel * (statLossPercentage * 0.01D); int levelsLost = (int) statsLost; int xpLost = (int) Math.floor(playerSkillXpLevel * (statsLost - levelsLost)); - levelChanged.put(skillType.toString(), levelsLost); - experienceChanged.put(skillType.toString(), (float) xpLost); + levelChanged.put(primarySkill.toString(), levelsLost); + experienceChanged.put(primarySkill.toString(), (float) xpLost); totalLevelsLost += levelsLost; } @@ -66,29 +66,29 @@ public final class HardcoreManager { HashMap levelChanged = new HashMap(); HashMap experienceChanged = new HashMap(); - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - if (!skillType.getHardcoreVampirismEnabled()) { - levelChanged.put(skillType.toString(), 0); - experienceChanged.put(skillType.toString(), 0F); + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + if (!primarySkill.getHardcoreVampirismEnabled()) { + levelChanged.put(primarySkill.toString(), 0); + experienceChanged.put(primarySkill.toString(), 0F); continue; } - int killerSkillLevel = killerProfile.getSkillLevel(skillType); - int victimSkillLevel = victimProfile.getSkillLevel(skillType); + int killerSkillLevel = killerProfile.getSkillLevel(primarySkill); + int victimSkillLevel = victimProfile.getSkillLevel(primarySkill); if (victimSkillLevel <= 0 || victimSkillLevel < killerSkillLevel / 2 || victimSkillLevel <= levelThreshold) { - levelChanged.put(skillType.toString(), 0); - experienceChanged.put(skillType.toString(), 0F); + levelChanged.put(primarySkill.toString(), 0); + experienceChanged.put(primarySkill.toString(), 0F); continue; } - int victimSkillXpLevel = victimProfile.getSkillXpLevel(skillType); + int victimSkillXpLevel = victimProfile.getSkillXpLevel(primarySkill); double statsStolen = victimSkillLevel * (vampirismStatLeechPercentage * 0.01D); int levelsStolen = (int) statsStolen; int xpStolen = (int) Math.floor(victimSkillXpLevel * (statsStolen - levelsStolen)); - levelChanged.put(skillType.toString(), levelsStolen); - experienceChanged.put(skillType.toString(), (float) xpStolen); + levelChanged.put(primarySkill.toString(), levelsStolen); + experienceChanged.put(primarySkill.toString(), (float) xpStolen); totalLevelsStolen += levelsStolen; } @@ -115,8 +115,8 @@ public final class HardcoreManager { public static boolean isStatLossEnabled() { boolean enabled = false; - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - if (skillType.getHardcoreStatLossEnabled()) { + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + if (primarySkill.getHardcoreStatLossEnabled()) { enabled = true; break; } @@ -133,8 +133,8 @@ public final class HardcoreManager { public static boolean isVampirismEnabled() { boolean enabled = false; - for (SkillType skillType : SkillType.NON_CHILD_SKILLS) { - if (skillType.getHardcoreVampirismEnabled()) { + for (PrimarySkill primarySkill : PrimarySkill.NON_CHILD_SKILLS) { + if (primarySkill.getHardcoreVampirismEnabled()) { enabled = true; break; } diff --git a/src/main/java/com/gmail/nossr50/util/HolidayManager.java b/src/main/java/com/gmail/nossr50/util/HolidayManager.java index 1b40c7f59..5e97fc463 100644 --- a/src/main/java/com/gmail/nossr50/util/HolidayManager.java +++ b/src/main/java/com/gmail/nossr50/util/HolidayManager.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.util; import com.gmail.nossr50.commands.skills.AprilCommand; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.player.UserManager; import com.gmail.nossr50.util.skills.ParticleEffectUtils; @@ -356,7 +356,7 @@ public final class HolidayManager { } public void levelUpApril(Player player, FakeSkillType fakeSkillType) { - int levelTotal = Misc.getRandom().nextInt(1 + UserManager.getPlayer(player).getSkillLevel(SkillType.MINING)) + 1; + int levelTotal = Misc.getRandom().nextInt(1 + UserManager.getPlayer(player).getSkillLevel(PrimarySkill.MINING)) + 1; player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, Misc.LEVELUP_VOLUME, Misc.LEVELUP_PITCH); player.sendMessage(ChatColor.YELLOW + StringUtils.getCapitalized(fakeSkillType.toString()) + " skill increased by 1. Total (" + levelTotal + ")"); ParticleEffectUtils.fireworkParticleShower(player, ALL_COLORS.get(Misc.getRandom().nextInt(ALL_COLORS.size()))); diff --git a/src/main/java/com/gmail/nossr50/util/Motd.java b/src/main/java/com/gmail/nossr50/util/Motd.java index 3ede5b77b..7ac850207 100644 --- a/src/main/java/com/gmail/nossr50/util/Motd.java +++ b/src/main/java/com/gmail/nossr50/util/Motd.java @@ -2,12 +2,12 @@ package com.gmail.nossr50.util; import java.text.DecimalFormat; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import org.bukkit.plugin.PluginDescriptionFile; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.skills.PerksUtils; @@ -85,7 +85,7 @@ public final class Motd { * @param player Target player */ public static void displayXpPerks(Player player) { - for (SkillType skill : SkillType.values()) { + for (PrimarySkill skill : PrimarySkill.values()) { if (PerksUtils.handleXpPerks(player, 1, skill) > 1) { player.sendMessage(PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.XP.Name"), LocaleLoader.getString("Perks.XP.Desc"))); return; @@ -126,7 +126,7 @@ public final class Motd { * @param player Target player */ public static void displayLuckyPerks(Player player) { - for (SkillType skill : SkillType.values()) { + for (PrimarySkill skill : PrimarySkill.values()) { if (Permissions.lucky(player, skill)) { player.sendMessage(PERK_PREFIX + LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Perks.Lucky.Name"), LocaleLoader.getString("Perks.Lucky.Desc.Login"))); return; diff --git a/src/main/java/com/gmail/nossr50/util/Permissions.java b/src/main/java/com/gmail/nossr50/util/Permissions.java index 3734a6843..0217a29f0 100644 --- a/src/main/java/com/gmail/nossr50/util/Permissions.java +++ b/src/main/java/com/gmail/nossr50/util/Permissions.java @@ -1,5 +1,6 @@ package com.gmail.nossr50.util; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.Material; import org.bukkit.Server; import org.bukkit.World; @@ -13,8 +14,7 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.commands.party.PartySubcommandType; import com.gmail.nossr50.datatypes.skills.ItemType; import com.gmail.nossr50.datatypes.skills.MaterialType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; public final class Permissions { private Permissions() {} @@ -77,17 +77,17 @@ public final class Permissions { public static boolean mcrefresh(Permissible permissible) { return (permissible.hasPermission("mcmmo.commands.mcrefresh")); } public static boolean mcrefreshOthers(Permissible permissible) { return (permissible.hasPermission("mcmmo.commands.mcrefresh.others")); } - public static boolean mctop(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.commands.mctop." + skill.toString().toLowerCase()); } + public static boolean mctop(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.commands.mctop." + skill.toString().toLowerCase()); } public static boolean mmoedit(Permissible permissible) { return permissible.hasPermission("mcmmo.commands.mmoedit"); } public static boolean mmoeditOthers(Permissible permissible) { return permissible.hasPermission("mcmmo.commands.mmoedit.others"); } public static boolean skillreset(Permissible permissible) { return permissible.hasPermission("mcmmo.commands.skillreset"); } - public static boolean skillreset(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.commands.skillreset." + skill.toString().toLowerCase()); } + public static boolean skillreset(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.commands.skillreset." + skill.toString().toLowerCase()); } public static boolean skillresetOthers(Permissible permissible) { return permissible.hasPermission("mcmmo.commands.skillreset.others"); } - public static boolean skillresetOthers(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.commands.skillreset.others." + skill.toString().toLowerCase()); } + public static boolean skillresetOthers(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.commands.skillreset.others." + skill.toString().toLowerCase()); } - public static boolean xplock(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.commands.xplock." + skill.toString().toLowerCase()); } + public static boolean xplock(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.commands.xplock." + skill.toString().toLowerCase()); } public static boolean xprateSet(Permissible permissible) { return permissible.hasPermission("mcmmo.commands.xprate.set"); } public static boolean xprateReset(Permissible permissible) { return permissible.hasPermission("mcmmo.commands.xprate.reset"); } @@ -103,16 +103,16 @@ public final class Permissions { * PERKS */ - public static boolean lucky(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.lucky." + skill.toString().toLowerCase()); } + public static boolean lucky(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.perks.lucky." + skill.toString().toLowerCase()); } /* XP PERKS */ - public static boolean quadrupleXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.quadruple." + skill.toString().toLowerCase()); } - public static boolean tripleXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.triple." + skill.toString().toLowerCase()); } - public static boolean doubleAndOneHalfXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.150percentboost." + skill.toString().toLowerCase()); } - public static boolean doubleXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.double." + skill.toString().toLowerCase()); } - public static boolean oneAndOneHalfXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.50percentboost." + skill.toString().toLowerCase()); } - public static boolean oneAndOneTenthXp(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.10percentboost." + skill.toString().toLowerCase()); } - public static boolean customXpBoost(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.perks.xp.customboost." + skill.toString().toLowerCase()); } + public static boolean quadrupleXp(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.perks.xp.quadruple." + skill.toString().toLowerCase()); } + public static boolean tripleXp(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.perks.xp.triple." + skill.toString().toLowerCase()); } + public static boolean doubleAndOneHalfXp(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.perks.xp.150percentboost." + skill.toString().toLowerCase()); } + public static boolean doubleXp(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.perks.xp.double." + skill.toString().toLowerCase()); } + public static boolean oneAndOneHalfXp(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.perks.xp.50percentboost." + skill.toString().toLowerCase()); } + public static boolean oneAndOneTenthXp(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.perks.xp.10percentboost." + skill.toString().toLowerCase()); } + public static boolean customXpBoost(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.perks.xp.customboost." + skill.toString().toLowerCase()); } /* ACTIVATION PERKS */ public static boolean twelveSecondActivationBoost(Permissible permissible) { return permissible.hasPermission("mcmmo.perks.activationtime.twelveseconds"); } @@ -128,10 +128,10 @@ public final class Permissions { * SKILLS */ - public static boolean skillEnabled(Permissible permissible, SkillType skill) {return permissible.hasPermission("mcmmo.skills." + skill.toString().toLowerCase()); } - public static boolean vanillaXpBoost(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.ability." + skill.toString().toLowerCase() + ".vanillaxpboost"); } - public static boolean secondaryAbilityEnabled(Permissible permissible, SecondaryAbility skillAbility) { return permissible.hasPermission("mcmmo.ability." + SkillType.bySecondaryAbility(skillAbility).toString().toLowerCase() + "." + StringUtils.getPrettySecondaryAbilityString(skillAbility).replace(" ", "").toLowerCase()); } - public static boolean bonusDamage(Permissible permissible, SkillType skill) { return permissible.hasPermission("mcmmo.ability." + skill.toString().toLowerCase() + ".bonusdamage"); } + public static boolean skillEnabled(Permissible permissible, PrimarySkill skill) {return permissible.hasPermission("mcmmo.skills." + skill.toString().toLowerCase()); } + public static boolean vanillaXpBoost(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.ability." + skill.toString().toLowerCase() + ".vanillaxpboost"); } + public static boolean isSubSkillEnabled(Permissible permissible, SubSkill subSkill) { return permissible.hasPermission(subSkill.getPermissionNodeAddress()); } + public static boolean bonusDamage(Permissible permissible, PrimarySkill skill) { return permissible.hasPermission("mcmmo.ability." + skill.toString().toLowerCase() + ".bonusdamage"); } /* ACROBATICS */ public static boolean dodge(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.acrobatics.dodge"); } diff --git a/src/main/java/com/gmail/nossr50/util/StringUtils.java b/src/main/java/com/gmail/nossr50/util/StringUtils.java index 08c5face1..7ef59e01b 100644 --- a/src/main/java/com/gmail/nossr50/util/StringUtils.java +++ b/src/main/java/com/gmail/nossr50/util/StringUtils.java @@ -1,8 +1,8 @@ package com.gmail.nossr50.util; import com.gmail.nossr50.datatypes.party.PartyFeature; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.SubSkill; import org.bukkit.Material; import org.bukkit.TreeSpecies; import org.bukkit.block.data.Ageable; @@ -23,19 +23,19 @@ public class StringUtils { } public static String getPrettyItemString(Material material) { - return createPrettyEnumString(material.toString()); + return createPrettyString(material.toString()); } public static String getPrettyEntityTypeString(EntityType entity) { - return createPrettyEnumString(entity.toString()); + return createPrettyString(entity.toString()); } - public static String getPrettyAbilityString(AbilityType ability) { - return createPrettyEnumString(ability.toString()); + public static String getPrettyAbilityString(SuperAbility ability) { + return createPrettyString(ability.toString()); } public static String getPrettyTreeSpeciesString(TreeSpecies species) { - return createPrettyEnumString(species.toString()); + return createPrettyString(species.toString()); } public static String getWildcardConfigBlockDataString(BlockData data) { @@ -79,28 +79,11 @@ public class StringUtils { return StringUtils.getPrettyItemString(data).replace(" ", "_"); } - public static String getPrettySecondaryAbilityString(SecondaryAbility secondaryAbility) { - switch (secondaryAbility) { - case HERBALISM_DOUBLE_DROPS : - case MINING_DOUBLE_DROPS : - case WOODCUTTING_HARVEST: - return "Double Drops"; - case FISHING_TREASURE_HUNTER : - case EXCAVATION_TREASURE_HUNTER : - return "Treasure Hunter"; - case GREEN_THUMB_BLOCK : - case GREEN_THUMB_PLANT : - return "Green Thumb"; - default : - return createPrettyEnumString(secondaryAbility.toString()); - } - } - public static String getPrettyPartyFeatureString(PartyFeature partyFeature) { - return createPrettyEnumString(partyFeature.toString()); + return createPrettyString(partyFeature.toString()); } - private static String createPrettyEnumString(String baseString) { + private static String createPrettyString(String baseString) { String[] substrings = baseString.split("_"); String prettyString = ""; int size = 1; diff --git a/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java b/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java index 9fe14dd6a..1018357b1 100644 --- a/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java +++ b/src/main/java/com/gmail/nossr50/util/commands/CommandRegistrationManager.java @@ -52,7 +52,7 @@ import com.gmail.nossr50.commands.skills.TamingCommand; import com.gmail.nossr50.commands.skills.UnarmedCommand; import com.gmail.nossr50.commands.skills.WoodcuttingCommand; import com.gmail.nossr50.config.Config; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.StringUtils; @@ -62,7 +62,7 @@ public final class CommandRegistrationManager { private static String permissionsMessage = LocaleLoader.getString("mcMMO.NoPermission"); private static void registerSkillCommands() { - for (SkillType skill : SkillType.values()) { + for (PrimarySkill skill : PrimarySkill.values()) { String commandName = skill.toString().toLowerCase(); String localizedName = skill.getName().toLowerCase(); diff --git a/src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java b/src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java index 41d534ceb..359bcc73a 100644 --- a/src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java +++ b/src/main/java/com/gmail/nossr50/util/commands/CommandUtils.java @@ -3,6 +3,7 @@ package com.gmail.nossr50.util.commands; import java.util.ArrayList; import java.util.List; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -11,7 +12,6 @@ import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.StringUtils; @@ -26,7 +26,7 @@ public final class CommandUtils { private CommandUtils() {} - public static boolean isChildSkill(CommandSender sender, SkillType skill) { + public static boolean isChildSkill(CommandSender sender, PrimarySkill skill) { if (skill == null || !skill.isChildSkill()) { return false; } @@ -181,7 +181,7 @@ public final class CommandUtils { * @param display The sender to display stats to */ public static void printGatheringSkills(Player inspect, CommandSender display) { - printGroupedSkillData(inspect, display, LocaleLoader.getString("Stats.Header.Gathering"), SkillType.GATHERING_SKILLS); + printGroupedSkillData(inspect, display, LocaleLoader.getString("Stats.Header.Gathering"), PrimarySkill.GATHERING_SKILLS); } public static void printGatheringSkills(Player player) { @@ -195,7 +195,7 @@ public final class CommandUtils { * @param display The sender to display stats to */ public static void printCombatSkills(Player inspect, CommandSender display) { - printGroupedSkillData(inspect, display, LocaleLoader.getString("Stats.Header.Combat"), SkillType.COMBAT_SKILLS); + printGroupedSkillData(inspect, display, LocaleLoader.getString("Stats.Header.Combat"), PrimarySkill.COMBAT_SKILLS); } public static void printCombatSkills(Player player) { @@ -209,14 +209,14 @@ public final class CommandUtils { * @param display The sender to display stats to */ public static void printMiscSkills(Player inspect, CommandSender display) { - printGroupedSkillData(inspect, display, LocaleLoader.getString("Stats.Header.Misc"), SkillType.MISC_SKILLS); + printGroupedSkillData(inspect, display, LocaleLoader.getString("Stats.Header.Misc"), PrimarySkill.MISC_SKILLS); } public static void printMiscSkills(Player player) { printMiscSkills(player, player); } - public static String displaySkill(PlayerProfile profile, SkillType skill) { + public static String displaySkill(PlayerProfile profile, PrimarySkill skill) { if (skill.isChildSkill()) { return LocaleLoader.getString("Skills.ChildStats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener") + " ", profile.getSkillLevel(skill)); } @@ -224,13 +224,13 @@ public final class CommandUtils { return LocaleLoader.getString("Skills.Stats", LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".Listener") + " ", profile.getSkillLevel(skill), profile.getSkillXpLevel(skill), profile.getXpToLevel(skill)); } - private static void printGroupedSkillData(Player inspect, CommandSender display, String header, List skillGroup) { + private static void printGroupedSkillData(Player inspect, CommandSender display, String header, List skillGroup) { PlayerProfile profile = UserManager.getPlayer(inspect).getProfile(); List displayData = new ArrayList(); displayData.add(header); - for (SkillType skill : skillGroup) { + for (PrimarySkill skill : skillGroup) { if (skill.getPermissions(inspect)) { displayData.add(displaySkill(profile, skill)); } diff --git a/src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java b/src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java index c3e57395d..c28e04941 100644 --- a/src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java +++ b/src/main/java/com/gmail/nossr50/util/experience/FormulaManager.java @@ -10,7 +10,7 @@ import com.gmail.nossr50.mcMMO; 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.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; public class FormulaManager { private static File formulaFile = new File(mcMMO.getFlatFileDirectory() + "formula.yml"); @@ -68,15 +68,15 @@ public class FormulaManager { * Calculate how many levels a player should have using * the new formula type. * - * @param skillType skill where new levels and experience are calculated for + * @param primarySkill skill where new levels and experience are calculated for * @param experience total amount of experience * @param formulaType The new {@link FormulaType} * @return the amount of levels and experience */ - public int[] calculateNewLevel(SkillType skillType, int experience, FormulaType formulaType) { + public int[] calculateNewLevel(PrimarySkill primarySkill, int experience, FormulaType formulaType) { int newLevel = 0; int remainder = 0; - int maxLevel = Config.getInstance().getLevelCap(skillType); + int maxLevel = Config.getInstance().getLevelCap(primarySkill); while (experience > 0 && newLevel < maxLevel) { int experienceToNextLevel = getCachedXpToLevel(newLevel, formulaType); diff --git a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java index d2d0b582f..29260f0f3 100644 --- a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java +++ b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java @@ -6,6 +6,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SuperAbility; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.scoreboard.DisplaySlot; @@ -16,8 +18,6 @@ import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.database.PlayerStat; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.player.UserManager; @@ -50,9 +50,9 @@ public class ScoreboardManager { static final String LABEL_ABILITY_COOLDOWN = LocaleLoader.getString("Scoreboard.Misc.Cooldown"); static final String LABEL_OVERALL = LocaleLoader.getString("Scoreboard.Misc.Overall"); - static final Map skillLabels; - static final Map abilityLabelsColored; - static final Map abilityLabelsSkill; + static final Map skillLabels; + static final Map abilityLabelsColored; + static final Map abilityLabelsSkill; /* * Initializes the static properties of this class @@ -61,9 +61,9 @@ public class ScoreboardManager { /* * We need immutable objects for our Scoreboard's labels */ - ImmutableMap.Builder skillLabelBuilder = ImmutableMap.builder(); - ImmutableMap.Builder abilityLabelBuilder = ImmutableMap.builder(); - ImmutableMap.Builder abilityLabelSkillBuilder = ImmutableMap.builder(); + ImmutableMap.Builder skillLabelBuilder = ImmutableMap.builder(); + ImmutableMap.Builder abilityLabelBuilder = ImmutableMap.builder(); + ImmutableMap.Builder abilityLabelSkillBuilder = ImmutableMap.builder(); /* * Builds the labels for our ScoreBoards @@ -90,15 +90,15 @@ public class ScoreboardManager { Collections.shuffle(colors, Misc.getRandom()); int i = 0; - for (SkillType type : SkillType.values()) { + for (PrimarySkill type : PrimarySkill.values()) { // Include child skills skillLabelBuilder.put(type, getShortenedName(colors.get(i) + type.getName(), false)); if (type.getAbility() != null) { abilityLabelBuilder.put(type.getAbility(), getShortenedName(colors.get(i) + type.getAbility().getName())); - if (type == SkillType.MINING) { - abilityLabelBuilder.put(AbilityType.BLAST_MINING, getShortenedName(colors.get(i) + AbilityType.BLAST_MINING.getName())); + if (type == PrimarySkill.MINING) { + abilityLabelBuilder.put(SuperAbility.BLAST_MINING, getShortenedName(colors.get(i) + SuperAbility.BLAST_MINING.getName())); } } @@ -112,22 +112,22 @@ public class ScoreboardManager { * Stylizes the scoreboard using our normal color scheme */ else { - for (SkillType type : SkillType.values()) { + for (PrimarySkill type : PrimarySkill.values()) { // Include child skills skillLabelBuilder.put(type, getShortenedName(ChatColor.GREEN + type.getName())); if (type.getAbility() != null) { abilityLabelBuilder.put(type.getAbility(), formatAbility(type.getAbility().getName())); - if (type == SkillType.MINING) { - abilityLabelBuilder.put(AbilityType.BLAST_MINING, formatAbility(AbilityType.BLAST_MINING.getName())); + if (type == PrimarySkill.MINING) { + abilityLabelBuilder.put(SuperAbility.BLAST_MINING, formatAbility(SuperAbility.BLAST_MINING.getName())); } } } } - for (AbilityType type : AbilityType.values()) { - abilityLabelSkillBuilder.put(type, formatAbility((type == AbilityType.BLAST_MINING ? ChatColor.BLUE : ChatColor.AQUA), type.getName())); + for (SuperAbility type : SuperAbility.values()) { + abilityLabelSkillBuilder.put(type, formatAbility((type == SuperAbility.BLAST_MINING ? ChatColor.BLUE : ChatColor.AQUA), type.getName())); } skillLabels = skillLabelBuilder.build(); @@ -207,7 +207,7 @@ public class ScoreboardManager { } // Called by internal level-up event listener - public static void handleLevelUp(Player player, SkillType skill) { + public static void handleLevelUp(Player player, PrimarySkill skill) { // Selfboards ScoreboardWrapper selfboardWrapper = PLAYER_SCOREBOARDS.get(player.getName()); @@ -234,7 +234,7 @@ public class ScoreboardManager { } // Called by internal xp event listener - public static void handleXp(Player player, SkillType skill) { + public static void handleXp(Player player, PrimarySkill skill) { // Selfboards ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); @@ -244,7 +244,7 @@ public class ScoreboardManager { } // Called by internal ability event listeners - public static void cooldownUpdate(Player player, SkillType skill) { + public static void cooldownUpdate(Player player, PrimarySkill skill) { // Selfboards ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); @@ -255,7 +255,7 @@ public class ScoreboardManager { // **** Setup methods **** // - public static void enablePlayerSkillScoreboard(Player player, SkillType skill) { + public static void enablePlayerSkillScoreboard(Player player, PrimarySkill skill) { ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); wrapper.setOldScoreboard(); @@ -264,7 +264,7 @@ public class ScoreboardManager { changeScoreboard(wrapper, Config.getInstance().getSkillScoreboardTime()); } - public static void enablePlayerSkillLevelUpScoreboard(Player player, SkillType skill) { + public static void enablePlayerSkillLevelUpScoreboard(Player player, PrimarySkill skill) { ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); // Do NOT run if already shown @@ -305,7 +305,7 @@ public class ScoreboardManager { changeScoreboard(wrapper, Config.getInstance().getCooldownScoreboardTime()); } - public static void showPlayerRankScoreboard(Player player, Map rank) { + public static void showPlayerRankScoreboard(Player player, Map rank) { ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); wrapper.setOldScoreboard(); @@ -315,7 +315,7 @@ public class ScoreboardManager { changeScoreboard(wrapper, Config.getInstance().getRankScoreboardTime()); } - public static void showPlayerRankScoreboardOthers(Player player, String targetName, Map rank) { + public static void showPlayerRankScoreboardOthers(Player player, String targetName, Map rank) { ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); wrapper.setOldScoreboard(); @@ -325,7 +325,7 @@ public class ScoreboardManager { changeScoreboard(wrapper, Config.getInstance().getRankScoreboardTime()); } - public static void showTopScoreboard(Player player, SkillType skill, int pageNumber, List stats) { + public static void showTopScoreboard(Player player, PrimarySkill skill, int pageNumber, List stats) { ScoreboardWrapper wrapper = PLAYER_SCOREBOARDS.get(player.getName()); wrapper.setOldScoreboard(); diff --git a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java index a5f0b19b5..9348f0f84 100644 --- a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java +++ b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java @@ -17,8 +17,8 @@ import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.database.PlayerStat; import com.gmail.nossr50.datatypes.player.McMMOPlayer; import com.gmail.nossr50.datatypes.player.PlayerProfile; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.skills.child.FamilyTree; import com.gmail.nossr50.util.Misc; @@ -42,7 +42,7 @@ public class ScoreboardWrapper { // Parameter variables (May be null / invalid) private Scoreboard oldBoard = null; public String targetPlayer = null; - public SkillType targetSkill = null; + public PrimarySkill targetSkill = null; private PlayerProfile targetProfile = null; public int leaderboardPage = -1; @@ -277,7 +277,7 @@ public class ScoreboardWrapper { loadObjective(""); } - public void setTypeSkill(SkillType skill) { + public void setTypeSkill(PrimarySkill skill) { this.sidebarType = SidebarType.SKILL_BOARD; targetSkill = skill; @@ -356,7 +356,7 @@ public class ScoreboardWrapper { loadObjective(String.format("%s (%2d - %2d)", ScoreboardManager.POWER_LEVEL, startPosition, endPosition)); } - public void setTypeTop(SkillType skill, int page) { + public void setTypeTop(PrimarySkill skill, int page) { this.sidebarType = SidebarType.TOP_BOARD; leaderboardPage = page; targetSkill = skill; @@ -424,7 +424,7 @@ public class ScoreboardWrapper { sidebarObjective.getScore(ScoreboardManager.LABEL_REMAINING_XP).setScore(mcMMOPlayer.getXpToLevel(targetSkill) - currentXP); } else { - for (SkillType parentSkill : FamilyTree.getParents(targetSkill)) { + for (PrimarySkill parentSkill : FamilyTree.getParents(targetSkill)) { sidebarObjective.getScore(ScoreboardManager.skillLabels.get(parentSkill)).setScore(mcMMOPlayer.getSkillLevel(parentSkill)); } } @@ -434,12 +434,12 @@ public class ScoreboardWrapper { if (targetSkill.getAbility() != null) { boolean stopUpdating; - if (targetSkill == SkillType.MINING) { + if (targetSkill == PrimarySkill.MINING) { // Special-Case: Mining has two abilities, both with cooldowns - Score cooldownSB = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(AbilityType.SUPER_BREAKER)); - Score cooldownBM = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(AbilityType.BLAST_MINING)); - int secondsSB = Math.max(mcMMOPlayer.calculateTimeRemaining(AbilityType.SUPER_BREAKER), 0); - int secondsBM = Math.max(mcMMOPlayer.calculateTimeRemaining(AbilityType.BLAST_MINING), 0); + Score cooldownSB = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(SuperAbility.SUPER_BREAKER)); + Score cooldownBM = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(SuperAbility.BLAST_MINING)); + int secondsSB = Math.max(mcMMOPlayer.calculateTimeRemaining(SuperAbility.SUPER_BREAKER), 0); + int secondsBM = Math.max(mcMMOPlayer.calculateTimeRemaining(SuperAbility.BLAST_MINING), 0); cooldownSB.setScore(secondsSB); cooldownBM.setScore(secondsBM); @@ -447,7 +447,7 @@ public class ScoreboardWrapper { stopUpdating = (secondsSB == 0 && secondsBM == 0); } else { - AbilityType ability = targetSkill.getAbility(); + SuperAbility ability = targetSkill.getAbility(); Score cooldown = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(ability)); int seconds = Math.max(mcMMOPlayer.calculateTimeRemaining(ability), 0); @@ -468,7 +468,7 @@ public class ScoreboardWrapper { case COOLDOWNS_BOARD: boolean anyCooldownsActive = false; - for (AbilityType ability : AbilityType.values()) { + for (SuperAbility ability : SuperAbility.values()) { int seconds = Math.max(mcMMOPlayer.calculateTimeRemaining(ability), 0); if (seconds != 0) { @@ -502,7 +502,7 @@ public class ScoreboardWrapper { // Calculate power level here int powerLevel = 0; - for (SkillType skill : SkillType.NON_CHILD_SKILLS) { // Don't include child skills, makes the list too long + for (PrimarySkill skill : PrimarySkill.NON_CHILD_SKILLS) { // Don't include child skills, makes the list too long int level = newProfile.getSkillLevel(skill); powerLevel += level; @@ -521,7 +521,7 @@ public class ScoreboardWrapper { case RANK_BOARD: case TOP_BOARD: /* - * @see #acceptRankData(Map rank) + * @see #acceptRankData(Map rank) * @see #acceptLeaderboardData(List stats) */ break; @@ -531,11 +531,11 @@ public class ScoreboardWrapper { } } - public void acceptRankData(Map rankData) { + public void acceptRankData(Map rankData) { Integer rank; Player player = mcMMO.p.getServer().getPlayerExact(playerName); - for (SkillType skill : SkillType.NON_CHILD_SKILLS) { + for (PrimarySkill skill : PrimarySkill.NON_CHILD_SKILLS) { if (!skill.getPermissions(player)) { continue; } 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 230481451..8769ce0d4 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/CombatUtils.java @@ -4,6 +4,7 @@ import java.util.EnumMap; import java.util.HashMap; import java.util.Map; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.AnimalTamer; @@ -11,12 +12,10 @@ import org.bukkit.entity.Animals; import org.bukkit.entity.Arrow; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; -import org.bukkit.entity.Guardian; import org.bukkit.entity.IronGolem; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Monster; import org.bukkit.entity.Player; -import org.bukkit.entity.Skeleton; import org.bukkit.entity.Tameable; import org.bukkit.entity.Wolf; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -29,7 +28,6 @@ import org.bukkit.projectiles.ProjectileSource; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.datatypes.skills.XPGainReason; import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent; import com.gmail.nossr50.events.fake.FakeEntityDamageEvent; @@ -66,7 +64,7 @@ public final class CombatUtils { Map modifiers = getModifiers(event); if (swordsManager.canActivateAbility()) { - mcMMOPlayer.checkAbilityActivation(SkillType.SWORDS); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.SWORDS); } if (swordsManager.canUseBleed()) { @@ -77,7 +75,7 @@ public final class CombatUtils { swordsManager.serratedStrikes(target, initialDamage, modifiers); } - startGainXp(mcMMOPlayer, target, SkillType.SWORDS); + startGainXp(mcMMOPlayer, target, PrimarySkill.SWORDS); } private static void processAxeCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event) { @@ -93,7 +91,7 @@ public final class CombatUtils { AxesManager axesManager = mcMMOPlayer.getAxesManager(); if (axesManager.canActivateAbility()) { - mcMMOPlayer.checkAbilityActivation(SkillType.AXES); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.AXES); } if (axesManager.canUseAxeMastery()) { @@ -116,7 +114,7 @@ public final class CombatUtils { } applyScaledModifiers(initialDamage, finalDamage, event); - startGainXp(mcMMOPlayer, target, SkillType.AXES); + startGainXp(mcMMOPlayer, target, PrimarySkill.AXES); } private static void processUnarmedCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event) { @@ -131,7 +129,7 @@ public final class CombatUtils { UnarmedManager unarmedManager = mcMMOPlayer.getUnarmedManager(); if (unarmedManager.canActivateAbility()) { - mcMMOPlayer.checkAbilityActivation(SkillType.UNARMED); + mcMMOPlayer.checkAbilityActivation(PrimarySkill.UNARMED); } if (unarmedManager.canUseIronArm()) { @@ -147,7 +145,7 @@ public final class CombatUtils { } applyScaledModifiers(initialDamage, finalDamage, event); - startGainXp(mcMMOPlayer, target, SkillType.UNARMED); + startGainXp(mcMMOPlayer, target, PrimarySkill.UNARMED); } private static void processTamingCombat(LivingEntity target, Player master, Wolf wolf, EntityDamageByEntityEvent event) { @@ -172,7 +170,7 @@ public final class CombatUtils { } applyScaledModifiers(initialDamage, finalDamage, event); - startGainXp(mcMMOPlayer, target, SkillType.TAMING); + startGainXp(mcMMOPlayer, target, PrimarySkill.TAMING); } private static void processArcheryCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Arrow arrow) { @@ -182,7 +180,7 @@ public final class CombatUtils { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); ArcheryManager archeryManager = mcMMOPlayer.getArcheryManager(); - if (target instanceof Player && SkillType.UNARMED.getPVPEnabled()) { + if (target instanceof Player && PrimarySkill.UNARMED.getPVPEnabled()) { UnarmedManager unarmedManager = UserManager.getPlayer((Player) target).getUnarmedManager(); if (unarmedManager.canDeflect()) { @@ -209,7 +207,7 @@ public final class CombatUtils { archeryManager.distanceXpBonus(target, arrow); applyScaledModifiers(initialDamage, finalDamage, event); - startGainXp(mcMMOPlayer, target, SkillType.ARCHERY, arrow.getMetadata(mcMMO.bowForceKey).get(0).asDouble()); + startGainXp(mcMMOPlayer, target, PrimarySkill.ARCHERY, arrow.getMetadata(mcMMO.bowForceKey).get(0).asDouble()); } /** @@ -247,29 +245,29 @@ public final class CombatUtils { } if (ItemUtils.isSword(heldItem)) { - if (!SkillType.SWORDS.shouldProcess(target)) { + if (!PrimarySkill.SWORDS.shouldProcess(target)) { return; } - if (SkillType.SWORDS.getPermissions(player)) { + if (PrimarySkill.SWORDS.getPermissions(player)) { processSwordCombat(target, player, event); } } else if (ItemUtils.isAxe(heldItem)) { - if (!SkillType.AXES.shouldProcess(target)) { + if (!PrimarySkill.AXES.shouldProcess(target)) { return; } - if (SkillType.AXES.getPermissions(player)) { + if (PrimarySkill.AXES.getPermissions(player)) { processAxeCombat(target, player, event); } } else if (ItemUtils.isUnarmed(heldItem)) { - if (!SkillType.UNARMED.shouldProcess(target)) { + if (!PrimarySkill.UNARMED.shouldProcess(target)) { return; } - if (SkillType.UNARMED.getPermissions(player)) { + if (PrimarySkill.UNARMED.getPermissions(player)) { processUnarmedCombat(target, player, event); } } @@ -279,10 +277,10 @@ public final class CombatUtils { Wolf wolf = (Wolf) damager; AnimalTamer tamer = wolf.getOwner(); - if (tamer != null && tamer instanceof Player && SkillType.TAMING.shouldProcess(target)) { + if (tamer != null && tamer instanceof Player && PrimarySkill.TAMING.shouldProcess(target)) { Player master = (Player) tamer; - if (!Misc.isNPCEntity(master) && SkillType.TAMING.getPermissions(master)) { + if (!Misc.isNPCEntity(master) && PrimarySkill.TAMING.getPermissions(master)) { processTamingCombat(target, master, wolf, event); } } @@ -291,14 +289,14 @@ public final class CombatUtils { Arrow arrow = (Arrow) damager; ProjectileSource projectileSource = arrow.getShooter(); - if (projectileSource != null && projectileSource instanceof Player && SkillType.ARCHERY.shouldProcess(target)) { + if (projectileSource != null && projectileSource instanceof Player && PrimarySkill.ARCHERY.shouldProcess(target)) { Player player = (Player) projectileSource; - if (!Misc.isNPCEntity(player) && SkillType.ARCHERY.getPermissions(player)) { + if (!Misc.isNPCEntity(player) && PrimarySkill.ARCHERY.getPermissions(player)) { processArcheryCombat(target, player, event, arrow); } - if (target.getType() != EntityType.CREEPER && !Misc.isNPCEntity(player) && SkillType.TAMING.getPermissions(player)) { + if (target.getType() != EntityType.CREEPER && !Misc.isNPCEntity(player) && PrimarySkill.TAMING.getPermissions(player)) { McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); TamingManager tamingManager = mcMMOPlayer.getTamingManager(); tamingManager.attackTarget(target); @@ -323,7 +321,7 @@ public final class CombatUtils { } if (ItemUtils.isSword(player.getInventory().getItemInMainHand())) { - if (!SkillType.SWORDS.shouldProcess(target)) { + if (!PrimarySkill.SWORDS.shouldProcess(target)) { return; } @@ -399,7 +397,7 @@ public final class CombatUtils { * @param damage The initial damage amount * @param type The type of skill being used */ - public static void applyAbilityAoE(Player attacker, LivingEntity target, double damage, Map modifiers, SkillType type) { + public static void applyAbilityAoE(Player attacker, LivingEntity target, double damage, Map modifiers, PrimarySkill type) { int numberOfTargets = getTier(attacker.getInventory().getItemInMainHand()); // The higher the weapon tier, the more targets you hit double damageAmount = Math.max(damage, 1); @@ -440,8 +438,8 @@ public final class CombatUtils { } } - public static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, SkillType skillType) { - startGainXp(mcMMOPlayer, target, skillType, 1.0); + public static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, PrimarySkill primarySkill) { + startGainXp(mcMMOPlayer, target, primarySkill, 1.0); } /** @@ -449,9 +447,9 @@ public final class CombatUtils { * * @param mcMMOPlayer The attacking player * @param target The defending entity - * @param skillType The skill being used + * @param primarySkill The skill being used */ - private static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, SkillType skillType, double multiplier) { + private static void startGainXp(McMMOPlayer mcMMOPlayer, LivingEntity target, PrimarySkill primarySkill, double multiplier) { double baseXP = 0; XPGainReason xpGainReason; @@ -518,7 +516,7 @@ public final class CombatUtils { baseXP *= multiplier; if (baseXP != 0) { - new AwardCombatXpTask(mcMMOPlayer, skillType, baseXP, target, xpGainReason).runTaskLater(mcMMO.p, 0); + new AwardCombatXpTask(mcMMOPlayer, primarySkill, baseXP, target, xpGainReason).runTaskLater(mcMMO.p, 0); } } diff --git a/src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java b/src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java index 03f4ebe8c..585dcde40 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/PerksUtils.java @@ -1,9 +1,9 @@ package com.gmail.nossr50.util.skills; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import org.bukkit.entity.Player; import com.gmail.nossr50.config.experience.ExperienceConfig; -import com.gmail.nossr50.datatypes.skills.SkillType; import com.gmail.nossr50.util.Permissions; public final class PerksUtils { @@ -44,7 +44,7 @@ public final class PerksUtils { return ticks; } - public static float handleXpPerks(Player player, float xp, SkillType skill) { + public static float handleXpPerks(Player player, float xp, PrimarySkill skill) { if (Permissions.customXpBoost(player, skill)) { xp *= ExperienceConfig.getInstance().getCustomXpPerkBoost(); } @@ -74,10 +74,10 @@ public final class PerksUtils { * Calculate activation chance for a skill. * * @param player Player to check the activation chance for - * @param skill SkillType to check the activation chance of + * @param skill PrimarySkill to check the activation chance of * @return the activation chance with "lucky perk" accounted for */ - public static int handleLuckyPerks(Player player, SkillType skill) { + public static int handleLuckyPerks(Player player, PrimarySkill skill) { if (Permissions.lucky(player, skill)) { return LUCKY_SKILL_ACTIVATION_CHANCE; } diff --git a/src/main/java/com/gmail/nossr50/util/skills/SkillMilestoneManager.java b/src/main/java/com/gmail/nossr50/util/skills/SkillMilestoneManager.java index 58bd43585..0b7d8a5e0 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SkillMilestoneManager.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SkillMilestoneManager.java @@ -1,7 +1,7 @@ package com.gmail.nossr50.util.skills; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; import java.util.HashMap; @@ -19,13 +19,13 @@ import java.util.HashMap; //TODO: Propagate events when milestones are achieved //TODO: Update existing parts of the codebase to use this where appropriate public class SkillMilestoneManager { - public static final HashMap subskillMilestones; + public static final HashMap subskillMilestones; static { //Init our maps subskillMilestones = new HashMap<>(); - for(SkillType skillType : SkillType.values()) + for(PrimarySkill primarySkill : PrimarySkill.values()) { //TODO: Setup these values } 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 200bd5563..40ea41467 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java @@ -4,11 +4,11 @@ import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.config.HiddenConfig; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.AbilityType; -import com.gmail.nossr50.datatypes.skills.SecondaryAbility; -import com.gmail.nossr50.datatypes.skills.SkillType; -import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityEvent; -import com.gmail.nossr50.events.skills.secondaryabilities.SecondaryAbilityWeightedActivationCheckEvent; +import com.gmail.nossr50.datatypes.skills.SuperAbility; +import com.gmail.nossr50.datatypes.skills.PrimarySkill; +import com.gmail.nossr50.datatypes.skills.SubSkill; +import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillEvent; +import com.gmail.nossr50.events.skills.secondaryabilities.SubSkillWeightedActivationCheckEvent; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.util.EventUtils; @@ -32,7 +32,7 @@ import java.util.ArrayList; import java.util.List; public class SkillUtils { - public static int handleFoodSkills(Player player, SkillType skill, int eventFoodLevel, int baseLevel, int maxLevel, int rankChange) { + public static int handleFoodSkills(Player player, PrimarySkill skill, int eventFoodLevel, int baseLevel, int maxLevel, int rankChange) { int skillLevel = UserManager.getPlayer(player).getSkillLevel(skill); int currentFoodLevel = player.getFoodLevel(); @@ -80,7 +80,7 @@ public class SkillUtils { * @return true if this is a valid skill, false otherwise */ public static boolean isSkill(String skillName) { - return Config.getInstance().getLocale().equalsIgnoreCase("en_US") ? SkillType.getSkill(skillName) != null : isLocalizedSkill(skillName); + return Config.getInstance().getLocale().equalsIgnoreCase("en_US") ? PrimarySkill.getSkill(skillName) != null : isLocalizedSkill(skillName); } public static void sendSkillMessage(Player player, String message) { @@ -130,7 +130,7 @@ public class SkillUtils { } McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); - SkillType skill = mcMMOPlayer.getAbilityMode(AbilityType.SUPER_BREAKER) ? SkillType.MINING : SkillType.EXCAVATION; + PrimarySkill skill = mcMMOPlayer.getAbilityMode(SuperAbility.SUPER_BREAKER) ? PrimarySkill.MINING : PrimarySkill.EXCAVATION; int ticks = PerksUtils.handleActivationPerks(player, 2 + (mcMMOPlayer.getSkillLevel(skill) / AdvancedConfig.getInstance().getAbilityLength()), skill.getAbility().getMaxLength()) * Misc.TICK_CONVERSION_FACTOR; PotionEffect abilityBuff = new PotionEffect(PotionEffectType.FAST_DIGGING, duration + ticks, amplifier + 10); @@ -199,7 +199,7 @@ public class SkillUtils { /** * Checks whether or not the given skill succeeds - * @param skillAbility The ability corresponding to this check + * @param subSkill The ability corresponding to this check * @param player The player whose skill levels we are checking against * @param skillLevel The skill level of the corresponding skill * @param activationChance used to determine activation chance @@ -207,9 +207,9 @@ public class SkillUtils { * @param maxLevel maximum skill level bonus * @return true if random chance succeeds and the event isn't cancelled */ - private static boolean performRandomSkillCheck(SecondaryAbility skillAbility, Player player, int skillLevel, int activationChance, double maxChance, int maxLevel) { + private static boolean performRandomSkillCheck(SubSkill subSkill, Player player, int skillLevel, int activationChance, double maxChance, int maxLevel) { double chance = (maxChance / maxLevel) * Math.min(skillLevel, maxLevel) / activationChance; - return performRandomSkillCheckStatic(skillAbility, player, activationChance, chance); + return performRandomSkillCheckStatic(subSkill, player, activationChance, chance); } /** @@ -224,34 +224,34 @@ public class SkillUtils { * Random skills check for success based on numbers and then fire a cancellable event, if that event is not cancelled they succeed * All other skills just fire the cancellable event and succeed if it is not cancelled * - * @param skillAbility The identifier for this specific sub-skill + * @param subSkill The identifier for this specific sub-skill * @param player The owner of this sub-skill * @param skill The identifier for the parent of our sub-skill * @param activationChance This is the value that we roll against, 100 is normal, and 75 is for lucky perk - * @param secondarySkillActivationType this value represents what kind of activation procedures this sub-skill uses + * @param subskillActivationType this value represents what kind of activation procedures this sub-skill uses * @return returns true if all conditions are met and they event is not cancelled */ - public static boolean isActivationSuccessful(SecondarySkillActivationType secondarySkillActivationType, SecondaryAbility skillAbility, Player player, - SkillType skill, int skillLevel, int activationChance) + public static boolean isActivationSuccessful(SubSkillActivationType subskillActivationType, SubSkill subSkill, Player player, + PrimarySkill skill, int skillLevel, int activationChance) { //Maximum chance to succeed - double maxChance = AdvancedConfig.getInstance().getMaxChance(skillAbility); + double maxChance = AdvancedConfig.getInstance().getMaxChance(subSkill); //Maximum roll we can make - int maxBonusLevel = AdvancedConfig.getInstance().getMaxBonusLevel(skillAbility); + int maxBonusLevel = AdvancedConfig.getInstance().getMaxBonusLevel(subSkill); - switch(secondarySkillActivationType) + switch(subskillActivationType) { //100 Skill = Guaranteed case RANDOM_LINEAR_100_SCALE_NO_CAP: - return performRandomSkillCheck(skillAbility, player, skillLevel, PerksUtils.handleLuckyPerks(player, skill), 100.0D, 100); + return performRandomSkillCheck(subSkill, player, skillLevel, PerksUtils.handleLuckyPerks(player, skill), 100.0D, 100); case RANDOM_LINEAR_100_SCALE_WITH_CAP: - return performRandomSkillCheck(skillAbility, player, skillLevel, PerksUtils.handleLuckyPerks(player, skill), AdvancedConfig.getInstance().getMaxChance(skillAbility), AdvancedConfig.getInstance().getMaxBonusLevel(skillAbility)); + return performRandomSkillCheck(subSkill, player, skillLevel, PerksUtils.handleLuckyPerks(player, skill), AdvancedConfig.getInstance().getMaxChance(subSkill), AdvancedConfig.getInstance().getMaxBonusLevel(subSkill)); case RANDOM_STATIC_CHANCE: //Grab the static activation chance of this skill - double staticRoll = getSecondaryAbilityStaticChance(skillAbility) / activationChance; - return performRandomSkillCheckStatic(skillAbility, player, activationChance, staticRoll); + double staticRoll = getSecondaryAbilityStaticChance(subSkill) / activationChance; + return performRandomSkillCheckStatic(subSkill, player, activationChance, staticRoll); case ALWAYS_FIRES: - SecondaryAbilityEvent event = EventUtils.callSecondaryAbilityEvent(player, skillAbility); + SubSkillEvent event = EventUtils.callSubSkillEvent(player, subSkill); return !event.isCancelled(); default: return false; @@ -260,18 +260,18 @@ public class SkillUtils { /** * Grabs static activation rolls for Secondary Abilities - * @param secondaryAbility The secondary ability to grab properties of + * @param subSkill The secondary ability to grab properties of * @return The static activation roll involved in the RNG calculation */ - public static double getSecondaryAbilityStaticChance(SecondaryAbility secondaryAbility) + public static double getSecondaryAbilityStaticChance(SubSkill subSkill) { - switch(secondaryAbility) + switch(subSkill) { - case ARMOR_IMPACT: + case AXES_ARMOR_IMPACT: return AdvancedConfig.getInstance().getImpactChance(); - case GREATER_IMPACT: + case AXES_GREATER_IMPACT: return AdvancedConfig.getInstance().getGreaterImpactChance(); - case FAST_FOOD: + case TAMING_FAST_FOOD: return AdvancedConfig.getInstance().getFastFoodChance(); default: return 100.0D; @@ -280,26 +280,26 @@ public class SkillUtils { /** * Used to determine whether or not a sub-skill activates from random chance (using static values) - * @param skillAbility The identifier for this specific sub-skill + * @param subSkill The identifier for this specific sub-skill * @param player The owner of this sub-skill * @param activationChance This is the value that we roll against, 100 is normal, and 75 is for lucky perk * @param chance This is the static modifier for our random calculations * @return true if random chance was successful and the event wasn't cancelled */ - private static boolean performRandomSkillCheckStatic(SecondaryAbility skillAbility, Player player, int activationChance, double chance) { - SecondaryAbilityWeightedActivationCheckEvent event = new SecondaryAbilityWeightedActivationCheckEvent(player, skillAbility, chance); + private static boolean performRandomSkillCheckStatic(SubSkill subSkill, Player player, int activationChance, double chance) { + SubSkillWeightedActivationCheckEvent event = new SubSkillWeightedActivationCheckEvent(player, subSkill, chance); mcMMO.p.getServer().getPluginManager().callEvent(event); return (event.getChance() * activationChance) > Misc.getRandom().nextInt(activationChance) && !event.isCancelled(); } public static boolean treasureDropSuccessful(Player player, double dropChance, int activationChance) { - SecondaryAbilityWeightedActivationCheckEvent event = new SecondaryAbilityWeightedActivationCheckEvent(player, SecondaryAbility.EXCAVATION_TREASURE_HUNTER, dropChance / activationChance); + SubSkillWeightedActivationCheckEvent event = new SubSkillWeightedActivationCheckEvent(player, SubSkill.EXCAVATION_TREASURE_HUNTER, dropChance / activationChance); mcMMO.p.getServer().getPluginManager().callEvent(event); return (event.getChance() * activationChance) > (Misc.getRandom().nextDouble() * activationChance) && !event.isCancelled(); } private static boolean isLocalizedSkill(String skillName) { - for (SkillType skill : SkillType.values()) { + for (PrimarySkill skill : PrimarySkill.values()) { if (skillName.equalsIgnoreCase(LocaleLoader.getString(StringUtils.getCapitalized(skill.toString()) + ".SkillName"))) { return true; } diff --git a/src/main/java/com/gmail/nossr50/util/skills/SecondarySkillActivationType.java b/src/main/java/com/gmail/nossr50/util/skills/SubSkillActivationType.java similarity index 91% rename from src/main/java/com/gmail/nossr50/util/skills/SecondarySkillActivationType.java rename to src/main/java/com/gmail/nossr50/util/skills/SubSkillActivationType.java index 3f933294e..93b6c5512 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SecondarySkillActivationType.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SubSkillActivationType.java @@ -3,7 +3,7 @@ package com.gmail.nossr50.util.skills; /** * Defines the type of random calculations to use with a given skill */ -public enum SecondarySkillActivationType { +public enum SubSkillActivationType { RANDOM_LINEAR_100_SCALE_NO_CAP, //A skill level of 100 would guarantee the proc with this RANDOM_LINEAR_100_SCALE_WITH_CAP, //This one is based on a scale of 1-100 but with a specified cap for max bonus RANDOM_STATIC_CHANCE, //The skill always has a SPECIFIC chance to succeed diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index bf33107bc..b0e4aa1aa 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -8,6 +8,7 @@ # Settings for mcMMO in general ### General: + Classic_Mode: false Locale: en_US MOTD_Enabled: true # Send a message to the player when his profile was successfully loaded diff --git a/src/main/resources/locale/locale_de.properties b/src/main/resources/locale/locale_de.properties index 915f809a7..e9c84ec9f 100644 --- a/src/main/resources/locale/locale_de.properties +++ b/src/main/resources/locale/locale_de.properties @@ -4,7 +4,7 @@ # SkillName.SubType.LocalEffect.Increment # Skill name, such as ACROBATICS, MINING. # Sub-type, such as EFFECT, ABILITY, COMBAT. -# Local Effect, local text for Skill Name; ROLL, IGNITIONTIME,GRACECHANCE. +# Local Effect, local text for Skill Name; ACROBATICS_ROLL, IGNITIONTIME,GRACECHANCE. # Increment, for multi-line or array-like lists. # ###### # diff --git a/src/main/resources/locale/locale_en_US.properties b/src/main/resources/locale/locale_en_US.properties index 785c1df37..e1cdd3846 100644 --- a/src/main/resources/locale/locale_en_US.properties +++ b/src/main/resources/locale/locale_en_US.properties @@ -4,7 +4,7 @@ # SkillName.SubType.LocalEffect.Increment # Skill name, such as ACROBATICS, MINING. # Sub-type, such as EFFECT, ABILITY, COMBAT. -# Local Effect, local text for Skill Name; ROLL, IGNITIONTIME,GRACECHANCE. +# Local Effect, local text for Skill Name; ACROBATICS_ROLL, IGNITIONTIME,GRACECHANCE. # Increment, for multi-line or array-like lists. # ###### # diff --git a/src/main/resources/locale/locale_ko.properties b/src/main/resources/locale/locale_ko.properties index 3e50df0c7..52c4b1969 100644 --- a/src/main/resources/locale/locale_ko.properties +++ b/src/main/resources/locale/locale_ko.properties @@ -4,7 +4,7 @@ # SkillName.SubType.LocalEffect.Increment # Skill name, such as ACROBATICS, MINING. # Sub-type, such as EFFECT, ABILITY, COMBAT. -# Local Effect, local text for Skill Name; ROLL, IGNITIONTIME,GRACECHANCE. +# Local Effect, local text for Skill Name; ACROBATICS_ROLL, IGNITIONTIME,GRACECHANCE. # Increment, for multi-line or array-like lists. # ###### #