diff --git a/Changelog.txt b/Changelog.txt index cf8df19e6..b41d1428f 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -13,6 +13,7 @@ Version 1.3.07 + Added a permission node for Archery bonus damage + Added a permission node for Greater Impact ability + Added permission nodes for Treasure & Magic Hunter for Fishing + + Added a permission node for Farmer's Diet + Added config options for enabling/disabling specific double drops + Added automatic zip backup of flatfile database & config files = Fixed bug where the permission node for Impact didn't work 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 16e9cf506..e93b64554 100644 --- a/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java +++ b/src/main/java/com/gmail/nossr50/commands/skills/HerbalismCommand.java @@ -1,5 +1,7 @@ package com.gmail.nossr50.commands.skills; +import java.text.DecimalFormat; + import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -10,6 +12,7 @@ import com.gmail.nossr50.datatypes.PlayerProfile; import com.gmail.nossr50.datatypes.SkillType; import com.gmail.nossr50.locale.LocaleLoader; import com.gmail.nossr50.util.Page; +import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.Users; public class HerbalismCommand implements CommandExecutor { @@ -20,6 +23,12 @@ public class HerbalismCommand implements CommandExecutor { private String farmersDietRank; private String doubleDropChance; + private boolean canGreenTerra; + private boolean canGreenThumbWheat; + private boolean canGreenThumbBlocks; + private boolean canFarmersDiet; + private boolean canDoubleDrop; + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (CommandHelper.noConsoleUsage(sender)) { @@ -35,24 +44,59 @@ public class HerbalismCommand implements CommandExecutor { skillValue = (float) PP.getSkillLevel(SkillType.HERBALISM); dataCalculations(skillValue); + permissionsCheck(player); player.sendMessage(LocaleLoader.getString("Skills.Header", new Object[] { LocaleLoader.getString("Herbalism.SkillName") })); player.sendMessage(LocaleLoader.getString("Commands.XPGain", new Object[] { LocaleLoader.getString("Commands.XPGain.Herbalism") })); player.sendMessage(LocaleLoader.getString("Effects.Level", new Object[] { PP.getSkillLevel(SkillType.HERBALISM), PP.getSkillXpLevel(SkillType.HERBALISM), PP.getXpToLevel(SkillType.HERBALISM) })); - player.sendMessage(LocaleLoader.getString("Skills.Header", new Object[] { LocaleLoader.getString("Effects.Effects") })); - player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.0"), LocaleLoader.getString("Herbalism.Effect.1") })); - player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.2"), LocaleLoader.getString("Herbalism.Effect.3") })); - player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.4"), LocaleLoader.getString("Herbalism.Effect.5") })); - player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.6"), LocaleLoader.getString("Herbalism.Effect.7") })); - player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.8"), LocaleLoader.getString("Herbalism.Effect.9") })); + if (canGreenTerra || canDoubleDrop || canFarmersDiet || canGreenThumbBlocks || canGreenThumbWheat) { + player.sendMessage(LocaleLoader.getString("Skills.Header", new Object[] { LocaleLoader.getString("Effects.Effects") })); + } - player.sendMessage(LocaleLoader.getString("Skills.Header", new Object[] { LocaleLoader.getString("Commands.Stats.Self") })); - player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTe.Length", new Object[] { greenTerraLength })); - player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Chance", new Object[] { greenThumbChance })); - player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Stage", new Object[] { greenThumbStage })); - player.sendMessage(LocaleLoader.getString("Herbalism.Ability.FD", new Object[] { farmersDietRank } )); - player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", new Object[] { doubleDropChance })); + if (canGreenTerra) { + player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.0"), LocaleLoader.getString("Herbalism.Effect.1") })); + } + + if (canGreenThumbWheat) { + player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.2"), LocaleLoader.getString("Herbalism.Effect.3") })); + } + + if (canGreenThumbBlocks) { + player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.4"), LocaleLoader.getString("Herbalism.Effect.5") })); + } + + if (canFarmersDiet) { + player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.6"), LocaleLoader.getString("Herbalism.Effect.7") })); + } + + if (canDoubleDrop) { + player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.8"), LocaleLoader.getString("Herbalism.Effect.9") })); + } + + if (canGreenTerra || canDoubleDrop || canFarmersDiet || canGreenThumbBlocks || canGreenThumbWheat) { + player.sendMessage(LocaleLoader.getString("Skills.Header", new Object[] { LocaleLoader.getString("Commands.Stats.Self") })); + } + + if (canGreenTerra) { + player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTe.Length", new Object[] { greenTerraLength })); + } + + if (canGreenThumbBlocks || canGreenThumbWheat) { + player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Chance", new Object[] { greenThumbChance })); + } + + if (canGreenThumbWheat) { + player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Stage", new Object[] { greenThumbStage })); + } + + if (canFarmersDiet) { + player.sendMessage(LocaleLoader.getString("Herbalism.Ability.FD", new Object[] { farmersDietRank } )); + } + + if (canDoubleDrop) { + player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", new Object[] { doubleDropChance })); + } Page.grabGuidePageForSkill(SkillType.HERBALISM, player, args); @@ -60,49 +104,61 @@ public class HerbalismCommand implements CommandExecutor { } private void dataCalculations(float skillValue) { + DecimalFormat percent = new DecimalFormat("##0.00%"); + greenTerraLength = String.valueOf(2 + ((int) skillValue / 50)); if (skillValue >= 1500) { - greenThumbChance = "100"; + greenThumbChance = "100.00%"; greenThumbStage = "4"; farmersDietRank = "5"; - doubleDropChance = "100"; + doubleDropChance = "100.00%"; } else if (skillValue >= 1000) { - greenThumbChance = String.valueOf(skillValue / 15); + greenThumbChance = percent.format(skillValue / 1500); greenThumbStage = "4"; farmersDietRank = "5"; - doubleDropChance = "100"; + doubleDropChance = "100.00%"; } else if (skillValue >= 800) { - greenThumbChance = String.valueOf(skillValue / 15); + greenThumbChance = percent.format(skillValue / 1500); greenThumbStage = "4"; farmersDietRank = "4"; - doubleDropChance = String.valueOf(skillValue / 10); + doubleDropChance = percent.format(skillValue / 1000); } else if (skillValue >= 600) { - greenThumbChance = String.valueOf(skillValue / 15); + greenThumbChance = percent.format(skillValue / 1500); greenThumbStage = "4"; farmersDietRank = "3"; - doubleDropChance = String.valueOf(skillValue / 10); + doubleDropChance = percent.format(skillValue / 1000); } else if (skillValue >= 400) { - greenThumbChance = String.valueOf(skillValue / 15); + greenThumbChance = percent.format(skillValue / 1500); greenThumbStage = "3"; farmersDietRank = "2"; - doubleDropChance = String.valueOf(skillValue / 10); + doubleDropChance = percent.format(skillValue / 1000); } else if (skillValue >= 200) { - greenThumbChance = String.valueOf(skillValue / 15); + greenThumbChance = percent.format(skillValue / 1500); greenThumbStage = "2"; farmersDietRank = "1"; - doubleDropChance = String.valueOf(skillValue / 10); + doubleDropChance = percent.format(skillValue / 1000); } else { - greenThumbChance = String.valueOf(skillValue / 15); + greenThumbChance = percent.format(skillValue / 1500); greenThumbStage = "1"; farmersDietRank = "1"; - doubleDropChance = String.valueOf(skillValue / 10); + doubleDropChance = percent.format(skillValue / 1000); } } + + private void permissionsCheck(Player player) { + Permissions permInstance = Permissions.getInstance(); + + canGreenTerra = permInstance.greenTerra(player); + canGreenThumbWheat = permInstance.greenThumbWheat(player); + canGreenThumbBlocks = permInstance.greenThumbBlocks(player); + canFarmersDiet = permInstance.farmersDiet(player); + canDoubleDrop = permInstance.herbalismDoubleDrops(player); + } } diff --git a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java index 7fe6a9902..e8973f634 100644 --- a/src/main/java/com/gmail/nossr50/listeners/EntityListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/EntityListener.java @@ -222,6 +222,10 @@ public class EntityListener implements Listener { int currentFoodLevel = player.getFoodLevel(); int newFoodLevel = event.getFoodLevel(); + if (!Permissions.getInstance().farmersDiet(player)) { + return; + } + /* * Some foods have 3 ranks * Some foods have 5 ranks diff --git a/src/main/java/com/gmail/nossr50/util/Permissions.java b/src/main/java/com/gmail/nossr50/util/Permissions.java index ec29dcf82..3e23b15be 100644 --- a/src/main/java/com/gmail/nossr50/util/Permissions.java +++ b/src/main/java/com/gmail/nossr50/util/Permissions.java @@ -35,6 +35,7 @@ public class Permissions { public boolean hardcoremodeBypass(Player player) { return player.hasPermission("mcmmo.bypass.hardcoremode"); } + public boolean arcaneBypass(Player player) { return player.hasPermission("mcmmo.bypass.arcanebypass"); } @@ -251,6 +252,10 @@ public class Permissions { return player.hasPermission("mcmmo.ability.herbalism.greenthumbwheat"); } + public boolean farmersDiet(Player player) { + return player.hasPermission("mcmmo.ability.herbalism.farmersdiet"); + } + /* * MCMMO.ABILITY.EXCAVATION.* */ diff --git a/src/main/resources/locale/locale_en_US.properties b/src/main/resources/locale/locale_en_US.properties index cc0c2150b..beb7f6057 100644 --- a/src/main/resources/locale/locale_en_US.properties +++ b/src/main/resources/locale/locale_en_US.properties @@ -117,10 +117,10 @@ Fishing.SkillName=FISHING Fishing.Skillup=[[YELLOW]]Fishing skill increased by {0}. Total ({1}) #HERBALISM -Herbalism.Ability.DoubleDropChance=[[RED]]Double Drop Chance: [[YELLOW]]{0}% +Herbalism.Ability.DoubleDropChance=[[RED]]Double Drop Chance: [[YELLOW]]{0} Herbalism.Ability.FD=[[RED]]Farmers Diet: [[YELLOW]]Rank {0} Herbalism.Ability.GTe.Length=[[RED]]Green Terra Length: [[YELLOW]]{0}s -Herbalism.Ability.GTh.Chance=[[RED]]Green Thumb Chance: [[YELLOW]]{0}% +Herbalism.Ability.GTh.Chance=[[RED]]Green Thumb Chance: [[YELLOW]]{0} Herbalism.Ability.GTh.Fail=[[RED]]**GREEN THUMB FAIL** Herbalism.Ability.GTh.Stage=[[RED]]Green Thumb Stage: [[YELLOW]] Wheat grows in stage {0} Herbalism.Ability.GTh=[[GREEN]]**GREEN THUMB** @@ -130,8 +130,8 @@ Herbalism.Effect.0=Green Terra (ABILITY) Herbalism.Effect.1=Spread the Terra, 3x Drops Herbalism.Effect.2=Green Thumb (Wheat) Herbalism.Effect.3=Auto-Plants wheat when harvesting -Herbalism.Effect.4=Green Thumb (Cobble/Stone Brick) -Herbalism.Effect.5=Cobblestone/Stone Brick -> Mossy w/ Seeds +Herbalism.Effect.4=Green Thumb (Cobble/Stone Brick/Dirt) +Herbalism.Effect.5=Make bricks mossy, or make grass grow Herbalism.Effect.6=Farmer's Diet Herbalism.Effect.7=Improves hunger restored from farmed foods Herbalism.Effect.8=Double Drops (All Herbs) diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 634330f9f..a2b3b4b95 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -318,6 +318,7 @@ permissions: mcmmo.ability.herbalism.greenterra: true mcmmo.ability.herbalism.greenthumbblocks: true mcmmo.ability.herbalism.greenthumbwheat: true + mcmmo.ability.herbalism.foodbonus: true mcmmo.ability.herbalism.doubledrops: description: Allows double drop chance from Herbalism mcmmo.ability.herbalism.greenterra: @@ -326,6 +327,8 @@ permissions: description: Allows access to the Green Thumb ability for blocks mcmmo.ability.herbalism.greenthumbwheat: description: Allows access to the Green Thumb ability for wheat + mcmmo.ability.herbalism.farmersdiet: + description: Allows access to the Farmer's Diet ability mcmmo.ability.excavation.*: description: Allows access to all Excavation abilities children: