diff --git a/Changelog.txt b/Changelog.txt index fdfa4aa63..e801e84f4 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -8,7 +8,8 @@ Version 2.1.189 Fixed an IllegalPluginAccessException error that could happen during server shutdown Minor performance optimizations to FlatFile database Refactored a lot of code - (API) PrimarySkillType is now just an enum with nothing special going on, SkillTools will facilitate what it used to do - see mcMMO::getSkillTools + (API) PrimarySkillType will soon be just an enum with nothing special going on + (API) Deprecated the members of PrimarySkillType use mcMMO::getSkillTools instead, deprecated members will be removed in Tridents & Crossbows (due soon) Added unit tests for FlatFileDatabaseManager NOTES: diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java index ceb75d12f..24f215191 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java @@ -1,5 +1,15 @@ package com.gmail.nossr50.datatypes.skills; +import com.gmail.nossr50.config.GeneralConfig; +import com.gmail.nossr50.mcMMO; +import com.gmail.nossr50.util.Permissions; +import com.gmail.nossr50.util.skills.SkillTools; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + public enum PrimarySkillType { ACROBATICS, ALCHEMY, @@ -15,5 +25,209 @@ public enum PrimarySkillType { SWORDS, TAMING, UNARMED, - WOODCUTTING + WOODCUTTING; + + /* + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + * Everything below here will be removed in 2.2 (Tridents & Crossbows) + */ + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getLevelCap(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public int getMaxLevel() { + return mcMMO.p.getSkillTools().getLevelCap(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#isSuperAbilityUnlocked(com.gmail.nossr50.datatypes.skills.PrimarySkillType, org.bukkit.entity.Player) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public boolean isSuperAbilityUnlocked(@NotNull Player player) { return mcMMO.p.getSkillTools().isSuperAbilityUnlocked(this, player); } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getPVPEnabled(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public boolean getPVPEnabled() { + return mcMMO.p.getSkillTools().getPVPEnabled(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getPVEEnabled(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public boolean getPVEEnabled() { + return mcMMO.p.getSkillTools().getPVEEnabled(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see GeneralConfig#getDoubleDropsDisabled(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public boolean getDoubleDropsDisabled() { + return mcMMO.p.getGeneralConfig().getDoubleDropsDisabled(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getHardcoreStatLossEnabled(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public boolean getHardcoreStatLossEnabled() { + return mcMMO.p.getSkillTools().getHardcoreStatLossEnabled(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getHardcoreVampirismEnabled(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public boolean getHardcoreVampirismEnabled() { + return mcMMO.p.getSkillTools().getHardcoreVampirismEnabled(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getPrimarySkillToolType(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public ToolType getTool() { + return mcMMO.p.getSkillTools().getPrimarySkillToolType(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getSubSkills(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public List getSkillAbilities() { + return mcMMO.p.getSkillTools().getSubSkills(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getXpModifier(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public double getXpModifier() { + return mcMMO.p.getSkillTools().getXpModifier(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#matchSkill(java.lang.String) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public static PrimarySkillType getSkill(String skillName) { + return mcMMO.p.getSkillTools().matchSkill(skillName); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#isChildSkill(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public boolean isChildSkill() { + return mcMMO.p.getSkillTools().isChildSkill(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getPrimarySkillBySubSkill(com.gmail.nossr50.datatypes.skills.SubSkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public static PrimarySkillType bySecondaryAbility(SubSkillType subSkillType) { + return mcMMO.p.getSkillTools().getPrimarySkillBySubSkill(subSkillType); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getPrimarySkillBySuperAbility(com.gmail.nossr50.datatypes.skills.SuperAbilityType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public static PrimarySkillType byAbility(SuperAbilityType superAbilityType) { + return mcMMO.p.getSkillTools().getPrimarySkillBySuperAbility(superAbilityType); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#getLocalizedSkillName(com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public String getName() { + return mcMMO.p.getSkillTools().getLocalizedSkillName(this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see Permissions#skillEnabled(org.bukkit.permissions.Permissible, com.gmail.nossr50.datatypes.skills.PrimarySkillType) + * @deprecated this is being removed in an upcoming update + */ + @Deprecated + public boolean getPermissions(Player player) { + return Permissions.skillEnabled(player, this); + } + + /** + * WARNING: Being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + * @return the max level of this skill + * @see SkillTools#canCombatSkillsTrigger(com.gmail.nossr50.datatypes.skills.PrimarySkillType, org.bukkit.entity.Entity) + * @deprecated this is being removed in an upcoming update, you should be using mcMMO.getSkillTools() instead + */ + @Deprecated + public boolean shouldProcess(Entity target) { + return mcMMO.p.getSkillTools().canCombatSkillsTrigger(this, target); + } } \ No newline at end of file diff --git a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java index f72a9409f..bdcb2833f 100644 --- a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java @@ -350,7 +350,8 @@ public class BlockListener implements Listener { } /* WOOD CUTTING */ - else if (BlockUtils.hasWoodcuttingXP(blockState) && ItemUtils.isAxe(heldItem) && Permissions.skillEnabled(player, PrimarySkillType.WOODCUTTING) && !mcMMO.getPlaceStore().isTrue(blockState)) { + else if (BlockUtils.hasWoodcuttingXP(blockState) && ItemUtils.isAxe(heldItem) + && Permissions.skillEnabled(player, PrimarySkillType.WOODCUTTING) && !mcMMO.getPlaceStore().isTrue(blockState)) { WoodcuttingManager woodcuttingManager = mcMMOPlayer.getWoodcuttingManager(); if (woodcuttingManager.canUseTreeFeller(heldItem)) { woodcuttingManager.processTreeFeller(blockState); diff --git a/src/main/java/com/gmail/nossr50/util/skills/SkillTools.java b/src/main/java/com/gmail/nossr50/util/skills/SkillTools.java index 4fe98d5f7..846c7c413 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SkillTools.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SkillTools.java @@ -267,7 +267,9 @@ public class SkillTools { } public boolean isSuperAbilityUnlocked(PrimarySkillType primarySkillType, Player player) { - return RankUtils.getRank(player, getSuperAbility(primarySkillType).getSubSkillTypeDefinition()) >= 1; + SuperAbilityType superAbilityType = mcMMO.p.getSkillTools().getSuperAbility(primarySkillType); + SubSkillType subSkillType = superAbilityType.getSubSkillTypeDefinition(); + return RankUtils.hasUnlockedSubskill(player, subSkillType); } public boolean getPVPEnabled(PrimarySkillType primarySkillType) { @@ -361,6 +363,10 @@ public class SkillTools { return "SuperAbility." + StringUtils.getPrettyCamelCaseName(superAbilityType) + ".Refresh"; } + public int getLevelCap(@NotNull PrimarySkillType primarySkillType) { + return mcMMO.p.getGeneralConfig().getLevelCap(primarySkillType); + } + /** * Get the permissions for this ability. * @@ -418,33 +424,4 @@ public class SkillTools { public @NotNull ImmutableList getMiscSkills() { return MISC_SKILLS; } - - // /** -// * Check if a block is affected by this ability. -// * -// * @param blockState the block to check -// * @param superAbilityType target super ability -// * @return true if the block is affected by this ability, false otherwise -// */ -// public boolean superAbilityBlockCheck(SuperAbilityType superAbilityType, BlockState blockState) { -// switch (superAbilityType) { -// case BERSERK: -// return (BlockUtils.affectedByGigaDrillBreaker(blockState) || blockState.getType() == Material.SNOW); -// -// case GIGA_DRILL_BREAKER: -// return BlockUtils.affectedByGigaDrillBreaker(blockState); -// -// case GREEN_TERRA: -// return BlockUtils.canMakeMossy(blockState); -// -// case SUPER_BREAKER: -// return BlockUtils.affectedBySuperBreaker(blockState); -// -// case TREE_FELLER: -// dfss -// -// default: -// return false; -// } -// } }