diff --git a/Changelog.txt b/Changelog.txt index aa3731851..ba65fe325 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -14,6 +14,7 @@ Version 2.2.0 Repair config has been rewritten and expanded to support much more complex settings Fixed a bug where salvage anvil noises wouldn't play for a player that lacked repair permissions nodes Sharpened Claws now has settings to change its damage for PVE or PVP instead of a flat setting that applied to both + Gore tick length is now customizable Removed the following Repair/Salvage permissions mcmmo.ability.repair.stonerepair mcmmo.ability.repair.stringrepair 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 0ea895d2b..1ad339366 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/AcrobaticsCommand.java @@ -35,8 +35,8 @@ public class AcrobaticsCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canDodge = canUseSubskill(player, SubSkillType.ACROBATICS_DODGE); - canRoll = canUseSubskill(player, SubSkillType.ACROBATICS_ROLL); + canDodge = canUseSubSkill(player, SubSkillType.ACROBATICS_DODGE); + canRoll = canUseSubSkill(player, SubSkillType.ACROBATICS_ROLL); } @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 a36ae5ae3..c0c24ab1d 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/ArcheryCommand.java @@ -49,9 +49,9 @@ public class ArcheryCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canSkillShot = canUseSubskill(player, SubSkillType.ARCHERY_SKILL_SHOT); - canDaze = canUseSubskill(player, SubSkillType.ARCHERY_DAZE); - canRetrieve = canUseSubskill(player, SubSkillType.ARCHERY_ARROW_RETRIEVAL); + canSkillShot = canUseSubSkill(player, SubSkillType.ARCHERY_SKILL_SHOT); + canDaze = canUseSubSkill(player, SubSkillType.ARCHERY_DAZE); + canRetrieve = canUseSubSkill(player, SubSkillType.ARCHERY_ARROW_RETRIEVAL); } @Override @@ -72,7 +72,7 @@ public class ArcheryCommand extends SkillCommand { messages.add(getStatMessage(SubSkillType.ARCHERY_SKILL_SHOT, skillShotBonus)); } - if (canUseSubskill(player, SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK)) { + if (canUseSubSkill(player, SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK)) { messages.add(getStatMessage(SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK, <<<<<<< HEAD String.valueOf(pluginRef.getCombatTools().getLimitBreakDamage(player, SubSkillType.ARCHERY_ARCHERY_LIMIT_BREAK)))); 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 c560545b0..5af46069a 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/AxesCommand.java @@ -58,10 +58,10 @@ public class AxesCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { canSkullSplitter = pluginRef.getPermissionTools().skullSplitter(player) && pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.AXES_SKULL_SPLITTER); - canCritical = canUseSubskill(player, SubSkillType.AXES_CRITICAL_STRIKES); - canAxeMastery = canUseSubskill(player, SubSkillType.AXES_AXE_MASTERY); - canImpact = canUseSubskill(player, SubSkillType.AXES_ARMOR_IMPACT); - canGreaterImpact = canUseSubskill(player, SubSkillType.AXES_GREATER_IMPACT); + canCritical = canUseSubSkill(player, SubSkillType.AXES_CRITICAL_STRIKES); + canAxeMastery = canUseSubSkill(player, SubSkillType.AXES_AXE_MASTERY); + canImpact = canUseSubSkill(player, SubSkillType.AXES_ARMOR_IMPACT); + canGreaterImpact = canUseSubSkill(player, SubSkillType.AXES_GREATER_IMPACT); } @Override @@ -90,7 +90,7 @@ public class AxesCommand extends SkillCommand { + (hasEndurance ? pluginRef.getLocaleManager().getString("Perks.ActivationTime.Bonus", skullSplitterLengthEndurance) : "")); } - if (canUseSubskill(player, SubSkillType.AXES_AXES_LIMIT_BREAK)) { + if (canUseSubSkill(player, SubSkillType.AXES_AXES_LIMIT_BREAK)) { messages.add(getStatMessage(SubSkillType.AXES_AXES_LIMIT_BREAK, <<<<<<< HEAD String.valueOf(pluginRef.getCombatTools().getLimitBreakDamage(player, SubSkillType.AXES_AXES_LIMIT_BREAK)))); 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 308e7ee2e..15cd3ebed 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/ExcavationCommand.java @@ -34,7 +34,7 @@ public class ExcavationCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { canGigaDrill = pluginRef.getPermissionTools().gigaDrillBreaker(player) && pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.EXCAVATION_GIGA_DRILL_BREAKER); - canTreasureHunt = canUseSubskill(player, SubSkillType.EXCAVATION_ARCHAEOLOGY); + canTreasureHunt = canUseSubSkill(player, SubSkillType.EXCAVATION_ARCHAEOLOGY); } @Override @@ -50,7 +50,7 @@ public class ExcavationCommand extends SkillCommand { //messages.add(pluginRef.getLocaleManager().getString("Excavation.Effect.Length", gigaDrillBreakerLength) + (hasEndurance ? pluginRef.getLocaleManager().getString("Perks.ActivationTime.Bonus", gigaDrillBreakerLengthEndurance) : "")); } - if(canUseSubskill(player, SubSkillType.EXCAVATION_ARCHAEOLOGY)) { + if(canUseSubSkill(player, SubSkillType.EXCAVATION_ARCHAEOLOGY)) { messages.add(getStatMessage(false, false, SubSkillType.EXCAVATION_ARCHAEOLOGY, percent.format(excavationManager.getArchaelogyExperienceOrbChance() / 100.0D))); messages.add(getStatMessage(true, false, SubSkillType.EXCAVATION_ARCHAEOLOGY, 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 26f2fac80..83c430e4d 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/FishingCommand.java @@ -118,13 +118,13 @@ public class FishingCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canTreasureHunt = canUseSubskill(player, SubSkillType.FISHING_TREASURE_HUNTER); - canMagicHunt = canUseSubskill(player, SubSkillType.FISHING_MAGIC_HUNTER) && canUseSubskill(player, SubSkillType.FISHING_TREASURE_HUNTER); - canShake = canUseSubskill(player, SubSkillType.FISHING_SHAKE); - canFishermansDiet = canUseSubskill(player, SubSkillType.FISHING_FISHERMANS_DIET); - canMasterAngler = canUseSubskill(player, SubSkillType.FISHING_MASTER_ANGLER); - canIceFish = canUseSubskill(player, SubSkillType.FISHING_ICE_FISHING); - canInnerPeace = canUseSubskill(player, SubSkillType.FISHING_INNER_PEACE); + canTreasureHunt = canUseSubSkill(player, SubSkillType.FISHING_TREASURE_HUNTER); + canMagicHunt = canUseSubSkill(player, SubSkillType.FISHING_MAGIC_HUNTER) && canUseSubSkill(player, SubSkillType.FISHING_TREASURE_HUNTER); + canShake = canUseSubSkill(player, SubSkillType.FISHING_SHAKE); + canFishermansDiet = canUseSubSkill(player, SubSkillType.FISHING_FISHERMANS_DIET); + canMasterAngler = canUseSubSkill(player, SubSkillType.FISHING_MASTER_ANGLER); + canIceFish = canUseSubSkill(player, SubSkillType.FISHING_ICE_FISHING); + canInnerPeace = canUseSubSkill(player, SubSkillType.FISHING_INNER_PEACE); } @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 98df0ded0..c0b3893ed 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java @@ -84,13 +84,13 @@ public class HerbalismCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - hasHylianLuck = canUseSubskill(player, SubSkillType.HERBALISM_HYLIAN_LUCK); + hasHylianLuck = canUseSubSkill(player, SubSkillType.HERBALISM_HYLIAN_LUCK); canGreenTerra = pluginRef.getPermissionTools().greenTerra(player); canGreenThumbPlants = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.HERBALISM_GREEN_THUMB) && (pluginRef.getPermissionTools().greenThumbPlant(player, Material.WHEAT) || pluginRef.getPermissionTools().greenThumbPlant(player, Material.CARROT) || pluginRef.getPermissionTools().greenThumbPlant(player, Material.POTATO) || pluginRef.getPermissionTools().greenThumbPlant(player, Material.BEETROOT) || pluginRef.getPermissionTools().greenThumbPlant(player, Material.NETHER_WART) || pluginRef.getPermissionTools().greenThumbPlant(player, Material.COCOA)); canGreenThumbBlocks = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.HERBALISM_GREEN_THUMB) && (pluginRef.getPermissionTools().greenThumbBlock(player, Material.DIRT) || pluginRef.getPermissionTools().greenThumbBlock(player, Material.COBBLESTONE) || pluginRef.getPermissionTools().greenThumbBlock(player, Material.COBBLESTONE_WALL) || pluginRef.getPermissionTools().greenThumbBlock(player, Material.STONE_BRICKS)); - canFarmersDiet = canUseSubskill(player, SubSkillType.HERBALISM_FARMERS_DIET); - canDoubleDrop = canUseSubskill(player, SubSkillType.HERBALISM_DOUBLE_DROPS); - canShroomThumb = canUseSubskill(player, SubSkillType.HERBALISM_SHROOM_THUMB); + canFarmersDiet = canUseSubSkill(player, SubSkillType.HERBALISM_FARMERS_DIET); + canDoubleDrop = canUseSubSkill(player, SubSkillType.HERBALISM_DOUBLE_DROPS); + canShroomThumb = canUseSubSkill(player, SubSkillType.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 eea3b5fad..e9cb7b329 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/MiningCommand.java @@ -67,7 +67,7 @@ public class MiningCommand extends SkillCommand { canBiggerBombs = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.MINING_BIGGER_BOMBS) && pluginRef.getPermissionTools().biggerBombs(player); canBlast = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.MINING_BLAST_MINING) && pluginRef.getPermissionTools().remoteDetonation(player); canDemoExpert = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.MINING_DEMOLITIONS_EXPERTISE) && pluginRef.getPermissionTools().demolitionsExpertise(player); - canDoubleDrop = canUseSubskill(player, SubSkillType.MINING_DOUBLE_DROPS); + canDoubleDrop = canUseSubSkill(player, SubSkillType.MINING_DOUBLE_DROPS); canSuperBreaker = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.MINING_SUPER_BREAKER) && pluginRef.getPermissionTools().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 afea29b3c..802e4568a 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/RepairCommand.java @@ -70,9 +70,9 @@ public class RepairCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canSuperRepair = canUseSubskill(player, SubSkillType.REPAIR_SUPER_REPAIR); - canMasterRepair = canUseSubskill(player, SubSkillType.REPAIR_REPAIR_MASTERY); - canArcaneForge = canUseSubskill(player, SubSkillType.REPAIR_ARCANE_FORGING); + canSuperRepair = canUseSubSkill(player, SubSkillType.REPAIR_SUPER_REPAIR); + canMasterRepair = canUseSubSkill(player, SubSkillType.REPAIR_REPAIR_MASTERY); + canArcaneForge = canUseSubSkill(player, SubSkillType.REPAIR_ARCANE_FORGING); // canRepairDiamond = Permissions.repairMaterialType(player, ItemMaterialCategory.DIAMOND); // canRepairGold = Permissions.repairMaterialType(player, ItemMaterialCategory.GOLD); // canRepairIron = Permissions.repairMaterialType(player, ItemMaterialCategory.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 a92d62342..0cc8e43a4 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SalvageCommand.java @@ -27,8 +27,8 @@ public class SalvageCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canScrapCollector = canUseSubskill(player, SubSkillType.SALVAGE_SCRAP_COLLECTOR); - canArcaneSalvage = canUseSubskill(player, SubSkillType.SALVAGE_ARCANE_SALVAGE); + canScrapCollector = canUseSubSkill(player, SubSkillType.SALVAGE_SCRAP_COLLECTOR); + canArcaneSalvage = canUseSubSkill(player, SubSkillType.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 f7df74420..47c20e1db 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SkillCommand.java @@ -230,9 +230,8 @@ public abstract class SkillCommand implements TabExecutor { } } -<<<<<<< HEAD protected abstract void dataCalculations(Player player, double skillValue); -======= + protected String getLimitBreakDescriptionParameter() { if(AdvancedConfig.getInstance().canApplyLimitBreakPVE()) { return "(PVP/PVE)"; @@ -241,8 +240,6 @@ public abstract class SkillCommand implements TabExecutor { } } - protected abstract void dataCalculations(Player player, float skillValue); ->>>>>>> 308e3a4b1f46e9e3de28d6d540dd055a540ed4d5 protected abstract void permissionsCheck(Player player); @@ -259,7 +256,7 @@ public abstract class SkillCommand implements TabExecutor { * @param subSkillType target subskill * @return true if the player has permission and has the skill unlocked */ - protected boolean canUseSubskill(Player player, SubSkillType subSkillType) { + protected boolean canUseSubSkill(Player player, SubSkillType subSkillType) { return pluginRef.getPermissionTools().isSubSkillEnabled(player, subSkillType) && pluginRef.getRankTools().hasUnlockedSubskill(player, subSkillType); } } 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 56f81f7f5..d4a639276 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SmeltingCommand.java @@ -49,8 +49,8 @@ public class SmeltingCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canFuelEfficiency = canUseSubskill(player, SubSkillType.SMELTING_FUEL_EFFICIENCY); - canSecondSmelt = canUseSubskill(player, SubSkillType.SMELTING_SECOND_SMELT); + canFuelEfficiency = canUseSubSkill(player, SubSkillType.SMELTING_FUEL_EFFICIENCY); + canSecondSmelt = canUseSubSkill(player, SubSkillType.SMELTING_SECOND_SMELT); //canFluxMine = canUseSubskill(player, SubSkillType.SMELTING_FLUX_MINING); canUnderstandTheArt = pluginRef.getPermissionTools().vanillaXpBoost(player, skill) && pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.SMELTING_UNDERSTANDING_THE_ART); } 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 d2c239eb9..71790ac51 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/SwordsCommand.java @@ -54,8 +54,8 @@ public class SwordsCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canBleed = canUseSubskill(player, SubSkillType.SWORDS_RUPTURE); - canCounter = canUseSubskill(player, SubSkillType.SWORDS_COUNTER_ATTACK); + canBleed = canUseSubSkill(player, SubSkillType.SWORDS_RUPTURE); + canCounter = canUseSubSkill(player, SubSkillType.SWORDS_COUNTER_ATTACK); canSerratedStrike = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.SWORDS_SERRATED_STRIKES) && pluginRef.getPermissionTools().serratedStrikes(player); } @@ -91,12 +91,12 @@ public class SwordsCommand extends SkillCommand { + (hasEndurance ? pluginRef.getLocaleManager().getString("Perks.ActivationTime.Bonus", serratedStrikesLengthEndurance) : "")); } - if (canUseSubskill(player, SubSkillType.SWORDS_STAB)) { + if (canUseSubSkill(player, SubSkillType.SWORDS_STAB)) { messages.add(getStatMessage(SubSkillType.SWORDS_STAB, String.valueOf(pluginRef.getUserManager().getPlayer(player).getSwordsManager().getStabDamage()))); } - if (canUseSubskill(player, SubSkillType.SWORDS_SWORDS_LIMIT_BREAK)) { + if (canUseSubSkill(player, SubSkillType.SWORDS_SWORDS_LIMIT_BREAK)) { messages.add(getStatMessage(SubSkillType.SWORDS_SWORDS_LIMIT_BREAK, <<<<<<< HEAD String.valueOf(pluginRef.getCombatTools().getLimitBreakDamage(player, SubSkillType.SWORDS_SWORDS_LIMIT_BREAK)))); 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 b7c27f45a..ddf487361 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/TamingCommand.java @@ -3,7 +3,6 @@ package com.gmail.nossr50.commands.skills; import com.gmail.nossr50.datatypes.skills.PrimarySkillType; import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.mcMMO; -import com.gmail.nossr50.skills.taming.Taming; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; @@ -40,15 +39,15 @@ public class TamingCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { - canBeastLore = canUseSubskill(player, SubSkillType.TAMING_BEAST_LORE); + canBeastLore = canUseSubSkill(player, SubSkillType.TAMING_BEAST_LORE); canCallWild = pluginRef.getPermissionTools().callOfTheWild(player, EntityType.HORSE) || pluginRef.getPermissionTools().callOfTheWild(player, EntityType.WOLF) || pluginRef.getPermissionTools().callOfTheWild(player, EntityType.OCELOT); - canEnvironmentallyAware = canUseSubskill(player, SubSkillType.TAMING_ENVIRONMENTALLY_AWARE); - canFastFood = canUseSubskill(player, SubSkillType.TAMING_FAST_FOOD_SERVICE); - canGore = canUseSubskill(player, SubSkillType.TAMING_GORE); - canSharpenedClaws = canUseSubskill(player, SubSkillType.TAMING_SHARPENED_CLAWS); - canShockProof = canUseSubskill(player, SubSkillType.TAMING_SHOCK_PROOF); - canThickFur = canUseSubskill(player, SubSkillType.TAMING_THICK_FUR); - canHolyHound = canUseSubskill(player, SubSkillType.TAMING_HOLY_HOUND); + canEnvironmentallyAware = canUseSubSkill(player, SubSkillType.TAMING_ENVIRONMENTALLY_AWARE); + canFastFood = canUseSubSkill(player, SubSkillType.TAMING_FAST_FOOD_SERVICE); + canGore = canUseSubSkill(player, SubSkillType.TAMING_GORE); + canSharpenedClaws = canUseSubSkill(player, SubSkillType.TAMING_SHARPENED_CLAWS); + canShockProof = canUseSubSkill(player, SubSkillType.TAMING_SHOCK_PROOF); + canThickFur = canUseSubSkill(player, SubSkillType.TAMING_THICK_FUR); + canHolyHound = canUseSubSkill(player, SubSkillType.TAMING_HOLY_HOUND); } @Override @@ -63,7 +62,7 @@ public class TamingCommand extends SkillCommand { messages.add(pluginRef.getLocaleManager().getString("Ability.Generic.Template", pluginRef.getLocaleManager().getString("Taming.Ability.Bonus.8"), pluginRef.getLocaleManager().getString("Taming.Ability.Bonus.9", - percent.format(Taming.getInstance().getFastFoodServiceActivationChance() / 100D)))); + percent.format(pluginRef.getDynamicSettingsManager().getSkillStaticChance(SubSkillType.TAMING_FAST_FOOD_SERVICE) / 100D)))); } if (canGore) { @@ -82,21 +81,21 @@ public class TamingCommand extends SkillCommand { messages.add(pluginRef.getLocaleManager().getString("Ability.Generic.Template", pluginRef.getLocaleManager().getString("Taming.Ability.Bonus.6"), pluginRef.getLocaleManager().getString("Taming.Ability.Bonus.7", - Taming.getInstance().getSharpenedClawsBonusDamage()))); + pluginRef.getDynamicSettingsManager().getSkillBehaviourManager().getTamingBehaviour().getSharpenedClawsBonusDamage(true)))); } if (canShockProof) { messages.add(pluginRef.getLocaleManager().getString("Ability.Generic.Template", pluginRef.getLocaleManager().getString("Taming.Ability.Bonus.4"), pluginRef.getLocaleManager().getString("Taming.Ability.Bonus.5", - Taming.getInstance().getShockProofModifier()))); + pluginRef.getDynamicSettingsManager().getSkillBehaviourManager().getTamingBehaviour().getShockProofModifier()))); } if (canThickFur) { messages.add(pluginRef.getLocaleManager().getString("Ability.Generic.Template", pluginRef.getLocaleManager().getString("Taming.Ability.Bonus.2"), pluginRef.getLocaleManager().getString("Taming.Ability.Bonus.3", - Taming.getInstance().getThickFurModifier()))); + pluginRef.getDynamicSettingsManager().getSkillBehaviourManager().getTamingBehaviour().getThickFurModifier()))); } return messages; 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 e12500fae..8c493628d 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/UnarmedCommand.java @@ -69,10 +69,10 @@ public class UnarmedCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { canBerserk = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.UNARMED_BERSERK) && pluginRef.getPermissionTools().berserk(player); - canIronArm = canUseSubskill(player, SubSkillType.UNARMED_IRON_ARM_STYLE); - canDeflect = canUseSubskill(player, SubSkillType.UNARMED_ARROW_DEFLECT); - canDisarm = canUseSubskill(player, SubSkillType.UNARMED_DISARM); - canIronGrip = canUseSubskill(player, SubSkillType.UNARMED_IRON_GRIP); + canIronArm = canUseSubSkill(player, SubSkillType.UNARMED_IRON_ARM_STYLE); + canDeflect = canUseSubSkill(player, SubSkillType.UNARMED_ARROW_DEFLECT); + canDisarm = canUseSubSkill(player, SubSkillType.UNARMED_DISARM); + canIronGrip = canUseSubSkill(player, SubSkillType.UNARMED_IRON_GRIP); // TODO: Apparently we forgot about block cracker? } @@ -108,7 +108,7 @@ public class UnarmedCommand extends SkillCommand { //messages.add(pluginRef.getLocaleManager().getString("Unarmed.Ability.Chance.IronGrip", ironGripChance) + (isLucky ? pluginRef.getLocaleManager().getString("Perks.Lucky.Bonus", ironGripChanceLucky) : "")); } - if (canUseSubskill(player, SubSkillType.UNARMED_UNARMED_LIMIT_BREAK)) { + if (canUseSubSkill(player, SubSkillType.UNARMED_UNARMED_LIMIT_BREAK)) { messages.add(getStatMessage(SubSkillType.UNARMED_UNARMED_LIMIT_BREAK, <<<<<<< HEAD String.valueOf(pluginRef.getCombatTools().getLimitBreakDamage(player, SubSkillType.UNARMED_UNARMED_LIMIT_BREAK)))); 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 3751522d0..3e59a45e8 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/WoodcuttingCommand.java @@ -50,8 +50,8 @@ public class WoodcuttingCommand extends SkillCommand { @Override protected void permissionsCheck(Player player) { canTreeFell = pluginRef.getRankTools().hasUnlockedSubskill(player, SubSkillType.WOODCUTTING_TREE_FELLER) && pluginRef.getPermissionTools().treeFeller(player); - canDoubleDrop = canUseSubskill(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) && pluginRef.getRankTools().getRank(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) >= 1; - canLeafBlow = canUseSubskill(player, SubSkillType.WOODCUTTING_LEAF_BLOWER); + canDoubleDrop = canUseSubSkill(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) && pluginRef.getRankTools().getRank(player, SubSkillType.WOODCUTTING_HARVEST_LUMBER) >= 1; + canLeafBlow = canUseSubSkill(player, SubSkillType.WOODCUTTING_LEAF_BLOWER); /*canSplinter = canUseSubskill(player, SubSkillType.WOODCUTTING_SPLINTER); canBarkSurgeon = canUseSubskill(player, SubSkillType.WOODCUTTING_BARK_SURGEON); canNaturesBounty = canUseSubskill(player, SubSkillType.WOODCUTTING_NATURES_BOUNTY);*/ diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/taming/ConfigTamingShockProof.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/taming/ConfigTamingShockProof.java index 6d11e1504..97a844542 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/taming/ConfigTamingShockProof.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/taming/ConfigTamingShockProof.java @@ -1,7 +1,17 @@ package com.gmail.nossr50.config.hocon.skills.taming; +import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @ConfigSerializable public class ConfigTamingShockProof { + public static final double DEFAULT_SHOCKPROOF_MOD = 6.0D; + + @Setting(value = "Damage-Reduction-Modifier", comment = "Damage modified by activation of shock proof will be divided by this value" + + "\nDefault value: "+DEFAULT_SHOCKPROOF_MOD) + private double shockProofModifier = DEFAULT_SHOCKPROOF_MOD; + + public double getShockProofModifier() { + return shockProofModifier; + } } diff --git a/src/main/java/com/gmail/nossr50/config/hocon/skills/taming/ConfigTamingThickFur.java b/src/main/java/com/gmail/nossr50/config/hocon/skills/taming/ConfigTamingThickFur.java index 88c3fb4dd..fe0dcd7c0 100644 --- a/src/main/java/com/gmail/nossr50/config/hocon/skills/taming/ConfigTamingThickFur.java +++ b/src/main/java/com/gmail/nossr50/config/hocon/skills/taming/ConfigTamingThickFur.java @@ -1,7 +1,17 @@ package com.gmail.nossr50.config.hocon.skills.taming; +import ninja.leaping.configurate.objectmapping.Setting; import ninja.leaping.configurate.objectmapping.serialize.ConfigSerializable; @ConfigSerializable public class ConfigTamingThickFur { + public static final double DEFAULT_THICKFUR_MOD = 6.0D; + + @Setting(value = "Damage-Reduction-Modifier", comment = "Damage modified by activation of thick fur will be divided by this value" + + "\nDefault value: "+ DEFAULT_THICKFUR_MOD) + private double thickFurDamageModifier = DEFAULT_THICKFUR_MOD; + + public double getThickFurDamageModifier() { + return thickFurDamageModifier; + } } diff --git a/src/main/java/com/gmail/nossr50/core/DynamicSettingsManager.java b/src/main/java/com/gmail/nossr50/core/DynamicSettingsManager.java index dbcb8e0a6..6b202df56 100644 --- a/src/main/java/com/gmail/nossr50/core/DynamicSettingsManager.java +++ b/src/main/java/com/gmail/nossr50/core/DynamicSettingsManager.java @@ -188,6 +188,11 @@ public class DynamicSettingsManager { return skillPropertiesManager.getMaxChance(subSkillType); } + //TODO: Doesn't allow for per rank changes in static chance + public double getSkillStaticChance(SubSkillType subSkillType) { + return skillPropertiesManager.getStaticChance(subSkillType); + } + public SkillPropertiesManager getSkillPropertiesManager() { return skillPropertiesManager; } diff --git a/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java b/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java index 2cf4bdceb..7e1df84c9 100644 --- a/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java +++ b/src/main/java/com/gmail/nossr50/core/SkillPropertiesManager.java @@ -19,7 +19,7 @@ public class SkillPropertiesManager { private final mcMMO pluginRef; private HashMap maxChanceMap; - private HashMap staticActivationChanceMap; + private HashMap staticActivationChanceMap; //TODO: Doesn't allow for per rank changes private HashMap maxBonusLevelMap; private HashMap maxBonusMap; diff --git a/src/main/java/com/gmail/nossr50/datatypes/skills/behaviours/TamingBehaviour.java b/src/main/java/com/gmail/nossr50/datatypes/skills/behaviours/TamingBehaviour.java index 16965eeaf..cc50d7030 100644 --- a/src/main/java/com/gmail/nossr50/datatypes/skills/behaviours/TamingBehaviour.java +++ b/src/main/java/com/gmail/nossr50/datatypes/skills/behaviours/TamingBehaviour.java @@ -1,8 +1,11 @@ package com.gmail.nossr50.datatypes.skills.behaviours; +import com.gmail.nossr50.datatypes.skills.SubSkillType; import com.gmail.nossr50.datatypes.skills.subskills.taming.CallOfTheWildType; import com.gmail.nossr50.datatypes.skills.subskills.taming.TamingSummon; import com.gmail.nossr50.mcMMO; +import org.bukkit.EntityEffect; +import org.bukkit.entity.*; import java.util.HashMap; @@ -26,4 +29,76 @@ public class TamingBehaviour { return pluginRef.getConfigManager().getConfigTaming().getCallOfTheWild().getCOTWSummon(callOfTheWildType); } + public double getFastFoodServiceActivationChance() { + return pluginRef.getDynamicSettingsManager().getSkillStaticChance(SubSkillType.TAMING_FAST_FOOD_SERVICE); + } + + public int getGoreBleedTicks() { + return pluginRef.getConfigManager().getConfigTaming().getGore().getGoreBleedTicks(); + } + + public double getGoreModifier() { + return pluginRef.getConfigManager().getConfigTaming().getGore().getGoreMofifier(); + } + + public double getSharpenedClawsBonusDamage(boolean PVE) { + if(PVE) { + return pluginRef.getConfigManager().getConfigTaming().getSharpenedClaws().getBonusDamage().getPVEModifier(); + } else { + return pluginRef.getConfigManager().getConfigTaming().getSharpenedClaws().getBonusDamage().getPVEModifier(); + } + } + + public double getShockProofModifier() { + return pluginRef.getConfigManager().getConfigTaming().getShockProof().getShockProofModifier(); + } + + public double getThickFurModifier() { + return pluginRef.getConfigManager().getConfigTaming().getThickFur().getThickFurDamageModifier(); + } + + public boolean canPreventDamage(Tameable pet, AnimalTamer owner) { + return pet.isTamed() && owner instanceof Player && pet instanceof Wolf; + } + + public double processThickFur(Wolf wolf, double damage) { + wolf.playEffect(EntityEffect.WOLF_SHAKE); + return damage / getThickFurModifier(); + } + + public void processThickFurFire(Wolf wolf) { + wolf.playEffect(EntityEffect.WOLF_SMOKE); + wolf.setFireTicks(0); + } + + public double processShockProof(Wolf wolf, double damage) { + wolf.playEffect(EntityEffect.WOLF_SHAKE); + return damage / getShockProofModifier(); + } + + public void processHolyHound(Wolf wolf, double damage) { + double modifiedHealth = Math.min(wolf.getHealth() + damage, wolf.getMaxHealth()); + + wolf.setHealth(modifiedHealth); + wolf.playEffect(EntityEffect.WOLF_HEARTS); + } + + public String getCallOfTheWildFailureMessage(EntityType type) { + switch (type) { + case OCELOT: + return "Taming.Summon.Fail.Ocelot"; + + case WOLF: + return "Taming.Summon.Fail.Wolf"; + + case HORSE: + return "Taming.Summon.Fail.Horse"; + + default: + return ""; + } + } + + + } diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index 6aa6895bc..03799ceb6 100644 --- a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java @@ -9,7 +9,6 @@ import com.gmail.nossr50.events.fake.FakeEntityDamageEvent; import com.gmail.nossr50.events.fake.FakeEntityTameEvent; import com.gmail.nossr50.mcMMO; import com.gmail.nossr50.skills.mining.MiningManager; -import com.gmail.nossr50.skills.taming.Taming; import com.gmail.nossr50.skills.taming.TamingManager; import com.gmail.nossr50.skills.unarmed.UnarmedManager; import com.gmail.nossr50.util.Misc; @@ -533,7 +532,7 @@ public class EntityListener implements Listener { } } - if (Taming.getInstance().canPreventDamage(pet, owner)) { + if (pluginRef.getDynamicSettingsManager().getSkillBehaviourManager().getTamingBehaviour().canPreventDamage(pet, owner)) { Player player = (Player) owner; Wolf wolf = (Wolf) pet; @@ -562,7 +561,7 @@ public class EntityListener implements Listener { case ENTITY_ATTACK: case PROJECTILE: if (tamingManager.canUseThickFur()) { - event.setDamage(Taming.getInstance().processThickFur(wolf, event.getDamage())); + event.setDamage(pluginRef.getDynamicSettingsManager().getSkillBehaviourManager().getTamingBehaviour().processThickFur(wolf, event.getDamage())); if (event.getFinalDamage() == 0) { event.setCancelled(true); @@ -572,7 +571,7 @@ public class EntityListener implements Listener { case FIRE_TICK: if (tamingManager.canUseThickFur()) { - Taming.getInstance().processThickFurFire(wolf); + pluginRef.getDynamicSettingsManager().getSkillBehaviourManager().getTamingBehaviour().processThickFurFire(wolf); } return; @@ -580,7 +579,7 @@ public class EntityListener implements Listener { case POISON: case WITHER: if (tamingManager.canUseHolyHound()) { - Taming.getInstance().processHolyHound(wolf, event.getDamage()); + pluginRef.getDynamicSettingsManager().getSkillBehaviourManager().getTamingBehaviour().processHolyHound(wolf, event.getDamage()); } return; @@ -588,7 +587,7 @@ public class EntityListener implements Listener { case ENTITY_EXPLOSION: case LIGHTNING: if (tamingManager.canUseShockProof()) { - event.setDamage(Taming.getInstance().processShockProof(wolf, event.getDamage())); + event.setDamage(pluginRef.getDynamicSettingsManager().getSkillBehaviourManager().getTamingBehaviour().processShockProof(wolf, event.getDamage())); if (event.getFinalDamage() == 0) { event.setCancelled(true); diff --git a/src/main/java/com/gmail/nossr50/skills/taming/Taming.java b/src/main/java/com/gmail/nossr50/skills/taming/Taming.java deleted file mode 100644 index bae846531..000000000 --- a/src/main/java/com/gmail/nossr50/skills/taming/Taming.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.gmail.nossr50.skills.taming; - -import com.gmail.nossr50.config.AdvancedConfig; -import org.bukkit.EntityEffect; -import org.bukkit.entity.*; - -public class Taming { - - private static Taming instance; - private double fastFoodServiceActivationChance; - private int goreBleedTicks; - private double goreModifier; - private double sharpenedClawsBonusDamage; - private double shockProofModifier; - private double thickFurModifier; - - public Taming() { - fastFoodServiceActivationChance = AdvancedConfig.getInstance().getFastFoodChance(); - - //Equivalent to rank 1 in Rupture - goreBleedTicks = 2; - goreModifier = AdvancedConfig.getInstance().getGoreModifier(); - - sharpenedClawsBonusDamage = AdvancedConfig.getInstance().getSharpenedClawsBonus(); - - shockProofModifier = AdvancedConfig.getInstance().getShockProofModifier(); - - thickFurModifier = AdvancedConfig.getInstance().getThickFurModifier(); - } - - public static Taming getInstance() { - if (instance == null) - instance = new Taming(); - - return instance; - } - - public double getFastFoodServiceActivationChance() { - return fastFoodServiceActivationChance; - } - - public int getGoreBleedTicks() { - return goreBleedTicks; - } - - public double getGoreModifier() { - return goreModifier; - } - - public double getSharpenedClawsBonusDamage() { - return sharpenedClawsBonusDamage; - } - - public double getShockProofModifier() { - return shockProofModifier; - } - - public double getThickFurModifier() { - return thickFurModifier; - } - - public boolean canPreventDamage(Tameable pet, AnimalTamer owner) { - return pet.isTamed() && owner instanceof Player && pet instanceof Wolf; - } - - public double processThickFur(Wolf wolf, double damage) { - wolf.playEffect(EntityEffect.WOLF_SHAKE); - return damage / thickFurModifier; - } - - public void processThickFurFire(Wolf wolf) { - wolf.playEffect(EntityEffect.WOLF_SMOKE); - wolf.setFireTicks(0); - } - - public double processShockProof(Wolf wolf, double damage) { - wolf.playEffect(EntityEffect.WOLF_SHAKE); - return damage / shockProofModifier; - } - - public void processHolyHound(Wolf wolf, double damage) { - double modifiedHealth = Math.min(wolf.getHealth() + damage, wolf.getMaxHealth()); - - wolf.setHealth(modifiedHealth); - wolf.playEffect(EntityEffect.WOLF_HEARTS); - } - - public String getCallOfTheWildFailureMessage(EntityType type) { - switch (type) { - case OCELOT: - return "Taming.Summon.Fail.Ocelot"; - - case WOLF: - return "Taming.Summon.Fail.Wolf"; - - case HORSE: - return "Taming.Summon.Fail.Horse"; - - default: - return ""; - } - } -} \ No newline at end of file