Added "Shroom Thumb" ability to Herbalism. Closes #724

This commit is contained in:
GJ 2013-02-25 09:58:25 -05:00
parent 3bd9a30055
commit 2373ca82ba
10 changed files with 124 additions and 2 deletions

View File

@ -39,6 +39,7 @@ Version 1.4.00-dev
+ Added ability for config files to automatically update with new keys, and prune out old ones + Added ability for config files to automatically update with new keys, and prune out old ones
+ Added config option to make .new config files instead over writing over old ones when updating + Added config option to make .new config files instead over writing over old ones when updating
+ Added "Holy Hound" ability to Taming + Added "Holy Hound" ability to Taming
+ Added "Shroom Thumb" ability to Herbalism
= Fixed Green Thumb on wheat not working properly at rank 4 = Fixed Green Thumb on wheat not working properly at rank 4
= Fixed Green Thumb and Green Terra consuming twice the amount of seed needed = Fixed Green Thumb and Green Terra consuming twice the amount of seed needed
= Fixed Green Terra not also checking Green Thumb permissions = Fixed Green Terra not also checking Green Thumb permissions

View File

@ -111,6 +111,9 @@ public class AdvancedConfig extends AutoUpdateConfigLoader {
public double getHylianLuckChanceMax() { return config.getDouble("Skills.Herbalism.HylianLuck_ChanceMax", 10.0D); } public double getHylianLuckChanceMax() { return config.getDouble("Skills.Herbalism.HylianLuck_ChanceMax", 10.0D); }
public int getHylianLuckMaxLevel() { return config.getInt("Skills.Herbalism.HylianLuck_MaxBonusLevel", 1000); } public int getHylianLuckMaxLevel() { return config.getInt("Skills.Herbalism.HylianLuck_MaxBonusLevel", 1000); }
public double getShroomThumbChanceMax() { return config.getDouble("Skills.Herbalism.ShroomThumb_ChanceMax", 50.0D); }
public int getShroomThumbMaxLevel() { return config.getInt("Skills.Herbalism.ShroomThumb_MaxBonusLevel", 1500); }
/* MINING */ /* MINING */
public double getMiningDoubleDropChance() { return config.getDouble("Skills.Mining.DoubleDrops_ChanceMax", 100.0D); } public double getMiningDoubleDropChance() { return config.getDouble("Skills.Mining.DoubleDrops_ChanceMax", 100.0D); }
public int getMiningDoubleDropMaxLevel() { return config.getInt("Skills.Mining.DoubleDrops_MaxBonusLevel", 1000); } public int getMiningDoubleDropMaxLevel() { return config.getInt("Skills.Mining.DoubleDrops_MaxBonusLevel", 1000); }

View File

@ -363,6 +363,12 @@ public class PlayerListener implements Listener {
} }
} }
/* SHROOM THUMB CHECK */
else if (BlockChecks.canMakeShroomy(blockState)) {
if (Herbalism.processGreenThumbBlocks(blockState, player) && SkillTools.blockBreakSimulate(block, player, false)) {
blockState.update(true);
}
}
break; break;
case RIGHT_CLICK_AIR: case RIGHT_CLICK_AIR:

View File

