diff --git a/Changelog.txt b/Changelog.txt index cb6e902b8..6947f1b8e 100644 --- a/Changelog.txt +++ b/Changelog.txt @@ -15,6 +15,8 @@ Version 1.3.07 + Added permission nodes for Treasure & Magic Hunter for Fishing = Fixed bug where the permission node for Impact didn't work = Fixed some bypass nodes defaulting true for Ops + ! Changed Mining to ignore blocks when the pick is enchanted with Silk Touch + ! Changed Super Breaker to be non-functional when used with a Silk Touch enchanted pick ! Changed MySQL to save player information 50ms apart from each other to reduce the load on the MySQL server - Removed some unused permission nodes diff --git a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java index d54d98072..259380989 100644 --- a/src/main/java/com/gmail/nossr50/listeners/BlockListener.java +++ b/src/main/java/com/gmail/nossr50/listeners/BlockListener.java @@ -26,6 +26,7 @@ import org.bukkit.CropState; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; +import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -61,7 +62,7 @@ public class BlockListener implements Listener { if (b.hasMetadata("mcmmoPlacedBlock")) { b.getRelative(direction).setMetadata("mcmmoNeedsTracking", new FixedMetadataValue(plugin, true)); b.removeMetadata("mcmmoPlacedBlock", plugin); - } + } } for (Block b : blocks) { @@ -277,13 +278,15 @@ public class BlockListener implements Listener { } } else if (PP.getAbilityMode(AbilityType.SUPER_BREAKER) && Skills.triggerCheck(player, block, AbilityType.SUPER_BREAKER)) { - if (Config.getInstance().getMiningRequiresTool() && ItemChecks.isMiningPick(inhand)) { - event.setInstaBreak(true); - Mining.SuperBreakerBlockCheck(player, block); - } - else if (!Config.getInstance().getMiningRequiresTool()) { - event.setInstaBreak(true); - Mining.SuperBreakerBlockCheck(player, block); + if(!player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) { + if (Config.getInstance().getMiningRequiresTool() && ItemChecks.isMiningPick(inhand)) { + event.setInstaBreak(true); + Mining.SuperBreakerBlockCheck(player, block); + } + else if (!Config.getInstance().getMiningRequiresTool()) { + event.setInstaBreak(true); + Mining.SuperBreakerBlockCheck(player, block); + } } } else if (PP.getSkillLevel(SkillType.WOODCUTTING) >= LEAF_BLOWER_LEVEL && mat.equals(Material.LEAVES)) { diff --git a/src/main/java/com/gmail/nossr50/skills/Mining.java b/src/main/java/com/gmail/nossr50/skills/Mining.java index 08b81fbab..52c73a9ba 100644 --- a/src/main/java/com/gmail/nossr50/skills/Mining.java +++ b/src/main/java/com/gmail/nossr50/skills/Mining.java @@ -156,7 +156,7 @@ public class Mining { * @param block The block being broken */ public static void miningBlockCheck(Player player, Block block) { - if (block.hasMetadata("mcmmoPlacedBlock")) { + if (block.hasMetadata("mcmmoPlacedBlock") || player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) { return; } @@ -168,12 +168,7 @@ public class Mining { int skillLevel = Users.getProfile(player).getSkillLevel(SkillType.MINING); if ((skillLevel > MAX_BONUS_LEVEL || random.nextInt(1000) <= skillLevel) && Permissions.getInstance().miningDoubleDrops(player)) { - if (player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) { - Misc.mcDropItem(block.getLocation(), new ItemStack(block.getType())); - } - else { - miningDrops(block); - } + miningDrops(block); } } }