diff --git a/src/main/java/com/gmail/nossr50/commands/McrefreshCommand.java b/src/main/java/com/gmail/nossr50/commands/McrefreshCommand.java index d5015ecce..c6d9dd82f 100644 --- a/src/main/java/com/gmail/nossr50/commands/McrefreshCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/McrefreshCommand.java @@ -20,7 +20,7 @@ public class McrefreshCommand extends ToggleCommand { protected void applyCommandAction(McMMOPlayer mcMMOPlayer) { mcMMOPlayer.setRecentlyHurt(0); mcMMOPlayer.resetCooldowns(); - mcMMOPlayer.getSuperAbilityManager().resetToolPrepMode(); + mcMMOPlayer.getSuperAbilityManager().unprimeAllAbilityTools(); mcMMOPlayer.getSuperAbilityManager().resetSuperAbilities(); mcMMOPlayer.getPlayer().sendMessage(LocaleLoader.getString("Ability.Generic.Refresh")); 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 91c683a43..58cc27d55 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java @@ -225,7 +225,7 @@ public abstract class SkillCommand implements TabExecutor { } protected String[] calculateLengthDisplayValues(Player player, float skillValue) { - int maxLength = skill.getAbility().getMaxLength(); + int maxLength = skill.getSuperAbilityType().getMaxLength(); int abilityLengthVar = AdvancedConfig.getInstance().getAbilityLength(); int abilityLengthCap = AdvancedConfig.getInstance().getAbilityLengthCap(); diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityToolType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityToolType.java new file mode 100644 index 000000000..2a52ec835 --- /dev/null +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/AbilityToolType.java @@ -0,0 +1,30 @@ +package com.gmail.nossr50.datatypes.skills; + +public enum AbilityToolType { + SKULL_SPLITTER_TOOL("Axes.Ability.Lower", "Axes.Ability.Ready"), + BERSERK_TOOL( "Unarmed.Ability.Lower", "Unarmed.Ability.Ready"), + GREEN_TERRA_TOOL("Herbalism.Ability.Lower", "Herbalism.Ability.Ready"), + SUPER_BREAKER_TOOL("Mining.Ability.Lower", "Mining.Ability.Ready"), + GIGA_DRILL_BREAKER_TOOL("Excavation.Ability.Lower", "Excavation.Ability.Ready"), + SERRATED_STRIKES_TOOL("Swords.Ability.Lower", "Swords.Ability.Ready"), + TREE_FELLER_TOOL("Axes.Ability.Lower", "Axes.Ability.Ready"), + ARCHERY_TOOL("Archery.Ability.Lower", "Archery.Ability.Ready"), + SUPER_SHOTGUN_TOOL("Crossbows.Ability.Lower", "Crossbows.Ability.Ready"), + TRIDENTS_TOOL("Tridents.Ability.Lower", "Tridents.Ability.Ready"); + + private final String lowerToolLocaleKey; + private final String raiseToolLocaleKey; + + AbilityToolType(String lowerToolLocaleKey, String raiseToolLocaleKey) { + this.lowerToolLocaleKey = lowerToolLocaleKey; + this.raiseToolLocaleKey = raiseToolLocaleKey; + } + + public String getLowerToolLocaleKey() { + return lowerToolLocaleKey; + } + + public String getRaiseToolLocaleKey() { + return raiseToolLocaleKey; + } +} 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 1d07514c4..03dbb8d4a 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/PrimarySkillType.java @@ -42,15 +42,15 @@ public enum PrimarySkillType { ImmutableList.of(SubSkillType.ALCHEMY_CATALYSIS, SubSkillType.ALCHEMY_CONCOCTIONS)), ARCHERY(ArcheryManager.class, Color.MAROON, ImmutableList.of(SubSkillType.ARCHERY_DAZE, SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK, SubSkillType.ARCHERY_ARROW_RETRIEVAL, SubSkillType.ARCHERY_SKILL_SHOT)), - AXES(AxesManager.class, Color.AQUA, SuperAbilityType.SKULL_SPLITTER, ToolType.AXE, + AXES(AxesManager.class, Color.AQUA, SuperAbilityType.SKULL_SPLITTER, ImmutableList.of(SubSkillType.AXES_SKULL_SPLITTER, SubSkillType.AXES_AXES_LIMIT_BREAK, SubSkillType.AXES_ARMOR_IMPACT, SubSkillType.AXES_AXE_MASTERY, SubSkillType.AXES_CRITICAL_STRIKES, SubSkillType.AXES_GREATER_IMPACT)), - EXCAVATION(ExcavationManager.class, Color.fromRGB(139, 69, 19), SuperAbilityType.GIGA_DRILL_BREAKER, ToolType.SHOVEL, + EXCAVATION(ExcavationManager.class, Color.fromRGB(139, 69, 19), SuperAbilityType.GIGA_DRILL_BREAKER, ImmutableList.of(SubSkillType.EXCAVATION_GIGA_DRILL_BREAKER, SubSkillType.EXCAVATION_ARCHAEOLOGY)), FISHING(FishingManager.class, Color.NAVY, ImmutableList.of(SubSkillType.FISHING_FISHERMANS_DIET, SubSkillType.FISHING_TREASURE_HUNTER, SubSkillType.FISHING_ICE_FISHING, SubSkillType.FISHING_MAGIC_HUNTER, SubSkillType.FISHING_MASTER_ANGLER, SubSkillType.FISHING_SHAKE)), - HERBALISM(HerbalismManager.class, Color.GREEN, SuperAbilityType.GREEN_TERRA, ToolType.HOE, + HERBALISM(HerbalismManager.class, Color.GREEN, SuperAbilityType.GREEN_TERRA, ImmutableList.of(SubSkillType.HERBALISM_GREEN_TERRA, SubSkillType.HERBALISM_FARMERS_DIET, SubSkillType.HERBALISM_GREEN_THUMB, SubSkillType.HERBALISM_DOUBLE_DROPS, SubSkillType.HERBALISM_HYLIAN_LUCK, SubSkillType.HERBALISM_SHROOM_THUMB)), - MINING(MiningManager.class, Color.GRAY, SuperAbilityType.SUPER_BREAKER, ToolType.PICKAXE, + MINING(MiningManager.class, Color.GRAY, SuperAbilityType.SUPER_BREAKER, ImmutableList.of(SubSkillType.MINING_SUPER_BREAKER, SubSkillType.MINING_DEMOLITIONS_EXPERTISE, SubSkillType.MINING_BIGGER_BOMBS, SubSkillType.MINING_BLAST_MINING, SubSkillType.MINING_DOUBLE_DROPS)), REPAIR(RepairManager.class, Color.SILVER, ImmutableList.of(SubSkillType.REPAIR_ARCANE_FORGING, SubSkillType.REPAIR_REPAIR_MASTERY, SubSkillType.REPAIR_SUPER_REPAIR)), @@ -58,21 +58,20 @@ public enum PrimarySkillType { ImmutableList.of(SubSkillType.SALVAGE_SCRAP_COLLECTOR, SubSkillType.SALVAGE_ARCANE_SALVAGE)), SMELTING(SmeltingManager.class, Color.YELLOW, ImmutableList.of(SubSkillType.SMELTING_UNDERSTANDING_THE_ART, /*SubSkillType.SMELTING_FLUX_MINING,*/ SubSkillType.SMELTING_FUEL_EFFICIENCY, SubSkillType.SMELTING_SECOND_SMELT)), - SWORDS(SwordsManager.class, Color.fromRGB(178, 34, 34), SuperAbilityType.SERRATED_STRIKES, ToolType.SWORD, + SWORDS(SwordsManager.class, Color.fromRGB(178, 34, 34), SuperAbilityType.SERRATED_STRIKES, ImmutableList.of(SubSkillType.SWORDS_SERRATED_STRIKES, SubSkillType.SWORDS_SWORDS_LIMIT_BREAK, SubSkillType.SWORDS_STAB, SubSkillType.SWORDS_RUPTURE, SubSkillType.SWORDS_COUNTER_ATTACK)), TAMING(TamingManager.class, Color.PURPLE, ImmutableList.of(SubSkillType.TAMING_BEAST_LORE, SubSkillType.TAMING_CALL_OF_THE_WILD, SubSkillType.TAMING_ENVIRONMENTALLY_AWARE, SubSkillType.TAMING_FAST_FOOD_SERVICE, SubSkillType.TAMING_GORE, SubSkillType.TAMING_HOLY_HOUND, SubSkillType.TAMING_SHARPENED_CLAWS, SubSkillType.TAMING_SHOCK_PROOF, SubSkillType.TAMING_THICK_FUR, SubSkillType.TAMING_PUMMEL)), - UNARMED(UnarmedManager.class, Color.BLACK, SuperAbilityType.BERSERK, ToolType.FISTS, + UNARMED(UnarmedManager.class, Color.BLACK, SuperAbilityType.BERSERK, ImmutableList.of(SubSkillType.UNARMED_BERSERK, SubSkillType.UNARMED_UNARMED_LIMIT_BREAK, SubSkillType.UNARMED_BLOCK_CRACKER, SubSkillType.UNARMED_ARROW_DEFLECT, SubSkillType.UNARMED_DISARM, SubSkillType.UNARMED_IRON_ARM_STYLE, SubSkillType.UNARMED_IRON_GRIP)), - WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, SuperAbilityType.TREE_FELLER, ToolType.AXE, + WOODCUTTING(WoodcuttingManager.class, Color.OLIVE, SuperAbilityType.TREE_FELLER, ImmutableList.of(SubSkillType.WOODCUTTING_LEAF_BLOWER, SubSkillType.WOODCUTTING_TREE_FELLER, SubSkillType.WOODCUTTING_HARVEST_LUMBER)), TRIDENTS(TridentManager.class, Color.TEAL, ImmutableList.of(SubSkillType.TRIDENTS_MULTI_TASKING, SubSkillType.TRIDENTS_TRIDENTS_LIMIT_BREAK)), CROSSBOWS(CrossbowManager.class, Color.ORANGE, ImmutableList.of(SubSkillType.CROSSBOWS_SUPER_SHOTGUN, SubSkillType.CROSSBOWS_CROSSBOWS_LIMIT_BREAK)); private final Class managerClass; private final Color skillColor; - private final SuperAbilityType ability; - private final ToolType tool; + private final SuperAbilityType superAbilityType; private final List subSkillTypes; public static final List SKILL_NAMES; @@ -115,14 +114,13 @@ public enum PrimarySkillType { } PrimarySkillType(Class managerClass, Color skillColor, List subSkillTypes) { - this(managerClass, skillColor, null, null, subSkillTypes); + this(managerClass, skillColor, null, subSkillTypes); } - PrimarySkillType(Class managerClass, Color skillColor, SuperAbilityType ability, ToolType tool, List subSkillTypes) { + PrimarySkillType(Class managerClass, Color skillColor, SuperAbilityType superAbilityType, List subSkillTypes) { this.managerClass = managerClass; this.skillColor = skillColor; - this.ability = ability; - this.tool = tool; + this.superAbilityType = superAbilityType; this.subSkillTypes = subSkillTypes; } @@ -130,8 +128,8 @@ public enum PrimarySkillType { return managerClass; } - public SuperAbilityType getAbility() { - return ability; + public SuperAbilityType getSuperAbilityType() { + return superAbilityType; } /** @@ -143,7 +141,7 @@ public enum PrimarySkillType { return Config.getInstance().getLevelCap(this); } - public boolean isSuperAbilityUnlocked(Player player) { return RankUtils.getRank(player, getAbility().getSubSkillTypeDefinition()) >= 1; } + public boolean isSuperAbilityUnlocked(Player player) { return RankUtils.getRank(player, getSuperAbilityType().getSubSkillTypeDefinition()) >= 1; } public boolean getPVPEnabled() { return Config.getInstance().getPVPEnabled(this); @@ -173,10 +171,6 @@ public enum PrimarySkillType { Config.getInstance().setHardcoreVampirismEnabled(this, enable); } - public ToolType getTool() { - return tool; - } - public List getSkillAbilities() { return subSkillTypes; } @@ -230,7 +224,7 @@ public enum PrimarySkillType { public static PrimarySkillType byAbility(SuperAbilityType ability) { for (PrimarySkillType type : values()) { - if (type.getAbility() == ability) { + if (type.getSuperAbilityType() == ability) { return type; } } diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/ToolType.java b/src/main/java/com/gmail/nossr50/datatypes/skills/ToolType.java deleted file mode 100644 index 9fdb444e9..000000000 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/ToolType.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.gmail.nossr50.datatypes.skills; - -import com.gmail.nossr50.util.ItemUtils; -import org.bukkit.Material; -import org.bukkit.inventory.ItemStack; - -public enum ToolType { - AXE("Axes.Ability.Lower", "Axes.Ability.Ready"), - FISTS("Unarmed.Ability.Lower", "Unarmed.Ability.Ready"), - HOE("Herbalism.Ability.Lower", "Herbalism.Ability.Ready"), - PICKAXE("Mining.Ability.Lower", "Mining.Ability.Ready"), - SHOVEL("Excavation.Ability.Lower", "Excavation.Ability.Ready"), - SWORD("Swords.Ability.Lower", "Swords.Ability.Ready"); - - private final String lowerTool; - private final String raiseTool; - - ToolType(String lowerTool, String raiseTool) { - this.lowerTool = lowerTool; - this.raiseTool = raiseTool; - } - - public String getLowerTool() { - return lowerTool; - } - - public String getRaiseTool() { - return raiseTool; - } - - /** - * Check to see if the item is of the appropriate type. - * - * @param itemStack The item to check - * @return true if the item is the right type, false otherwise - */ - public boolean inHand(ItemStack itemStack) { - switch (this) { - case AXE: - return ItemUtils.isAxe(itemStack); - - case FISTS: - return itemStack.getType() == Material.AIR; - - case HOE: - return ItemUtils.isHoe(itemStack); - - case PICKAXE: - return ItemUtils.isPickaxe(itemStack); - - case SHOVEL: - return ItemUtils.isShovel(itemStack); - - case SWORD: - return ItemUtils.isSword(itemStack); - - default: - return false; - } - } -} 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 706055df3..3c920464f 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 @@ -10,7 +10,7 @@ public class McMMOPlayerAbilityEvent extends McMMOPlayerSkillEvent { protected McMMOPlayerAbilityEvent(Player player, PrimarySkillType skill) { super(player, skill); - ability = skill.getAbility(); + ability = skill.getSuperAbilityType(); } public SuperAbilityType getAbility() { diff --git a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java index 53c016e0e..ec90a7321 100644 --- a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java @@ -6,9 +6,9 @@ import com.gmail.nossr50.config.WorldBlacklist; import com.gmail.nossr50.config.experience.ExperienceConfig; import com.gmail.nossr50.datatypes.meta.BonusDropMeta; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.skills.AbilityToolType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.events.fake.FakeBlockBreakEvent; import com.gmail.nossr50.events.fake.FakeBlockDamageEvent; import com.gmail.nossr50.mcMMO; @@ -491,19 +491,19 @@ public class BlockListener implements Listener { if (BlockUtils.canActivateAbilities(blockState)) { ItemStack heldItem = player.getInventory().getItemInMainHand(); - if (mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.HOE) && ItemUtils.isHoe(heldItem) && (BlockUtils.affectedByGreenTerra(blockState) || BlockUtils.canMakeMossy(blockState)) && Permissions.greenTerra(player)) { + if (mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.GREEN_TERRA_TOOL) && ItemUtils.isHoe(heldItem) && (BlockUtils.affectedByGreenTerra(blockState) || BlockUtils.canMakeMossy(blockState)) && Permissions.greenTerra(player)) { mcMMOPlayer.getSuperAbilityManager().checkAbilityActivation(PrimarySkillType.HERBALISM); } - else if (mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.AXE) && ItemUtils.isAxe(heldItem) && BlockUtils.isLog(blockState) && Permissions.treeFeller(player)) { + else if (mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.SKULL_SPLITTER_TOOL) && ItemUtils.isAxe(heldItem) && BlockUtils.isLog(blockState) && Permissions.treeFeller(player)) { mcMMOPlayer.getSuperAbilityManager().checkAbilityActivation(PrimarySkillType.WOODCUTTING); } - else if (mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.PICKAXE) && ItemUtils.isPickaxe(heldItem) && BlockUtils.affectedBySuperBreaker(blockState) && Permissions.superBreaker(player)) { + else if (mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.SUPER_BREAKER_TOOL) && ItemUtils.isPickaxe(heldItem) && BlockUtils.affectedBySuperBreaker(blockState) && Permissions.superBreaker(player)) { mcMMOPlayer.getSuperAbilityManager().checkAbilityActivation(PrimarySkillType.MINING); } - else if (mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.SHOVEL) && ItemUtils.isShovel(heldItem) && BlockUtils.affectedByGigaDrillBreaker(blockState) && Permissions.gigaDrillBreaker(player)) { + else if (mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.GIGA_DRILL_BREAKER_TOOL) && ItemUtils.isShovel(heldItem) && BlockUtils.affectedByGigaDrillBreaker(blockState) && Permissions.gigaDrillBreaker(player)) { mcMMOPlayer.getSuperAbilityManager().checkAbilityActivation(PrimarySkillType.EXCAVATION); } - else if (mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockUtils.affectedByGigaDrillBreaker(blockState) + else if (mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.BERSERK_TOOL) && heldItem.getType() == Material.AIR && (BlockUtils.affectedByGigaDrillBreaker(blockState) || mcMMO.getMaterialMapStore().isGlass(blockState.getType()) || blockState.getType() == Material.SNOW || BlockUtils.affectedByBlockCracker(blockState) && Permissions.berserk(player))) { diff --git a/src/main/java/com/gmail/nossr50/runnables/skills/ToolLowerTask.java b/src/main/java/com/gmail/nossr50/runnables/skills/ToolLowerTask.java index 3e03b1bf1..e24fd4af3 100644 --- a/src/main/java/com/gmail/nossr50/runnables/skills/ToolLowerTask.java +++ b/src/main/java/com/gmail/nossr50/runnables/skills/ToolLowerTask.java @@ -3,29 +3,29 @@ package com.gmail.nossr50.runnables.skills; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; -import com.gmail.nossr50.datatypes.skills.ToolType; +import com.gmail.nossr50.datatypes.skills.AbilityToolType; import com.gmail.nossr50.util.player.NotificationManager; import org.bukkit.scheduler.BukkitRunnable; public class ToolLowerTask extends BukkitRunnable { private final McMMOPlayer mcMMOPlayer; - private final ToolType tool; + private final AbilityToolType tool; - public ToolLowerTask(McMMOPlayer mcMMOPlayer, ToolType tool) { + public ToolLowerTask(McMMOPlayer mcMMOPlayer, AbilityToolType abilityToolType) { this.mcMMOPlayer = mcMMOPlayer; - this.tool = tool; + this.tool = abilityToolType; } @Override public void run() { - if (!mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(tool)) { + if (!mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(tool)) { return; } - mcMMOPlayer.getSuperAbilityManager().setToolPreparationMode(tool, false); + mcMMOPlayer.getSuperAbilityManager().setAbilityToolPrime(tool, false); if (Config.getInstance().getAbilityMessagesEnabled()) { - NotificationManager.sendPlayerInformation(mcMMOPlayer.getPlayer(), NotificationType.TOOL, tool.getLowerTool()); + NotificationManager.sendPlayerInformation(mcMMOPlayer.getPlayer(), NotificationType.TOOL, tool.getLowerToolLocaleKey()); } } } 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 fe7db9bf5..ebae514dd 100644 --- a/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java +++ b/src/main/java/com/gmail/nossr50/skills/axes/AxesManager.java @@ -3,10 +3,10 @@ package com.gmail.nossr50.skills.axes; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.skills.AbilityToolType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.ItemUtils; import com.gmail.nossr50.util.Permissions; @@ -61,7 +61,7 @@ public class AxesManager extends SkillManager { } public boolean canActivateAbility() { - return mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.AXE) && Permissions.skullSplitter(getPlayer()); + return mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.SKULL_SPLITTER_TOOL) && Permissions.skullSplitter(getPlayer()); } /** 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 cbced4a8c..544c693a5 100644 --- a/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java +++ b/src/main/java/com/gmail/nossr50/skills/herbalism/HerbalismManager.java @@ -9,10 +9,10 @@ import com.gmail.nossr50.datatypes.experience.XPGainSource; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.meta.RecentlyReplantedCropMeta; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.skills.AbilityToolType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.datatypes.treasure.HylianTreasure; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.skills.DelayedCropReplant; @@ -82,7 +82,7 @@ public class HerbalismManager extends SkillManager { } public boolean canActivateAbility() { - return mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.HOE) && Permissions.greenTerra(getPlayer()); + return mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.GREEN_TERRA_TOOL) && Permissions.greenTerra(getPlayer()); } public boolean isGreenTerraActive() { 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 39610bc93..4ade3c6a4 100644 --- a/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java +++ b/src/main/java/com/gmail/nossr50/skills/mining/MiningManager.java @@ -81,7 +81,7 @@ public class MiningManager extends SkillManager { return; } - if (mcMMOPlayer.getSuperAbilityManager().getAbilityMode(skill.getAbility())) { + if (mcMMOPlayer.getSuperAbilityManager().getAbilityMode(skill.getSuperAbilityType())) { SkillUtils.handleDurabilityChange(getPlayer().getInventory().getItemInMainHand(), Config.getInstance().getAbilityToolDamage()); } @@ -95,7 +95,7 @@ public class MiningManager extends SkillManager { //TODO: Make this readable if (RandomChanceUtil.checkRandomChanceExecutionSuccess(getPlayer(), SubSkillType.MINING_DOUBLE_DROPS, true)) { - BlockUtils.markDropsAsBonus(blockState, mcMMOPlayer.getSuperAbilityManager().getAbilityMode(skill.getAbility())); + BlockUtils.markDropsAsBonus(blockState, mcMMOPlayer.getSuperAbilityManager().getAbilityMode(skill.getSuperAbilityType())); } } 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 db77bb126..f563a8b5d 100644 --- a/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java +++ b/src/main/java/com/gmail/nossr50/skills/swords/SwordsManager.java @@ -2,10 +2,10 @@ package com.gmail.nossr50.skills.swords; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.skills.AbilityToolType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.runnables.skills.BleedTimerTask; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.ItemUtils; @@ -29,7 +29,7 @@ public class SwordsManager extends SkillManager { } public boolean canActivateAbility() { - return mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.SWORD) && Permissions.serratedStrikes(getPlayer()); + return mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.SERRATED_STRIKES_TOOL) && Permissions.serratedStrikes(getPlayer()); } public boolean canUseStab() { 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 735da50dc..bc49d2651 100644 --- a/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java +++ b/src/main/java/com/gmail/nossr50/skills/unarmed/UnarmedManager.java @@ -3,10 +3,10 @@ package com.gmail.nossr50.skills.unarmed; import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.skills.AbilityToolType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.SkillManager; import com.gmail.nossr50.util.EventUtils; @@ -32,7 +32,7 @@ public class UnarmedManager extends SkillManager { } public boolean canActivateAbility() { - return mcMMOPlayer.getSuperAbilityManager().getToolPreparationMode(ToolType.FISTS) && Permissions.berserk(getPlayer()); + return mcMMOPlayer.getSuperAbilityManager().isAbilityToolPrimed(AbilityToolType.BERSERK_TOOL) && Permissions.berserk(getPlayer()); } public boolean canUseIronArm() { diff --git a/src/main/java/com/gmail/nossr50/util/MaterialMapStore.java b/src/main/java/com/gmail/nossr50/util/MaterialMapStore.java index 3f0121a32..3515a1c40 100644 --- a/src/main/java/com/gmail/nossr50/util/MaterialMapStore.java +++ b/src/main/java/com/gmail/nossr50/util/MaterialMapStore.java @@ -251,7 +251,7 @@ public class MaterialMapStore { fillIronToolsWhiteList(); fillGoldToolsWhiteList(); fillDiamondToolsWhiteList(); - fillnetheriteToolsWhiteList(); + fillNetheriteToolsWhiteList(); fillSwords(); fillAxes(); @@ -476,7 +476,7 @@ public class MaterialMapStore { diamondTools.add("diamond_shovel"); } - private void fillnetheriteToolsWhiteList() { + private void fillNetheriteToolsWhiteList() { netheriteTools.add("netherite_sword"); netheriteTools.add("netherite_axe"); netheriteTools.add("netherite_hoe"); diff --git a/src/main/java/com/gmail/nossr50/util/input/AbilityActivationProcessor.java b/src/main/java/com/gmail/nossr50/util/input/AbilityActivationProcessor.java index 72eadc565..a6632c9d4 100644 --- a/src/main/java/com/gmail/nossr50/util/input/AbilityActivationProcessor.java +++ b/src/main/java/com/gmail/nossr50/util/input/AbilityActivationProcessor.java @@ -29,6 +29,14 @@ public class AbilityActivationProcessor { this.player = mmoPlayer.getPlayer(); } + /** + * Checks to see if the player is holding a tool + */ + public boolean isHoldingTool() { + return mcMMO.getMaterialMapStore().isTool(player.getInventory().getItemInMainHand().getType()); + } + + public void processAbilityAndToolActivations(PlayerInteractEvent event) { switch(event.getAction()) { case LEFT_CLICK_BLOCK: diff --git a/src/main/java/com/gmail/nossr50/util/input/SuperAbilityManager.java b/src/main/java/com/gmail/nossr50/util/input/SuperAbilityManager.java index 77a3c3419..9af6b83a4 100644 --- a/src/main/java/com/gmail/nossr50/util/input/SuperAbilityManager.java +++ b/src/main/java/com/gmail/nossr50/util/input/SuperAbilityManager.java @@ -4,9 +4,9 @@ import com.gmail.nossr50.config.AdvancedConfig; import com.gmail.nossr50.config.Config; import com.gmail.nossr50.datatypes.interactions.NotificationType; import com.gmail.nossr50.datatypes.player.McMMOPlayer; +import com.gmail.nossr50.datatypes.skills.AbilityToolType; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SuperAbilityType; -import com.gmail.nossr50.datatypes.skills.ToolType; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.runnables.skills.AbilityDisableTask; import com.gmail.nossr50.runnables.skills.ToolLowerTask; @@ -29,24 +29,24 @@ public class SuperAbilityManager { private final McMMOPlayer mmoPlayer; private final Player player; - private final Map abilityMode = new HashMap<>(); + private final Map superAbilityState = new HashMap<>(); private final Map abilityInformed = new HashMap<>(); private boolean abilityActivationPermission = true; - private final Map toolMode = new HashMap<>(); + private final Map toolMode = new HashMap<>(); public SuperAbilityManager(McMMOPlayer mmoPlayer) { this.mmoPlayer = mmoPlayer; this.player = mmoPlayer.getPlayer(); for (SuperAbilityType superAbilityType : SuperAbilityType.values()) { - abilityMode.put(superAbilityType, false); + superAbilityState.put(superAbilityType, false); abilityInformed.put(superAbilityType, true); // This is intended } - for (ToolType toolType : ToolType.values()) { - toolMode.put(toolType, false); + for (AbilityToolType abilityToolType : AbilityToolType.values()) { + toolMode.put(abilityToolType, false); } } @@ -78,14 +78,13 @@ public class SuperAbilityManager { } } - SuperAbilityType ability = skill.getAbility(); - ToolType tool = skill.getTool(); + SuperAbilityType ability = skill.getSuperAbilityType(); /* * Woodcutting & Axes need to be treated differently. * Basically the tool always needs to ready and we check to see if the cooldown is over when the user takes action */ - if (tool.inHand(inHand) && !getToolPreparationMode(tool)) { + if (mmoPlayer.getAbilityActivationProcessor().isHoldingTool() && !isAbilityToolPrimed(tool)) { if (skill != PrimarySkillType.WOODCUTTING && skill != PrimarySkillType.AXES) { int timeRemaining = calculateTimeRemaining(ability); @@ -96,11 +95,11 @@ public class SuperAbilityManager { } if (Config.getInstance().getAbilityMessagesEnabled()) { - NotificationManager.sendPlayerInformation(player, NotificationType.TOOL, tool.getRaiseTool()); + NotificationManager.sendPlayerInformation(player, NotificationType.TOOL, tool.getRaiseToolLocaleKey()); SoundManager.sendSound(player, player.getLocation(), SoundType.TOOL_READY); } - setToolPreparationMode(tool, true); + setAbilityToolPrime(tool, true); new ToolLowerTask(mmoPlayer, tool).runTaskLater(mcMMO.p, 4 * Misc.TICK_CONVERSION_FACTOR); } } @@ -111,8 +110,8 @@ public class SuperAbilityManager { * @param primarySkillType The primarySkillType the ability is based on */ public void checkAbilityActivation(PrimarySkillType primarySkillType) { - ToolType tool = primarySkillType.getTool(); - SuperAbilityType ability = primarySkillType.getAbility(); + AbilityToolType tool = primarySkillType.getTool(); + SuperAbilityType ability = primarySkillType.getSuperAbilityType(); if (getAbilityMode(ability) || !ability.getPermissions(player)) { return; @@ -122,7 +121,7 @@ public class SuperAbilityManager { //Potential problems with this include skills with two super abilities (ie mining) if(!primarySkillType.isSuperAbilityUnlocked(player)) { - int diff = RankUtils.getSuperAbilityUnlockRequirement(primarySkillType.getAbility()) - mmoPlayer.getSkillLevel(primarySkillType); + int diff = RankUtils.getSuperAbilityUnlockRequirement(primarySkillType.getSuperAbilityType()) - mmoPlayer.getSkillLevel(primarySkillType); //Inform the player they are not yet skilled enough NotificationManager.sendPlayerInformation(player, NotificationType.ABILITY_COOLDOWN, "Skills.AbilityGateRequirementFail", String.valueOf(diff), primarySkillType.getName()); @@ -182,7 +181,7 @@ public class SuperAbilityManager { SkillUtils.handleAbilitySpeedIncrease(player); } - setToolPreparationMode(tool, false); + setAbilityToolPrime(tool, false); new AbilityDisableTask(mmoPlayer, ability).runTaskLater(mcMMO.p, ticks * Misc.TICK_CONVERSION_FACTOR); } @@ -207,7 +206,7 @@ public class SuperAbilityManager { * @return true if the ability is enabled, false otherwise */ public boolean getAbilityMode(SuperAbilityType ability) { - return abilityMode.get(ability); + return superAbilityState.get(ability); } /** @@ -217,7 +216,7 @@ public class SuperAbilityManager { * @param isActive True if the ability is active, false otherwise */ public void setAbilityMode(SuperAbilityType ability, boolean isActive) { - abilityMode.put(ability, isActive); + superAbilityState.put(ability, isActive); } /** @@ -241,13 +240,13 @@ public class SuperAbilityManager { } /** - * Get the current prep mode of a tool. + * Whether or not a tool is primed * - * @param tool Tool to get the mode for - * @return true if the tool is prepped, false otherwise + * @param abilityToolType ability tool to check + * @return true if the abilityToolType is primed, false otherwise */ - public boolean getToolPreparationMode(ToolType tool) { - return toolMode.get(tool); + public boolean isAbilityToolPrimed(AbilityToolType abilityToolType) { + return toolMode.get(abilityToolType); } public boolean getAbilityActivationPermission() { @@ -265,20 +264,20 @@ public class SuperAbilityManager { /** * Reset the prep modes of all tools. */ - public void resetToolPrepMode() { - for (ToolType tool : ToolType.values()) { - setToolPreparationMode(tool, false); + public void unprimeAllAbilityTools() { + for (AbilityToolType abilityToolType : AbilityToolType.values()) { + setAbilityToolPrime(abilityToolType, false); } } /** - * Set the current prep mode of a tool. + * Set the current prep mode of a abilityToolType. * - * @param tool Tool to set the mode for - * @param isPrepared true if the tool should be prepped, false otherwise + * @param abilityToolType Tool to set the mode for + * @param isPrepared true if the abilityToolType should be prepped, false otherwise */ - public void setToolPreparationMode(ToolType tool, boolean isPrepared) { - toolMode.put(tool, isPrepared); + public void setAbilityToolPrime(AbilityToolType abilityToolType, boolean isPrepared) { + toolMode.put(abilityToolType, isPrepared); } /** 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 0bce7f5b5..692ad3d88 100644 --- a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java +++ b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardManager.java @@ -89,8 +89,8 @@ public class ScoreboardManager { // 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().getLocalizedName())); + if (type.getSuperAbilityType() != null) { + abilityLabelBuilder.put(type.getSuperAbilityType(), getShortenedName(colors.get(i) + type.getSuperAbilityType().getLocalizedName())); if (type == PrimarySkillType.MINING) { abilityLabelBuilder.put(SuperAbilityType.BLAST_MINING, getShortenedName(colors.get(i) + SuperAbilityType.BLAST_MINING.getLocalizedName())); @@ -111,8 +111,8 @@ public class ScoreboardManager { // Include child skills skillLabelBuilder.put(type, getShortenedName(ChatColor.GREEN + type.getName())); - if (type.getAbility() != null) { - abilityLabelBuilder.put(type.getAbility(), formatAbility(type.getAbility().getLocalizedName())); + if (type.getSuperAbilityType() != null) { + abilityLabelBuilder.put(type.getSuperAbilityType(), formatAbility(type.getSuperAbilityType().getLocalizedName())); if (type == PrimarySkillType.MINING) { abilityLabelBuilder.put(SuperAbilityType.BLAST_MINING, formatAbility(SuperAbilityType.BLAST_MINING.getLocalizedName())); 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 5908f3ea0..f58f7926c 100644 --- a/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java +++ b/src/main/java/com/gmail/nossr50/util/scoreboards/ScoreboardWrapper.java @@ -462,7 +462,7 @@ public class ScoreboardWrapper { sidebarObjective.getScore(ScoreboardManager.LABEL_LEVEL).setScore(mcMMOPlayer.getSkillLevel(targetSkill)); - if (targetSkill.getAbility() != null) { + if (targetSkill.getSuperAbilityType() != null) { boolean stopUpdating; if (targetSkill == PrimarySkillType.MINING) { @@ -478,7 +478,7 @@ public class ScoreboardWrapper { stopUpdating = (secondsSB == 0 && secondsBM == 0); } else { - SuperAbilityType ability = targetSkill.getAbility(); + SuperAbilityType ability = targetSkill.getSuperAbilityType(); Score cooldown = sidebarObjective.getScore(ScoreboardManager.abilityLabelsSkill.get(ability)); int seconds = Math.max(mcMMOPlayer.calculateTimeRemaining(ability), 0); 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 809296a4c..bb22911cf 100644 --- a/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java +++ b/src/main/java/com/gmail/nossr50/util/skills/SkillUtils.java @@ -79,7 +79,7 @@ public class SkillUtils { */ public static String[] calculateLengthDisplayValues(Player player, float skillValue, PrimarySkillType skill) { - int maxLength = skill.getAbility().getMaxLength(); + int maxLength = skill.getSuperAbilityType().getMaxLength(); int abilityLengthVar = AdvancedConfig.getInstance().getAbilityLength(); int abilityLengthCap = AdvancedConfig.getInstance().getAbilityLengthCap(); @@ -214,10 +214,10 @@ public class SkillUtils { if(abilityLengthCap > 0) { ticks = PerksUtils.handleActivationPerks(player, Math.min(abilityLengthCap, 2 + (mcMMOPlayer.getSkillLevel(skill) / abilityLengthVar)), - skill.getAbility().getMaxLength()) * Misc.TICK_CONVERSION_FACTOR; + skill.getSuperAbilityType().getMaxLength()) * Misc.TICK_CONVERSION_FACTOR; } else { ticks = PerksUtils.handleActivationPerks(player, 2 + ((mcMMOPlayer.getSkillLevel(skill)) / abilityLengthVar), - skill.getAbility().getMaxLength()) * Misc.TICK_CONVERSION_FACTOR; + skill.getSuperAbilityType().getMaxLength()) * Misc.TICK_CONVERSION_FACTOR; } PotionEffect abilityBuff = new PotionEffect(PotionEffectType.FAST_DIGGING, duration + ticks, amplifier + 10);