@ -27,6 +27,7 @@ import com.gmail.nossr50.skills.utilities.SkillTools;
import com.gmail.nossr50.skills.utilities.SkillType; import com.gmail.nossr50.skills.utilities.SkillType;
import com.gmail.nossr50.util.Misc; import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.Permissions; import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.StringUtils;
import com.gmail.nossr50.util.Users; import com.gmail.nossr50.util.Users;
public class Herbalism { public class Herbalism {
@ -46,6 +47,9 @@ public class Herbalism {
public static double hylianLuckMaxChance = AdvancedConfig.getInstance().getHylianLuckChanceMax(); public static double hylianLuckMaxChance = AdvancedConfig.getInstance().getHylianLuckChanceMax();
public static int hylianLuckMaxLevel = AdvancedConfig.getInstance().getHylianLuckMaxLevel(); public static int hylianLuckMaxLevel = AdvancedConfig.getInstance().getHylianLuckMaxLevel();
public static double shroomThumbMaxChance = AdvancedConfig.getInstance().getShroomThumbChanceMax();
public static int shroomThumbMaxLevel = AdvancedConfig.getInstance().getShroomThumbMaxLevel();
/** /**
* Handle the farmers diet skill. * Handle the farmers diet skill.
* *
@ -314,4 +318,59 @@ public class Herbalism {
player.sendMessage(LocaleLoader.getString("Herbalism.HylianLuck")); player.sendMessage(LocaleLoader.getString("Herbalism.HylianLuck"));
return true; return true;
} }
/**
* Process the Shroom Thumb ability.
*
* @param blockState The {@link BlockState} to check ability activation for
* @param player The {@link Player} using this ability
* @return true if the ability was successful, false otherwise
*/
public static boolean processShroomThumb(BlockState blockState, Player player) {
PlayerInventory playerInventory = player.getInventory();
if (!playerInventory.contains(Material.BROWN_MUSHROOM)) {
player.sendMessage(LocaleLoader.getString("Skills.NeedMore", StringUtils.getPrettyItemString(Material.BROWN_MUSHROOM)));
return false;
}
if (!playerInventory.contains(Material.RED_MUSHROOM)) {
player.sendMessage(LocaleLoader.getString("Skills.NeedMore", StringUtils.getPrettyItemString(Material.RED_MUSHROOM)));
return false;
}
playerInventory.removeItem(new ItemStack(Material.BROWN_MUSHROOM));
playerInventory.removeItem(new ItemStack(Material.RED_MUSHROOM));
player.updateInventory();
if (!SkillTools.activationSuccessful(player, SkillType.HERBALISM, shroomThumbMaxChance, shroomThumbMaxLevel)) {
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.ShroomThumb.Fail"));
return false;
}
return convertShroomThumb(blockState, player);
}
/**
* Convert blocks affected by the Green Thumb & Green Terra abilities.
*
* @param blockState The {@link BlockState} to check ability activation for
* @param player The {@link Player} using this ability
* @return true if the ability was successful, false otherwise
*/
private static boolean convertShroomThumb(BlockState blockState, Player player) {
if (!Permissions.shroomThumb(player)) {
return false;
}
switch (blockState.getType()){
case DIRT:
case GRASS:
blockState.setType(Material.MYCEL);
return true;
default:
return false;
}
}
} }

View File

@ -18,6 +18,8 @@ public class HerbalismCommand extends SkillCommand {
private String doubleDropChanceLucky; private String doubleDropChanceLucky;
private String hylianLuckChance; private String hylianLuckChance;
private String hylianLuckChanceLucky; private String hylianLuckChanceLucky;
private String shroomThumbChance;
private String shroomThumbChanceLucky;
private boolean hasHylianLuck; private boolean hasHylianLuck;
private boolean canGreenTerra; private boolean canGreenTerra;
@ -25,6 +27,7 @@ public class HerbalismCommand extends SkillCommand {
private boolean canGreenThumbBlocks; private boolean canGreenThumbBlocks;
private boolean canFarmersDiet; private boolean canFarmersDiet;
private boolean canDoubleDrop; private boolean canDoubleDrop;
private boolean canShroomThumb;
private boolean doubleDropsDisabled; private boolean doubleDropsDisabled;
public HerbalismCommand() { public HerbalismCommand() {
@ -57,6 +60,11 @@ public class HerbalismCommand extends SkillCommand {
String[] hylianLuckStrings = calculateAbilityDisplayValues(Herbalism.hylianLuckMaxLevel, Herbalism.hylianLuckMaxChance); String[] hylianLuckStrings = calculateAbilityDisplayValues(Herbalism.hylianLuckMaxLevel, Herbalism.hylianLuckMaxChance);
hylianLuckChance = hylianLuckStrings[0]; hylianLuckChance = hylianLuckStrings[0];
hylianLuckChanceLucky = hylianLuckStrings[1]; hylianLuckChanceLucky = hylianLuckStrings[1];
//SHROOM THUMB
String[] shroomThumbStrings = calculateAbilityDisplayValues(Herbalism.shroomThumbMaxLevel, Herbalism.shroomThumbMaxChance);
shroomThumbChance = shroomThumbStrings[0];
shroomThumbChanceLucky = shroomThumbStrings[1];
} }
@Override @Override
@ -68,11 +76,12 @@ public class HerbalismCommand extends SkillCommand {
canFarmersDiet = Permissions.farmersDiet(player); canFarmersDiet = Permissions.farmersDiet(player);
canDoubleDrop = Permissions.doubleDrops(player, skill); canDoubleDrop = Permissions.doubleDrops(player, skill);
doubleDropsDisabled = skill.getDoubleDropsDisabled(); doubleDropsDisabled = skill.getDoubleDropsDisabled();
canShroomThumb = Permissions.shroomThumb(player);
} }
@Override @Override
protected boolean effectsHeaderPermissions() { protected boolean effectsHeaderPermissions() {
return canGreenTerra || (canDoubleDrop && !doubleDropsDisabled) || canFarmersDiet || canGreenThumbBlocks || canGreenThumbWheat; return canGreenTerra || (canDoubleDrop && !doubleDropsDisabled) || canFarmersDiet || canGreenThumbBlocks || canGreenThumbWheat || canShroomThumb;
} }
@Override @Override
@ -99,6 +108,10 @@ public class HerbalismCommand extends SkillCommand {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.10"), LocaleLoader.getString("Herbalism.Effect.11"))); player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.10"), LocaleLoader.getString("Herbalism.Effect.11")));
} }
if (canShroomThumb) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.12"), LocaleLoader.getString("Herbalism.Effect.13")));
}
if (canDoubleDrop && !doubleDropsDisabled) { if (canDoubleDrop && !doubleDropsDisabled) {
player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.8"), LocaleLoader.getString("Herbalism.Effect.9"))); player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Herbalism.Effect.8"), LocaleLoader.getString("Herbalism.Effect.9")));
} }
@ -106,7 +119,7 @@ public class HerbalismCommand extends SkillCommand {
@Override @Override
protected boolean statsHeaderPermissions() { protected boolean statsHeaderPermissions() {
return canGreenTerra || (canDoubleDrop && !doubleDropsDisabled) || canFarmersDiet || canGreenThumbBlocks || canGreenThumbWheat; return canGreenTerra || (canDoubleDrop && !doubleDropsDisabled) || canFarmersDiet || canGreenThumbBlocks || canGreenThumbWheat || canShroomThumb;
} }
@Override @Override
@ -145,6 +158,16 @@ public class HerbalismCommand extends SkillCommand {
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", hylianLuckChance)); player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", hylianLuckChance));
} }
} }
if (canShroomThumb) {
if (isLucky) {
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.ShroomThumb.Chance", shroomThumbChance) + LocaleLoader.getString("Perks.lucky.bonus", shroomThumbChanceLucky));
}
else {
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.ShroomThumb.Chance", shroomThumbChance));
}
}
if (canDoubleDrop && !doubleDropsDisabled) { if (canDoubleDrop && !doubleDropsDisabled) {
if (isLucky) { if (isLucky) {
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", doubleDropChance) + LocaleLoader.getString("Perks.lucky.bonus", doubleDropChanceLucky)); player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", doubleDropChance) + LocaleLoader.getString("Perks.lucky.bonus", doubleDropChanceLucky));

View File

@ -345,4 +345,21 @@ public final class BlockChecks {
return false; return false;
} }
} }
/**
* Determine if a given block can be made into Mycelium
*
* @param blockState The {@link BlockState} of the block to check
* @return true if the block can be made in Mycelium, false otherwise
*/
public static boolean canMakeShroomy(BlockState blockState) {
switch (blockState.getType()) {
case DIRT:
case GRASS:
return true;
default:
return false;
}
}
} }

