mirror of
https://github.com/mcMMO-Dev/mcMMO.git
synced 2025-06-25 10:14:43 +02:00
Added new Hylian Luck skill to Herbalism.
This commit is contained in:
@ -19,6 +19,8 @@ public class HerbalismCommand extends SkillCommand {
|
||||
private String farmersDietRank;
|
||||
private String doubleDropChance;
|
||||
private String doubleDropChanceLucky;
|
||||
private String hylianLuckChance;
|
||||
private String hylianLuckChanceLucky;
|
||||
|
||||
private int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
|
||||
private int farmersDietRankChange = advancedConfig.getFarmerDietRankChange();
|
||||
@ -30,6 +32,7 @@ public class HerbalismCommand extends SkillCommand {
|
||||
private double doubleDropsMaxBonus = advancedConfig.getHerbalismDoubleDropsChanceMax();
|
||||
private int doubleDropsMaxLevel = advancedConfig.getHerbalismDoubleDropsMaxLevel();
|
||||
|
||||
private boolean hasHylianLuck;
|
||||
private boolean canGreenTerra;
|
||||
private boolean canGreenThumbWheat;
|
||||
private boolean canGreenThumbBlocks;
|
||||
@ -47,6 +50,7 @@ public class HerbalismCommand extends SkillCommand {
|
||||
protected void dataCalculations() {
|
||||
float greenThumbChanceF;
|
||||
float doubleDropChanceF;
|
||||
float hylianLuckChanceF;
|
||||
|
||||
int length = 2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel);
|
||||
greenTerraLength = String.valueOf(length);
|
||||
@ -83,12 +87,18 @@ public class HerbalismCommand extends SkillCommand {
|
||||
doubleDropChance = percent.format(doubleDropChanceF / 100D);
|
||||
if (doubleDropChanceF * 1.3333D >= 100D) doubleDropChanceLucky = percent.format(1D);
|
||||
else doubleDropChanceLucky = percent.format(doubleDropChanceF * 1.3333D / 100D);
|
||||
//HYLIAN LUCK
|
||||
hylianLuckChanceF = (skillValue / 100);
|
||||
hylianLuckChance = percent.format(hylianLuckChanceF / 100D);
|
||||
if (hylianLuckChanceF * 1.3333D >= 100D) hylianLuckChanceLucky = percent.format(1D);
|
||||
else hylianLuckChanceLucky = percent.format(hylianLuckChanceF * 1.3333D / 100D);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void permissionsCheck() {
|
||||
Config configInstance = Config.getInstance();
|
||||
|
||||
hasHylianLuck = Permissions.hylianLuck(player);
|
||||
canGreenTerra = Permissions.greenTerra(player);
|
||||
canGreenThumbWheat = Permissions.greenThumbWheat(player);
|
||||
canGreenThumbBlocks = Permissions.greenThumbBlocks(player);
|
||||
@ -127,6 +137,10 @@ public class HerbalismCommand extends SkillCommand {
|
||||
player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.6"), LocaleLoader.getString("Herbalism.Effect.7") }));
|
||||
}
|
||||
|
||||
if (hasHylianLuck) {
|
||||
player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.10"), LocaleLoader.getString("Herbalism.Effect.11") }));
|
||||
}
|
||||
|
||||
if (canDoubleDrop && !doubleDropsDisabled) {
|
||||
player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Herbalism.Effect.8"), LocaleLoader.getString("Herbalism.Effect.9") }));
|
||||
}
|
||||
@ -161,6 +175,12 @@ public class HerbalismCommand extends SkillCommand {
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.FD", new Object[] { farmersDietRank } ));
|
||||
}
|
||||
|
||||
if (hasHylianLuck) {
|
||||
if (lucky)
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", new Object[] { hylianLuckChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { hylianLuckChanceLucky }));
|
||||
else
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.HylianLuck", new Object[] { hylianLuckChance }));
|
||||
}
|
||||
if (canDoubleDrop && !doubleDropsDisabled) {
|
||||
if (lucky)
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.DoubleDropChance", new Object[] { doubleDropChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { doubleDropChanceLucky }));
|
||||
|
@ -203,6 +203,10 @@ public class BlockListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
if (Permissions.hylianLuck(player) && ItemChecks.isSword(player.getItemInHand())) {
|
||||
Herbalism.hylianLuck(block, player, event);
|
||||
}
|
||||
|
||||
//Remove metadata when broken
|
||||
if (BlockChecks.shouldBeWatched(block)) {
|
||||
mcMMO.placeStore.setFalse(block);
|
||||
|
@ -9,7 +9,6 @@ import java.util.List;
|
||||
import net.shatteredlands.shatt.backup.ZipLibrary;
|
||||
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.PluginDescriptionFile;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
|
@ -538,4 +538,80 @@ public class Herbalism {
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.Ability.GTh.Fail"));
|
||||
}
|
||||
}
|
||||
|
||||
public static void hylianLuck(Block block, Player player, BlockBreakEvent event) {
|
||||
int chance = Users.getProfile(player).getSkillLevel(SkillType.HERBALISM) / 100;
|
||||
|
||||
int randomChance = 100;
|
||||
if (Permissions.luckyHerbalism(player)) {
|
||||
randomChance = 75;
|
||||
}
|
||||
|
||||
if (chance > Misc.getRandom().nextInt(randomChance)) {
|
||||
Location location = block.getLocation();
|
||||
int dropNumber = Misc.getRandom().nextInt(3);
|
||||
ItemStack item = null;
|
||||
|
||||
switch (block.getType()) {
|
||||
case DEAD_BUSH:
|
||||
case LONG_GRASS:
|
||||
case SAPLING:
|
||||
if (dropNumber == 0) {
|
||||
item = new ItemStack(Material.MELON_SEEDS);
|
||||
}
|
||||
else if (dropNumber == 1) {
|
||||
item = new ItemStack(Material.PUMPKIN_SEEDS);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
item = (new MaterialData(Material.INK_SACK, DyeColor.BROWN.getDyeData())).toItemStack(1);
|
||||
}
|
||||
catch (Exception e) {
|
||||
item = (new MaterialData(Material.INK_SACK, (byte) 0x3)).toItemStack(1);
|
||||
}
|
||||
catch (NoSuchMethodError e) {
|
||||
item = (new MaterialData(Material.INK_SACK, (byte) 0x3)).toItemStack(1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case RED_ROSE:
|
||||
case YELLOW_FLOWER:
|
||||
if (dropNumber == 0) {
|
||||
item = new ItemStack(Material.POTATO);
|
||||
}
|
||||
else if (dropNumber == 1) {
|
||||
item = new ItemStack(Material.CARROT);
|
||||
}
|
||||
else {
|
||||
item = new ItemStack(Material.APPLE);
|
||||
}
|
||||
break;
|
||||
|
||||
case FLOWER_POT:
|
||||
if (dropNumber == 0) {
|
||||
item = new ItemStack(Material.EMERALD);
|
||||
}
|
||||
else if (dropNumber == 1) {
|
||||
item = new ItemStack(Material.DIAMOND);
|
||||
}
|
||||
else {
|
||||
item = new ItemStack(Material.GOLD_NUGGET);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (item == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
event.getBlock().setType(Material.AIR);
|
||||
Misc.dropItem(location, item);
|
||||
player.sendMessage(LocaleLoader.getString("Herbalism.HylianLuck"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -408,6 +408,10 @@ public class Permissions {
|
||||
return hasPermission(player, "mcmmo.ability.herbalism.farmersdiet");
|
||||
}
|
||||
|
||||
public static boolean hylianLuck(Player player) {
|
||||
return hasPermission(player, "mcmmo.ability.herbalism.hylianluck");
|
||||
}
|
||||
|
||||
/*
|
||||
* MCMMO.ABILITY.EXCAVATION.*
|
||||
*/
|
||||
|
Reference in New Issue
Block a user