Fishing refactoring, fixed bad enchant distribution

This commit is contained in:
bm01
2013-01-30 00:12:55 +01:00
parent c04b14c751
commit 48b0050451
8 changed files with 439 additions and 495 deletions

View File

@ -9,7 +9,6 @@ import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.inventory.ItemStack;
import com.gmail.nossr50.mcMMO;
@ -22,22 +21,23 @@ import com.gmail.nossr50.skills.woodcutting.Woodcutting.ExperienceGainMethod;
import com.gmail.nossr50.util.BlockChecks;
import com.gmail.nossr50.util.Misc;
import com.gmail.nossr50.util.ModChecks;
import com.gmail.nossr50.util.Permissions;
import com.gmail.nossr50.util.Users;
public abstract class TreeFeller {
public final class TreeFeller {
private static boolean treeFellerReachedThreshold = false;
private TreeFeller() {}
/**
* Begins Tree Feller
*
* @param event Event to process
* @param player Player using Tree Feller
* @param block Block being broken
*/
public static void process(BlockBreakEvent event) {
public static void process(Player player, Block block) {
List<Block> treeFellerBlocks = new ArrayList<Block>();
Player player = event.getPlayer();
processRecursively(event.getBlock(), treeFellerBlocks);
processRecursively(block, treeFellerBlocks);
// If the player is trying to break to many block
if (treeFellerReachedThreshold) {
@ -66,7 +66,7 @@ public abstract class TreeFeller {
/**
* Processes Tree Feller
*
* @param block Point of origin of the layer
* @param block Block being checked
* @param treeFellerBlocks List of blocks to be removed
*/
private static void processRecursively(Block block, List<Block> treeFellerBlocks) {
@ -176,7 +176,7 @@ public abstract class TreeFeller {
switch (block.getType()) {
case LOG:
Woodcutting.checkDoubleDrop(player, block);
Woodcutting.checkForDoubleDrop(player, block);
try {
xp += Woodcutting.getExperienceFromLog(block, ExperienceGainMethod.TREE_FELLER);
@ -192,7 +192,7 @@ public abstract class TreeFeller {
break;
default:
if (ModChecks.isCustomLogBlock(block)) {
Woodcutting.checkDoubleDrop(player, block);
Woodcutting.checkForDoubleDrop(player, block);
CustomBlock customBlock = ModChecks.getCustomBlock(block);
xp = customBlock.getXpGain();
@ -220,9 +220,6 @@ public abstract class TreeFeller {
block.setType(Material.AIR);
}
// Do we really have to check the permission here?
if (Permissions.woodcutting(player)) {
SkillTools.xpProcessing(player, Users.getProfile(player), SkillType.WOODCUTTING, xp);
}
SkillTools.xpProcessing(player, Users.getProfile(player), SkillType.WOODCUTTING, xp);
}
}

View File

@ -42,7 +42,7 @@ public final class Woodcutting {
* @param event Event to process
*/
public static void beginTreeFeller(BlockBreakEvent event) {
TreeFeller.process(event);
TreeFeller.process(event.getPlayer(), event.getBlock());
}
/**
@ -78,7 +78,10 @@ public final class Woodcutting {
}
}
checkDoubleDrop(player, block);
if (Permissions.woodcuttingDoubleDrops(player)) {
checkForDoubleDrop(player, block);
}
SkillTools.xpProcessing(player, Users.getProfile(player), SkillType.WOODCUTTING, xp);
}
@ -126,11 +129,7 @@ public final class Woodcutting {
* @param player Player breaking the block
* @param block Block being broken
*/
protected static void checkDoubleDrop(Player player, Block block) {
if (!Permissions.woodcuttingDoubleDrops(player)) {
return;
}
protected static void checkForDoubleDrop(Player player, Block block) {
int chance = (int) ((DOUBLE_DROP_CHANCE / DOUBLE_DROP_MAX_LEVEL) * Users.getProfile(player).getSkillLevel(SkillType.WOODCUTTING));
int activationChance = Misc.calculateActivationChance(Permissions.luckyWoodcutting(player));