View File

@ -146,6 +146,7 @@ public final class Permissions {
public static boolean greenThumbBlock(Permissible permissible, Material material) { return permissible.hasPermission("mcmmo.ability.herbalism.greenthumb.blocks." + material.toString().replace("_", "").toLowerCase()); } public static boolean greenThumbBlock(Permissible permissible, Material material) { return permissible.hasPermission("mcmmo.ability.herbalism.greenthumb.blocks." + material.toString().replace("_", "").toLowerCase()); }
public static boolean greenThumbPlant(Permissible permissible, Material material) { return permissible.hasPermission("mcmmo.ability.herbalism.greenthumb.plants." + material.toString().replace("_", "").toLowerCase()); } public static boolean greenThumbPlant(Permissible permissible, Material material) { return permissible.hasPermission("mcmmo.ability.herbalism.greenthumb.plants." + material.toString().replace("_", "").toLowerCase()); }
public static boolean hylianLuck(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.herbalism.hylianluck"); } public static boolean hylianLuck(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.herbalism.hylianluck"); }
public static boolean shroomThumb(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.herbalism.shroomthumb"); }
/* MINING */ /* MINING */
public static boolean biggerBombs(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.mining.blastmining.biggerbombs"); } public static boolean biggerBombs(Permissible permissible) { return permissible.hasPermission("mcmmo.ability.mining.blastmining.biggerbombs"); }

View File

@ -156,6 +156,11 @@ Skills:
# HylianLuck_MaxBonusLevel: On this level, Hylian Luck chance will be HylianLuck_ChanceMax # HylianLuck_MaxBonusLevel: On this level, Hylian Luck chance will be HylianLuck_ChanceMax
HylianLuck_ChanceMax: 10.0 HylianLuck_ChanceMax: 10.0
HylianLuck_MaxBonusLevel: 1000 HylianLuck_MaxBonusLevel: 1000
# ShroomThumb_ChanceMax: Maximum chance of ShroomThumb
# ShroomThumb_MaxBonusLevel: On this level, ShroomThumb chance will be ShroomThumb_ChanceMax
ShroomThumb_ChanceMax: 50.0
ShroomThumb_MaxBonusLevel: 1500
# #
# Settings for Mining # Settings for Mining
### ###

View File

@ -131,6 +131,8 @@ Herbalism.Ability.GTh=[[GREEN]]**GREEN THUMB**
Herbalism.Ability.HylianLuck=[[RED]]Hylian Luck Chance: [[YELLOW]]{0} Herbalism.Ability.HylianLuck=[[RED]]Hylian Luck Chance: [[YELLOW]]{0}
Herbalism.Ability.Lower=[[GRAY]]**YOU LOWER YOUR HOE** Herbalism.Ability.Lower=[[GRAY]]**YOU LOWER YOUR HOE**
Herbalism.Ability.Ready=[[GREEN]]**YOU READY YOUR HOE** Herbalism.Ability.Ready=[[GREEN]]**YOU READY YOUR HOE**
Herbalism.Ability.ShroomThumb.Chance=[[RED]]Shroom Thumb Chance: [[YELLOW]]{0}
Herbalism.Ability.ShroomThumb.Fail=[[RED]]**SHROOM THUMB FAIL**
Herbalism.Effect.0=Green Terra (ABILITY) Herbalism.Effect.0=Green Terra (ABILITY)
Herbalism.Effect.1=Spread the Terra, 3x Drops Herbalism.Effect.1=Spread the Terra, 3x Drops
Herbalism.Effect.2=Green Thumb (Wheat) Herbalism.Effect.2=Green Thumb (Wheat)
@ -143,6 +145,8 @@ Herbalism.Effect.8=Double Drops (All Herbs)
Herbalism.Effect.9=Double the normal loot Herbalism.Effect.9=Double the normal loot
Herbalism.Effect.10=Hylian Luck Herbalism.Effect.10=Hylian Luck
Herbalism.Effect.11=Gives a small chance of finding rare items Herbalism.Effect.11=Gives a small chance of finding rare items
Herbalism.Effect.12=Shroom Thumb
Herbalism.Effect.13=Spread mycelium to dirt & grass
Herbalism.HylianLuck=[[GREEN]]The luck of Hyrule is with you today! Herbalism.HylianLuck=[[GREEN]]The luck of Hyrule is with you today!
Herbalism.Listener=Herbalism: Herbalism.Listener=Herbalism:
Herbalism.SkillName=HERBALISM Herbalism.SkillName=HERBALISM

View File

@ -277,6 +277,7 @@ permissions:
mcmmo.ability.herbalism.greenterra: true mcmmo.ability.herbalism.greenterra: true
mcmmo.ability.herbalism.greenthumb.all: true mcmmo.ability.herbalism.greenthumb.all: true
mcmmo.ability.herbalism.hylianluck: true mcmmo.ability.herbalism.hylianluck: true
mcmmo.ability.herbalism.shroomthumb: true
mcmmo.ability.herbalism.doubledrops: mcmmo.ability.herbalism.doubledrops:
description: Allows double drop chance from Herbalism description: Allows double drop chance from Herbalism
mcmmo.ability.herbalism.farmersdiet: mcmmo.ability.herbalism.farmersdiet:
@ -368,6 +369,8 @@ permissions:
mcmmo.ability.herbalism.greenthumb.plants.crops: true mcmmo.ability.herbalism.greenthumb.plants.crops: true
mcmmo.ability.herbalism.hylianluck: mcmmo.ability.herbalism.hylianluck:
description: Allows access to the Hylian Luck ability description: Allows access to the Hylian Luck ability
mcmmo.ability.herbalism.shroomthumb:
description: Allows access to the Shroom Thumb ability
mcmmo.ability.mining.*: mcmmo.ability.mining.*:
default: false default: false
description: Allows access to all Mining abilities description: Allows access to all Mining abilities